PhoneGap API帮助文档翻译—Media(媒体)

Media对象提供录制和回放设备上的音频文件的能力。
  1. 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 

返回返回一个音频文件的当前的位置。


  1. media.getCurrentPosition(mediaSuccess, [mediaError]);  
复制代码

参数:
  • mediaSuccess:成功的回调函数,返回当前的位置。
  • mediaError:(可选项)如果发生错误时调用的回调函数。

说明:media.getCurrentPosition是一个异步函数,用户返回一个Media对象所指向的音频文件的当前位置,同时会对Media对象的_position参数进行更新。

支持的平台:
  • Android
  • iOS

简单的范例:
  1.     // 音频播放器  
  2.     var my_media = new Media(src, onSuccess, onError);  
  3.       
  4.     // 每秒更新一次媒体播放到的位置  
  5.     var mediaTimer = setInterval(function() {  
  6.         // 获得媒体位置  
  7.         my_media.getCurrentPosition(  
  8.             // 获得成功后调用的回调函数  
  9.             function(position) {  
  10.                 if (position > -1) {  
  11.                     console.log((position/1000) + " sec");  
  12.                 }  
  13.             },  
  14.             // 发生错误后调用的回调函数  
  15.             function(e) {  
  16.                 console.log("Error getting pos=" + e);  
  17.             }  
  18.         );  
  19.     }, 1000);  
复制代码

完整的范例:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd">  
  2. <html>  
  3. <head>      
  4. <title>Media Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9. // 等待加载PhoneGap  
  10. document.addEventListener("deviceready", onDeviceReady, false);   
  11.   
  12. // PhoneGap加载完毕  
  13. function onDeviceReady() {  
  14.     playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  15. }  
  16.   
  17. // 音频播放器  
  18. var my_media = null;  
  19. var mediaTimer = null;  
  20.   
  21. // 播放音频  
  22. function playAudio(src) {  
  23.     // 从目标文件创建Media对象  
  24.     my_media = new Media(src, onSuccess, onError);  
  25.   
  26.     // 播放音频  
  27.     my_media.play();  
  28.   
  29.     // 每秒更新一次媒体播放到的位置  
  30.     if (mediaTimer == null) {  
  31.         mediaTimer = setInterval(function() {  
  32.             // 获取媒体播放到的位置  
  33.             my_media.getCurrentPosition(          
  34.           
  35.                 //获取成功后调用的回调函数  
  36.                 function(position) {  
  37.                     if (position > -1) {  
  38.                         setAudioPosition((position/1000) + " sec");  
  39.                     }  
  40.                 },  
  41.                 // 发生错误后调用的回调函数  
  42.                 function(e) {  
  43.                     console.log("Error getting pos=" + e);  
  44.                     setAudioPosition("Error: " + e);  
  45.                 }  
  46.             );  
  47.         }, 1000);  
  48.     }  
  49. }  
  50.   
  51. // 暂停音频播放  
  52. function pauseAudio() {  
  53.     if (my_media) {  
  54.         my_media.pause();  
  55.     }  
  56. }  
  57.   
  58. // 停止音频播放  
  59. function stopAudio() {  
  60.     if (my_media) {  
  61.         my_media.stop();  
  62.     }  
  63.     clearInterval(mediaTimer);  
  64.     mediaTimer = null;  
  65. }  
  66.   
  67. // 创建Media对象成功后调用的回调函数  
  68. function onSuccess() {  
  69.     console.log("playAudio():Audio Success");  
  70. }  
  71.   
  72. // 创建Media对象出错后调用的回调函数  
  73. function onError(error) {  
  74.     alert('code: '    + error.code    + '\n' +   
  75.         'message: ' + error.message + '\n');  
  76. }  
  77.   
  78. // 设置音频播放位置  
  79. function setAudioPosition(position) {  
  80.     document.getElementById('audio_position').innerHTML = position;  
  81. }  
  82.   
  83. </script>  
  84. </head>  
  85. <body>  
  86.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  87.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  88.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  89.     <p id="audio_position"></p>  
  90. </body>  
  91. </html>
