ipzyh

ip

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  2 随笔 :: 7 文章 :: 0 评论 :: 0 Trackbacks

来源:http://www.2cto.com/kf/201207/139598.html

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类型)

@import url(http://www.cppblog.com/cutesoft_client/cuteeditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
posted on 2012-09-28 21:12 阅读(127) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理