PhoneGap API中文幫助文檔——Media(媒體) – iPhone手機開發技術文章 iPhone軟體開發教學課程

Media對象提供錄制和回放設備上的音頻文件的能力。
var media = new Media(src, mediaSuccess, [mediaError]);
復制代碼
備註:Media的當前實現並沒有遵守W3C媒體捕獲的相關規范,目前隻是為瞭提供方便。未來的實現將遵守最新的W3C規范並可能不再支持當前的APIs。

參數:
src:一個包含音頻內容的URI。(DOMString類型)
mediaSuccess:(可選項)當一個Media對象完成當前的播放、錄制或停止操作時觸發的回調函數。(函數類型)
mediaError:(可選項)當出現錯誤時調用的回調函數。(函數類型)
mediaStatus:(可選項)當狀態發生變化的時候調用的回調函數。(函數類型)

方法:
media.getCurrentPosition:返回一個音頻文件的當前位置。
media.getDuration:返回一個音頻文件的總時長。
media.play:開始或恢復播放音頻文件。
media.pause:暫停播放音頻文件。
media.release:釋放底層操作系統的音頻資源。
media.seekTo:在音頻文件中移動到相應的位置。
media.startRecord:開始錄制音頻文件。
media.stopRecord:停止錄制音頻文件。
media.stop:停止播放音頻文件。

另外的隻讀屬性:
_position:以秒為單位的音頻播放位置,播放過程中不會自動更新,通過調用getCurrentPosition進行更新。
_duration:以秒為單位的媒體時長。

支持的平臺:
Android
iOS

media.getCurrentPosition

返回返回一個音頻文件的當前的位置。

media.getCurrentPosition(mediaSuccess, [mediaError]); 
復制代碼
參數:
mediaSuccess:成功的回調函數,返回當前的位置。
mediaError:(可選項)如果發生錯誤時調用的回調函數。

說明:media.getCurrentPosition是一個異步函數,用戶返回一個Media對象所指向的音頻文件的當前位置,同時會對Media對象的_position參數進行更新。

支持的平臺:
Android
iOS

簡單的范例:
    // 音頻播放器 

    var my_media = new Media(src, onSuccess, onError); 

     

    // 每秒更新一次媒體播放到的位置 

    var mediaTimer = setInterval(function() { 

        // 獲得媒體位置 

        my_media.getCurrentPosition( 

            // 獲得成功後調用的回調函數 

            function(position) { 

                if (position > -1) { 

                    console.log((position/1000) + " sec"); 

                } 

            }, 

            // 發生錯誤後調用的回調函數 

            function(e) { 

                console.log("Error getting pos=" + e); 

            } 

        ); 

    }, 1000); 
復制代碼
完整的范例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd"> 

<html> 

<head>     

<title>Media Example</title> 

 

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 

<script type="text/javascript" charset="utf-8"> 

 

// 等待加載PhoneGap 

document.addEventListener("deviceready", onDeviceReady, false);  

 

// PhoneGap加載完畢 