复制代码

media.getDuration
返回音频文件的时间长度。




  1. media.getDuration();
复制代码

说明:media.getDuration是一个同步函数,如果音频时长已知的话则返回以秒为单位的音频文件时长,如果时长不可知的话则返回-1。

支持的平台:
  • Android
  • iOS

简单的范例:
  1.     // 音频播放器  
  2.     var my_media = new Media(src, onSuccess, onError);  
  3.       
  4.     // 获得时间长度  
  5.     var counter = 0;  
  6.     var timerDur = setInterval(function() {  
  7.         countercounter = counter + 100;  
  8.         if (counter > 2000) {  
  9.             clearInterval(timerDur);  
  10.         }  
  11.         var dur = my_media.getDuration();  
  12.         if (dur > 0) {  
  13.             clearInterval(timerDur);  
  14.             document.getElementById('audio_duration').innerHTML = (dur/1000) + " sec";  
  15.         }  
  16.     }, 100);  
复制代码

完整的范例:
  1.     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd">  
  2.     <html>  
  3.     <head>      
  4.     <title>Media Example</title>  
  5.       
  6.     <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7.     <script type="text/javascript" charset="utf-8">  
  8.       
  9.         // 等待加载PhoneGap  
  10.         document.addEventListener("deviceready", onDeviceReady, false);   
  11.           
  12.         // PhoneGap加载完毕  
  13.         function onDeviceReady() {  
  14.             playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  15.         }  
  16.           
  17.         // 音频播放器  
  18.         var my_media = null;  
  19.         var mediaTimer = null;  
  20.           
  21.         // 播放音频  
  22.         function playAudio(src) {  
  23.             // 从目标文件创建Media对象  
  24.             my_media = new Media(src, onSuccess, onError);  
  25.           
  26.             // 播放音频  
  27.             my_media.play();  
  28.           
  29.             // 每秒更新一次媒体播放到的位置  
  30.             if (mediaTimer == null) {  
  31.                 mediaTimer = setInterval(function() {  
  32.                     // 获取媒体播放到的位置  
  33.                     my_media.getCurrentPosition(  
  34.                         // 获取成功后调用的回调函数  
  35.                         function(position) {  
  36.                             if (position > -1) {  
  37.                                 setAudioPosition((position/1000) + " sec");  
  38.                             }  
  39.                         },  
  40.                         // 发生错误后调用的回调函数  
  41.                         function(e) {  
  42.                             console.log("Error getting pos=" + e);  
  43.                             setAudioPosition("Error: " + e);  
  44.                         }  
  45.                     );  
  46.                 }, 1000);  
  47.             }  
  48.         }  
  49.           
  50.         // 暂停音频播放  
  51.         function pauseAudio() {  
  52.             if (my_media) {  
  53.                 my_media.pause();  
  54.             }  
  55.         }  
  56.           
  57.         // 停止音频播放  
  58.         function stopAudio() {  
  59.             if (my_media) {  
  60.                 my_media.stop();  
  61.             }  
  62.             clearInterval(mediaTimer);  
  63.             mediaTimer = null;  
  64.         }  
  65.           
  66.         // 创建Media对象成功后调用的回调函数  
  67.         function onSuccess() {  
  68.             console.log("playAudio():Audio Success");  
  69.         }  
  70.           
  71.         // 创建Media对象出错后调用的回调函数  
  72.         function onError(error) {  
  73.             alert('code: '    + error.code    + '\n' +   
  74.                 'message: ' + error.message + '\n');  
  75.         }  
  76.           
  77.         // 设置音频播放位置  
  78.         function setAudioPosition(position) {  
  79.             document.getElementById('audio_position').innerHTML = position;  
  80.         }  
  81.       
  82.     </script>  
  83.     </head>  
  84.     <body>  
  85.         <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  86.         <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  87.         <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  88.         <p id="audio_position"></p>  
  89.     </body>  
  90.     </html>  
复制代码
media.play开始或恢复播放一个音频文件。

  1. media.play();  
复制代码

说明:media.play是一个用于开始或恢复播放音频文件的同步函数。

支持的平台:
  • Android
  • iOS

简单的范例:
  1.     // 播放音频文件  
  2.     function playAudio(url) {  
  3.         // 播放url指向的音频文件  
  4.         var my_media = new Media(url,  
  5.         // 播放成功后调用的回调函数  
  6.         function() {  
  7.             console.log("playAudio():Audio Success");  
  8.         },  
  9.         // 播放出错后调用的回调函数  
  10.         function(err) {  
  11.             console.log("playAudio():Audio Error: "+err);  
  12.         });  
  13.       
  14.     // 播放音频文件  
  15.     my_media.play();  
  16.     }  
复制代码

完整的范例:
  1.     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd">  
  2.     <html>  
  3.     <head>      
  4.     <title>Media Example</title>  
  5.       
  6.     <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7.     <script type="text/javascript" charset="utf-8">  
  8.       
  9.         // 等待加载PhoneGap  
  10.         document.addEventListener("deviceready", onDeviceReady, false);   
  11.           
  12.         // PhoneGap加载完毕  
  13.         function onDeviceReady() {  
  14.             playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  15.         }  
  16.           
  17.         // 音频播放器  
  18.         var my_media = null;  
  19.         var mediaTimer = null;  
  20.           
  21.         // 播放音频文件  
  22.         function playAudio(src) {  
  23.             // 从目标文件创建Media对象  
  24.             my_media = new Media(src, onSuccess, onError);  
  25.           
  26.             // 播放音频  
  27.             my_media.play();  
  28.           
  29.             // 每秒更新一次媒体播放到的位置  
  30.             if (mediaTimer == null) {  
  31.                 mediaTimer = setInterval(function() {  
  32.                     // 获取媒体播放到的位置  
  33.                     my_media.getCurrentPosition(  
  34.                         // 获取成功后调用的回调函数  
  35.                         function(position) {  
  36.                             if (position > -1) {  
  37.                                 setAudioPosition((position/1000) + " sec");  
  38.                             }  
  39.                         },  
  40.                         // 发生错误后调用的回调函数  
  41.                         function(e) {  
  42.                             console.log("Error getting pos=" + e);  
  43.                             setAudioPosition("Error: " + e);  
  44.                         }  
  45.                     );  
  46.                 }, 1000);  
  47.             }  
  48.         }  
  49.           
  50.         // 暂停音频播放   
  51.         function pauseAudio() {  
  52.             if (my_media) {  
  53.                 my_media.pause();  
  54.             }  
  55.         }  
  56.           
  57.         // 停止音频播放         
  58.         function stopAudio() {  
  59.             if (my_media) {  
  60.                 my_media.stop();  
  61.             }  
  62.             clearInterval(mediaTimer);  
  63.             mediaTimer = null;  
  64.         }  
  65.           
  66.         // 创建Media对象成功后调用的回调函数  
  67.         function onSuccess() {  
  68.             console.log("playAudio():Audio Success");  
  69.         }  
  70.           
  71.         // 创建Media对象出错后调用的回调函数  
  72.         function onError(error) {  
  73.             alert('code: '    + error.code    + '\n' +   
  74.                   'message: ' + error.message + '\n');  
  75.         }  
  76.           
  77.         // 设置音频播放位置  
  78.         function setAudioPosition(position) {  
  79.             document.getElementById('audio_position').innerHTML = position;  
  80.         }  
  81.       
  82.     </script>  
  83.     </head>  
  84.     <body>  
  85.         <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  86.         <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  87.         <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  88.         <p id="audio_position"></p>  
  89.     </body>  
  90.     </html>  