function onDeviceReady() { 

    playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3"); 

 

// 音頻播放器 

var my_media = null; 

var mediaTimer = null; 

 

// 播放音頻 

function playAudio(src) { 

    // 從目標文件創建Media對象 

    my_media = new Media(src, onSuccess, onError); 

 

    // 播放音頻 

    my_media.play(); 

 

    // 每秒更新一次媒體播放到的位置 

    if (mediaTimer == null) { 

        mediaTimer = setInterval(function() { 

            // 獲取媒體播放到的位置 

            my_media.getCurrentPosition(         

         

                //獲取成功後調用的回調函數 

                function(position) { 

                    if (position > -1) { 

                        setAudioPosition((position/1000) + " sec"); 

                    } 

                }, 

                // 發生錯誤後調用的回調函數 

                function(e) { 

                    console.log("Error getting pos=" + e); 

                    setAudioPosition("Error: " + e); 

                } 

            ); 

        }, 1000); 

    } 

 

// 暫停音頻播放 

function pauseAudio() { 

    if (my_media) { 

        my_media.pause(); 

    } 

 

// 停止音頻播放 

function stopAudio() { 

    if (my_media) { 

        my_media.stop(); 

    } 

    clearInterval(mediaTimer); 

    mediaTimer = null; 

 

// 創建Media對象成功後調用的回調函數 

function onSuccess() { 

    console.log("playAudio():Audio Success"); 

 

// 創建Media對象出錯後調用的回調函數 

function onError(error) { 

    alert('code: '    + error.code    + '\n' +  

        'message: ' + error.message + '\n'); 

 

// 設置音頻播放位置 

function setAudioPosition(position) { 

    document.getElementById('audio_position').innerHTML = position; 

 

</script> 

</head> 

<body> 

    <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a> 

    <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a> 

    <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a> 

    <p id="audio_position"></p> 

</body> 

</html>
復制代碼
media.getDuration
返回音頻文件的時間長度。

 

media.getDuration();
復制代碼
說明:media.getDuration是一個同步函數,如果音頻時長已知的話則返回以秒為單位的音頻文件時長,如果時長不可知的話則返回-1。

支持的平臺:
Android
iOS

簡單的范例:
    // 音頻播放器 

    var my_media = new Media(src, onSuccess, onError); 

     

    // 獲得時間長度 

    var counter = 0; 

    var timerDur = setInterval(function() { 

        countercounter = counter + 100; 

        if (counter > 2000) { 

            clearInterval(timerDur); 

        } 

        var dur = my_media.getDuration(); 

        if (dur > 0) { 

            clearInterval(timerDur); 

            document.getElementById('audio_duration').innerHTML = (dur/1000) + " sec"; 

        } 

    }, 100); 
復制代碼
完整的范例:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd"> 

    <html> 

    <head>     

    <title>Media Example</title> 

     

    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 

    <script type="text/javascript" charset="utf-8"> 

     

        // 等待加載PhoneGap 

        document.addEventListener("deviceready", onDeviceReady, false);  

         

        // PhoneGap加載完畢 

        function onDeviceReady() { 

            playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3"); 

        } 

         

        // 音頻播放器 

        var my_media = null; 

        var mediaTimer = null; 

         

        // 播放音頻 

        function playAudio(src) { 

            // 從目標文件創建Media對象 

            my_media = new Media(src, onSuccess, onError); 

         

            // 播放音頻 

            my_media.play(); 

         

            // 每秒更新一次媒體播放到的位置 

            if (mediaTimer == null) { 

                mediaTimer = setInterval(function() { 

                    // 獲取媒體播放到的位置 

                    my_media.getCurrentPosition( 

                        // 獲取成功後調用的回調函數 

                        function(position) { 

                            if (position > -1) { 

                                setAudioPosition((position/1000) + " sec"); 

                            } 

                        }, 

                        // 發生錯誤後調用的回調函數 

                        function(e) { 

                            console.log("Error getting pos=" + e); 

                            setAudioPosition("Error: " + e); 

                        } 

                    ); 

                }, 1000); 

            } 

        } 

         

        // 暫停音頻播放 

        function pauseAudio() { 

            if (my_media) { 

                my_media.pause(); 

            } 

        } 

         

        // 停止音頻播放 

        function stopAudio() { 

            if (my_media) { 

                my_media.stop(); 

            } 

            clearInterval(mediaTimer); 

            mediaTimer = null; 

        } 

         

        // 創建Media對象成功後調用的回調函數 

        function onSuccess() { 

            console.log("playAudio():Audio Success"); 

        } 

         

        // 創建Media對象出錯後調用的回調函數 

        function onError(error) { 

            alert('code: '    + error.code    + '\n' +  

                'message: ' + error.message + '\n'); 

        } 

         

        // 設置音頻播放位置 

        function setAudioPosition(position) { 

            document.getElementById('audio_position').innerHTML = position; 

        } 

     

    </script> 

    </head> 

    <body> 

        <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a> 

        <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a> 

        <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a> 

        <p id="audio_position"></p> 

    </body> 

    </html> 
復制代碼media.play開始或恢復播放一個音頻文件。

media.play(); 
復制代碼
說明:media.play是一個用於開始或恢復播放音頻文件的同步函數。

支持的平臺:
Android
iOS

簡單的范例:
    // 播放音頻文件 

    function playAudio(url) { 

        // 播放url指向的音頻文件 

        var my_media = new Media(url, 

        // 播放成功後調用的回調函數 

        function() { 

            console.log("playAudio():Audio Success"); 

        }, 

        // 播放出錯後調用的回調函數 

        function(err) { 

            console.log("playAudio():Audio Error: "+err); 

        }); 

     

    // 播放音頻文件 

    my_media.play(); 

    } 
復制代碼
完整的范例:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd"> 

    <html> 

    <head>     

    <title>Media Example</title> 

     

    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 

    <script type="text/javascript" charset="utf-8"> 

     

        // 等待加載PhoneGap 

        document.addEventListener("deviceready", onDeviceReady, false);  

         

        // PhoneGap加載完畢 

        function onDeviceReady() { 

            playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3"); 

        } 

         

        // 音頻播放器 

        var my_media = null; 

        var mediaTimer = null; 

         

        // 播放音頻文件 

        function playAudio(src) { 

            // 從目標文件創建Media對象 

            my_media = new Media(src, onSuccess, onError); 

         

            // 播放音頻 

            my_media.play(); 

         

            // 每秒更新一次媒體播放到的位置 

            if (mediaTimer == null) { 

                mediaTimer = setInterval(function() { 

                    // 獲取媒體播放到的位置 

                    my_media.getCurrentPosition( 

                        // 獲取成功後調用的回調函數 

                        function(position) { 

                            if (position > -1) { 

                                setAudioPosition((position/1000) + " sec"); 

                            } 

                        }, 

                        // 發生錯誤後調用的回調函數 

                        function(e) { 

                            console.log("Error getting pos=" + e); 

                            setAudioPosition("Error: " + e); 

                        } 

                    ); 

                }, 1000); 

            } 

        } 

         

        // 暫停音頻播放  

        function pauseAudio() { 

            if (my_media) { 

                my_media.pause(); 

            } 

        } 

         

        // 停止音頻播放        

        function stopAudio() { 

            if (my_media) { 

                my_media.stop(); 

            } 

            clearInterval(mediaTimer); 

            mediaTimer = null; 

        } 

         

        // 創建Media對象成功後調用的回調函數 

        function onSuccess() { 

            console.log("playAudio():Audio Success"); 

        } 

         

        // 創建Media對象出錯後調用的回調函數 

        function onError(error) { 

            alert('code: '    + error.code    + '\n' +  

                  'message: ' + error.message + '\n'); 

        } 

         

        // 設置音頻播放位置 

        function setAudioPosition(position) { 

            document.getElementById('audio_position').innerHTML = position; 

        } 

     

    </script> 

    </head> 

    <body> 

        <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a> 

        <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a> 

        <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a> 

        <p id="audio_position"></p> 

    </body> 

    </html> 
復制代碼
media.pause
暫停播放一個音頻文件。

media.pause(); 
復制代碼
說明:media.pause是一個用於暫停播放音頻文件的同步函數。

支持的平臺:
Android
iOS

簡單的范例:
    // 播放音頻 

    function playAudio(url) { 

        // 播放url指向的音頻文件 

        var my_media = new Media(url, 

            // 獲取成功後調用的回調函數 

            function() { 

                console.log("playAudio():Audio Success"); 

            }, 

            // 發生錯誤後調用的回調函數 

            function(err) { 

                console.log("playAudio():Audio Error: "+err); 

            } 

        ) 

     

        // 播放音頻 

        my_media.play(); 

     

        // 暫停10秒鐘 

        setTimeout(function() { 

            media.pause(); 

        }, 10000);         

    } 
復制代碼
完整的范例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd"> 

<html> 

<head>     

<title>Media Example</title> 

 

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 

<script type="text/javascript" charset="utf-8"> 

 

    // 等待加載PhoneGap 

    document.addEventListener("deviceready", onDeviceReady, false);  

     

    // PhoneGap加載完畢 

    function onDeviceReady() { 

        playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3"); 

    } 

     

    // 音頻播放器 

    var my_media = null; 

    var mediaTimer = null; 

     

    // 播放音頻 

    function playAudio(src) { 

        // 從目標播放文件創建Media對象 

        my_media = new Media(src, onSuccess, onError); 

        // 播放音頻 

        my_media.play(); 

     

        // 每秒更新一次媒體播放到的位置 

        if (mediaTimer == null) { 

            mediaTimer = setInterval(function() { 

                // 獲取媒體播放到的位置 

                my_media.getCurrentPosition( 

                    // 獲取成功後調用的回調函數 

                    function(position) { 

                        if (position > -1) { 

                            setAudioPosition((position/1000) + " sec"); 

                        } 

                    }, 

                    // 發生錯誤後調用的回調函數 

                    function(e) { 

                        console.log("Error getting pos=" + e); 

                        setAudioPosition("Error: " + e); 

                    } 

                ); 

            }, 1000); 

        } 

    } 

     

    // 暫停音頻播放 

    function pauseAudio() { 

        if (my_media) { 

            my_media.pause(); 

        } 

    } 

     

    // 停止音頻播放 

    function stopAudio() { 

        if (my_media) { 

            my_media.stop(); 

        } 

        clearInterval(mediaTimer); 

        mediaTimer = null; 

    } 

     

    // 創建Media對象成功後調用的回調函數 

    function onSuccess() { 

        console.log("playAudio():Audio Success"); 

    } 

     

    // 創建Media對象出錯後調用的回調函數 

    function onError(error) { 

        alert('code: '    + error.code    + '\n' +  

            'message: ' + error.message + '\n'); 

    } 

     

    // 設置音頻播放位置  

    function setAudioPosition(position) { 

        document.getElementById('audio_position').innerHTML = position; 

    } 

 

</script> 

</head> 

<body> 

    <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a> 

    <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a> 

    <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a> 

    <p id="audio_position"></p> 

</body> 

</html>
復制代碼
media.release
釋放底層操作系統音頻資源。
media.release();
復制代碼
說明:
media.release是一個用於釋放系統音頻資源的同步函數。該函數對於Android系統尤為重要,因為Android系統的OpenCore(多媒體核心)的實例是有限的。開發者需要在他們不再需要相應Media資源時調用“release”函數釋放它。

支持的平臺:
Android
iOS

簡單的范例:
// 音頻播放器 

var my_media = new Media(src, onSuccess, onError); 

 

my_media.play(); 

my_media.stop(); 

my_media.release();
復制代碼完整的范例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd"> 

<html> 

<head>     

<title>Media Example</title> 

 

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 

<script type="text/javascript" charset="utf-8"> 

 

    // 等待加載PhoneGap 

    document.addEventListener("deviceready", onDeviceReady, false);  

     

    // PhoneGap加載完畢 

    function onDeviceReady() { 

        playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3"); 

    } 

     

    // 音頻播放器 

    var my_media = null; 

    var mediaTimer = null; 

    // 播放音頻 

    function playAudio(src) { 

        // 從目標播放文件創建Media對象 

        my_media = new Media(src, onSuccess, onError); 

     

        // 播放音頻 

        my_media.play(); 

     

        // 每秒更新一次媒體播放到的位置 

        if (mediaTimer == null) { 

            mediaTimer = setInterval(function() { 

                // 獲取媒體播放到的位置 

                my_media.getCurrentPosition( 

                    // 獲取成功後調用的回調函數 

                    function(position) { 

                        if (position > -1) { 

                            setAudioPosition((position/1000) + " sec"); 

                        } 

                    }, 

                    // 發生錯誤後調用的回調函數 

                    function(e) { 

                        console.log("Error getting pos=" + e); 

                        setAudioPosition("Error: " + e); 

                    } 

                ); 

            }, 1000); 

        } 

    } 

     

    // 暫停音頻播放        

    function pauseAudio() { 

        if (my_media) { 

            my_media.pause(); 

        } 

    } 

     

    // 停止音頻播放  

    function stopAudio() { 

        if (my_media) { 

            my_media.stop(); 

        } 

        clearInterval(mediaTimer); 

        mediaTimer = null; 

    } 

     

    // 創建Media對象成功後調用的回調函數        

    function onSuccess() { 

        console.log("playAudio():Audio Success"); 

    } 

     

    // 創建Media對象出錯後調用的回調函數        

    function onError(error) { 

        alert('code: '    + error.code    + '\n' +  

            'message: ' + error.message + '\n'); 

    } 

     

    // 設置音頻播放位置 

    function setAudioPosition(position) { 

        document.getElementById('audio_position').innerHTML = position; 

    } 

 

</script> 

</head> 

<body> 

    <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a> 

    <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a> 

    <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a> 

    <p id="audio_position"></p> 

</body> 

</html>
復制代碼media.startRecord 開始錄制一個音頻文件。

media.startRecord(); 
復制代碼
說明:media.startRecord是用於開始錄制一個音頻文件的同步函數。

支持的平臺:
Android
iOS

簡單的范例:
    // 錄制音頻 

    function recordAudio() { 

        var src = "myrecording.mp3"; 

        var mediaRec = new Media(src, 

            // 新建Media對象成功後調用的回調函數 

            function() { 

                console.log("recordAudio():Audio Success"); 

            }, 

     

            // 新建Media對象出錯後調用的回調函數 

            function(err) { 

                console.log("recordAudio():Audio Error: "+ err.code); 

            } 

        ); 

     

        // 錄制音頻 

        mediaRec.startRecord(); 

    } 
復制代碼
完整的范例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd"> 

<html> 

<head>     

<title>Device Properties Example</title> 

 

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 

<script type="text/javascript" charset="utf-8"> 

 

    // 等待加載PhoneGap 

    document.addEventListener("deviceready", onDeviceReady, false);  

     

    // 錄制音頻 

    function recordAudio() { 

        var src = "myrecording.mp3"; 

        var mediaRec = new Media(src, onSuccess, onError); 

     

        // 開始錄制音頻 

        mediaRec.startRecord(); 

     

        // 10秒鐘後停止錄制 

        var recTime = 0; 

        var recInterval = setInterval(function() { 

            recTimerecTime = recTime + 1; 

            setAudioPosition(recTime + " sec"); 

            if (recTime >= 10) { 

                clearInterval(recInterval); 

                mediaRec.stopRecord(); 

            } 

        }, 1000); 

    } 

     

    // PhoneGap加載完畢  

    function onDeviceReady() { 

        recordAudio(); 

    } 

     

    // 創建Media對象成功後調用的回調函數 

    function onSuccess() { 

        console.log("recordAudio():Audio Success"); 

    } 

     

    // 創建Media對象出錯後調用的回調函數 

    function onError(error) { 

        alert('code: '    + error.code    + '\n' +  

              'message: ' + error.message + '\n'); 

    } 

     

    // 設置音頻播放位置 

    function setAudioPosition(position) { 

        document.getElementById('audio_position').innerHTML = position; 

    } 

 

</script> 

</head> 

<body> 

    <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a> 

    <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a> 

    <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a> 

    <p id="audio_position"></p> 

</body> 

</html>
復制代碼
iOS 的特異情況:
用於錄制的文件必須已經存在並是.wav類型,可以通過File API來進行文件的創建。

media.stop

停止播放一個音頻文件。

media.stop(); 
復制代碼
說明:media.stop函數是一個用於停止播放音頻文件的同步函數。

支持的平臺:
Android
iOS

簡單的范例:
    // 播放音頻 

    function playAudio(url) { 

    // 播放url指向的音頻文件 

    var my_media = new Media(url, 

        // 新建Media對象成功後調用的回調函數 

        function() { 

            console.log("playAudio():Audio Success"); 

        }, 

        // 新建Media對象出錯後調用的回調函數 

        function(err) { 

            console.log("playAudio():Audio Error: "+err); 

        } 

    ); 

     

    // 播放音頻 

    my_media.play(); 

     

    // 10秒鐘後暫停播放 

    setTimeout(function() { 

        my_media.stop(); 

        }, 10000);         

    } 
復制代碼
完整的范例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd"> 

<html> 

<head>     

<title>Media Example</title> 

 

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 

<script type="text/javascript" charset="utf-8"> 

 

    // 等待加載PhoneGap 

    document.addEventListener("deviceready", onDeviceReady, false);  

     

    // PhoneGap加載完畢 

    function onDeviceReady() { 

        playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3"); 

    } 

     

    // 音頻播放器 

    var my_media = null; 

    var mediaTimer = null; 

     

    // 播放音頻 

    function playAudio(src) { 

        // 從目標播放文件創建Media對象 

        my_media = new Media(src, onSuccess, onError); 

     

        // 播放音頻 

        my_media.play(); 

     

        // 每秒更新一次媒體播放到的位置 

        if (mediaTimer == null) { 

            mediaTimer = setInterval(function() { 

                // 獲取媒體播放到的位置 

                my_media.getCurrentPosition( 

                    // 獲取成功後調用的回調函數 

                    function(position) { 

                        if (position > -1) { 

                            setAudioPosition((position/1000) + " sec"); 

                        } 

                    }, 

                    // 發生錯誤後調用的回調函數 

                    function(e) { 

                        console.log("Error getting pos=" + e); 

                        setAudioPosition("Error: " + e); 

                    } 

                ); 

            }, 1000); 

        } 

    } 

     

    // 暫停音頻播放 

    function pauseAudio() { 

        if (my_media) { 

            my_media.pause(); 

        } 

    } 

     

    // 停止音頻播放        

    function stopAudio() { 

        if (my_media) { 

            my_media.stop(); 

        } 

        clearInterval(mediaTimer); 

        mediaTimer = null; 

    } 

     

    // 創建Media對象成功後調用的回調函數        

    function onSuccess() { 

        console.log("playAudio():Audio Success"); 

    } 

     

    // 創建Media對象出錯後調用的回調函數 

    function onError(error) { 

        alert('code: '    + error.code    + '\n' +  

              'message: ' + error.message + '\n'); 

    } 

     

    // 設置音頻播放位置 

    function setAudioPosition(position) { 

        document.getElementById('audio_position').innerHTML = position; 

    } 

 

</script> 

</head> 

<body> 

    <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a> 

    <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a> 

    <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a> 

    <p id="audio_position"></p> 

</body> 

</html>
復制代碼
media.stopRecord
停止錄制一個音頻文件。

media.stopRecord(); 
復制代碼
說明:media.stopRecord是用於停止錄制一個音頻文件的同步函數。

支持的平臺:
Android
iOS

簡單的范例:
    // 錄制音頻  

    function recordAudio() {  

        var src = "myrecording.mp3";  

        var mediaRec = new Media(src,  

            // 新建Media對象成功後調用的回調函數  

            function() {  

                console.log("recordAudio():Audio Success");  

            },  

     

            // 新建Media對象出錯後調用的回調函數  

            function(err) {  

                console.log("recordAudio():Audio Error: "+ err.code);  

            } 

        );  

     

        // 開始錄制音頻  

        mediaRec.startRecord();  

     

        // 10秒後停止錄制 

        setTimeout(function() {  

            mediaRec.stopRecord();  

        }, 10000);  

    } 
復制代碼
完整的范例:
    <!DOCTYPE html> 

    <html> 

    <head>     

    <title>Device Properties Example</title>  

     

    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  

    <script type="text/javascript" charset="utf-8">  

     

        // 等待加載PhoneGap 

        document.addEventListener("deviceready", onDeviceReady, false);   

         

        // 錄制音頻  

        function recordAudio() {  

            var src = "myrecording.mp3";  

            var mediaRec = new Media(src, onSuccess, onError);  

         

            // 開始錄制音頻  

            mediaRec.startRecord();  

         

            // 10秒後停止錄制 

            var recTime = 0;  

            var recInterval = setInterval(function() {  

                recTimerecTime = recTime + 1;  

                setAudioPosition(recTime + " sec");  

                if (recTime >= 10) {  

                    clearInterval(recInterval);  

                    mediaRec.stopRecord();  

                }  

            }, 1000);  

        }  

         

        // PhoneGap加載完畢 

        function onDeviceReady() {  

            recordAudio();  

        }  

         

        // 新建Media對象成功後調用的回調函數  

        function onSuccess() {  

            console.log("recordAudio():Audio Success");  

        }  

         

        // 新建Media對象出錯後調用的回調函數 

        function onError(error) {  

            alert('code: '    + error.code    + '\n' +   

                  'message: ' + error.message + '\n');  

        }  

         

        // 設置音頻播放位置  

        function setAudioPosition(position) {  

            document.getElementById('audio_position').innerHTML = position;  

        }  

     

    </script> 

    </head> 

    <body> 

        <p id="media">Recording audio…</p> 

        <p id="audio_position"></p> 

    </body> 

    </html> 
復制代碼
MediaError
 
當發生錯誤時,一個MediaError對象將傳遞給mediaError回調函數。

屬性:
code:一個在下面常量列表中定義的錯誤代碼。
message:用於描述錯誤細節的錯誤信息。

常量:
MediaError.MEDIA_ERR_ABORTED:媒體中斷錯誤
MediaError.MEDIA_ERR_NETWORK:網絡錯誤
MediaError.MEDIA_ERR_DECODE:編碼錯誤
MediaError.MEDIA_ERR_NONE_SUPPORTED:格式不支持

說明:
當發生錯誤時,一個MediaError對象將通過mediaError回調函數傳遞給用戶。

mediaError

一個用戶指定的回調函數,當媒體函數出現錯誤的時候被調用。

    function(error) {  

        // 處理錯誤  

    } 
復制代碼參數:
error:設備返回的錯誤信息。(MediaError類型)

 

發佈留言