复制代码

media.pause 
暂停播放一个音频文件。


  1. media.pause();  
复制代码

说明:media.pause是一个用于暂停播放音频文件的同步函数。

支持的平台:
  • Android
  • iOS

简单的范例:
  1.     // 播放音频  
  2.     function playAudio(url) {  
  3.         // 播放url指向的音频文件  
  4.         var my_media = new Media(url,  
  5.             // 获取成功后调用的回调函数  
  6.             function() {  
  7.                 console.log("playAudio():Audio Success");  
  8.             },  
  9.             // 发生错误后调用的回调函数  
  10.             function(err) {  
  11.                 console.log("playAudio():Audio Error: "+err);  
  12.             }  
  13.         )  
  14.       
  15.         // 播放音频  
  16.         my_media.play();  
  17.       
  18.         // 暂停10秒钟  
  19.         setTimeout(function() {  
  20.             media.pause();  
  21.         }, 10000);          
  22.     }  
复制代码

完整的范例:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd">  
  2. <html>  
  3. <head>      
  4. <title>Media Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9.     // 等待加载PhoneGap  
  10.     document.addEventListener("deviceready", onDeviceReady, false);   
  11.       
  12.     // PhoneGap加载完毕  
  13.     function onDeviceReady() {  
  14.         playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  15.     }  
  16.       
  17.     // 音频播放器  
  18.     var my_media = null;  
  19.     var mediaTimer = null;  
  20.       
  21.     // 播放音频  
  22.     function playAudio(src) {  
  23.         // 从目标播放文件创建Media对象  
  24.         my_media = new Media(src, onSuccess, onError);  
  25.         // 播放音频  
  26.         my_media.play();  
  27.       
  28.         // 每秒更新一次媒体播放到的位置  
  29.         if (mediaTimer == null) {  
  30.             mediaTimer = setInterval(function() {  
  31.                 // 获取媒体播放到的位置  
  32.                 my_media.getCurrentPosition(  
  33.                     // 获取成功后调用的回调函数  
  34.                     function(position) {  
  35.                         if (position > -1) {  
  36.                             setAudioPosition((position/1000) + " sec");  
  37.                         }  
  38.                     },  
  39.                     // 发生错误后调用的回调函数  
  40.                     function(e) {  
  41.                         console.log("Error getting pos=" + e);  
  42.                         setAudioPosition("Error: " + e);  
  43.                     }  
  44.                 );  
  45.             }, 1000);  
  46.         }  
  47.     }  
  48.       
  49.     // 暂停音频播放  
  50.     function pauseAudio() {  
  51.         if (my_media) {  
  52.             my_media.pause();  
  53.         }  
  54.     }  
  55.       
  56.     // 停止音频播放  
  57.     function stopAudio() {  
  58.         if (my_media) {  
  59.             my_media.stop();  
  60.         }  
  61.         clearInterval(mediaTimer);  
  62.         mediaTimer = null;  
  63.     }  
  64.       
  65.     // 创建Media对象成功后调用的回调函数  
  66.     function onSuccess() {  
  67.         console.log("playAudio():Audio Success");  
  68.     }  
  69.       
  70.     // 创建Media对象出错后调用的回调函数  
  71.     function onError(error) {  
  72.         alert('code: '    + error.code    + '\n' +   
  73.             'message: ' + error.message + '\n');  
  74.     }  
  75.       
  76.     // 设置音频播放位置   
  77.     function setAudioPosition(position) {  
  78.         document.getElementById('audio_position').innerHTML = position;  
  79.     }  
  80.   
  81. </script>  
  82. </head>  
  83. <body>  
  84.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  85.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  86.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  87.     <p id="audio_position"></p>  
  88. </body>  
  89. </html>
复制代码

media.release 
释放底层操作系统音频资源。
  1. media.release();
复制代码

说明:
media.release是一个用于释放系统音频资源的同步函数。该函数对于Android系统尤为重要,因为Android系统的OpenCore(多媒体核心)的实例是有限的。开发者需要在他们不再需要相应Media资源时调用“release”函数释放它。

支持的平台:
  • Android
  • iOS

简单的范例:
  1. // 音频播放器  
  2. var my_media = new Media(src, onSuccess, onError);  
  3.   
  4. my_media.play();  
  5. my_media.stop();  
  6. my_media.release();
复制代码
完整的范例:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd">  
  2. <html>  
  3. <head>      
  4. <title>Media Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9.     // 等待加载PhoneGap  
  10.     document.addEventListener("deviceready", onDeviceReady, false);   
  11.       
  12.     // PhoneGap加载完毕  
  13.     function onDeviceReady() {  
  14.         playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  15.     }  
  16.       
  17.     // 音频播放器  
  18.     var my_media = null;  
  19.     var mediaTimer = null;  
  20.     // 播放音频  
  21.     function playAudio(src) {  
  22.         // 从目标播放文件创建Media对象  
  23.         my_media = new Media(src, onSuccess, onError);  
  24.       
  25.         // 播放音频  
  26.         my_media.play();  
  27.       
  28.         // 每秒更新一次媒体播放到的位置  
  29.         if (mediaTimer == null) {  
  30.             mediaTimer = setInterval(function() {  
  31.                 // 获取媒体播放到的位置  
  32.                 my_media.getCurrentPosition(  
  33.                     // 获取成功后调用的回调函数  
  34.                     function(position) {  
  35.                         if (position > -1) {  
  36.                             setAudioPosition((position/1000) + " sec");  
  37.                         }  
  38.                     },  
  39.                     // 发生错误后调用的回调函数  
  40.                     function(e) {  
  41.                         console.log("Error getting pos=" + e);  
  42.                         setAudioPosition("Error: " + e);  
  43.                     }  
  44.                 );  
  45.             }, 1000);  
  46.         }  
  47.     }  
  48.       
  49.     // 暂停音频播放         
  50.     function pauseAudio() {  
  51.         if (my_media) {  
  52.             my_media.pause();  
  53.         }  
  54.     }  
  55.       
  56.     // 停止音频播放   
  57.     function stopAudio() {  
  58.         if (my_media) {  
  59.             my_media.stop();  
  60.         }  
  61.         clearInterval(mediaTimer);  
  62.         mediaTimer = null;  
  63.     }  
  64.       
  65.     // 创建Media对象成功后调用的回调函数         
  66.     function onSuccess() {  
  67.         console.log("playAudio():Audio Success");  
  68.     }  
  69.       
  70.     // 创建Media对象出错后调用的回调函数         
  71.     function onError(error) {  
  72.         alert('code: '    + error.code    + '\n' +   
  73.             'message: ' + error.message + '\n');  
  74.     }  
  75.       
  76.     // 设置音频播放位置  
  77.     function setAudioPosition(position) {  
  78.         document.getElementById('audio_position').innerHTML = position;  
  79.     }  
  80.   
  81. </script>  
  82. </head>  
  83. <body>  
  84.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  85.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  86.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  87.     <p id="audio_position"></p>  
  88. </body>  
  89. </html>
复制代码
media.startRecord 开始录制一个音频文件。


  1. media.startRecord();  
复制代码

说明:media.startRecord是用于开始录制一个音频文件的同步函数。

支持的平台:
  • Android
  • iOS

简单的范例:
  1.     // 录制音频  
  2.     function recordAudio() {  
  3.         var src = "myrecording.mp3";  
  4.         var mediaRec = new Media(src,  
  5.             // 新建Media对象成功后调用的回调函数  
  6.             function() {  
  7.                 console.log("recordAudio():Audio Success");  
  8.             },  <
posted @ 2014-03-20 12:13  huidaoli  阅读(243)  评论(0编辑  收藏  举报