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>  
        <html>  
        <head>      
        <title>Media Example</title>  
          
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
  2. <script type="text/javascript" charset="utf-8">  
  3.   
  4. // 等待加载PhoneGap  
  5. document.addEventListener("deviceready", onDeviceReady, false);   
  6.   
  7. // PhoneGap加载完毕  
  8. function onDeviceReady() {  
  9.     playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  10. }  
  11.   
  12. // 音频播放器  
  13. var my_media = null;  
  14. var mediaTimer = null;  
  15.   
  16. // 播放音频  
  17. function playAudio(src) {  
  18.     // 从目标文件创建Media对象  
  19.     my_media = new Media(src, onSuccess, onError);  
  20.   
  21.     // 播放音频  
  22.     my_media.play();  
  23.   
  24.     // 每秒更新一次媒体播放到的位置  
  25.     if (mediaTimer == null) {  
  26.         mediaTimer = setInterval(function() {  
  27.             // 获取媒体播放到的位置  
  28.             my_media.getCurrentPosition(          
  29.           
  30.                 //获取成功后调用的回调函数  
  31.                 function(position) {  
  32.                     if (position > -1) {  
  33.                         setAudioPosition((position/1000) + " sec");  
  34.                     }  
  35.                 },  
  36.                 // 发生错误后调用的回调函数  
  37.                 function(e) {  
  38.                     console.log("Error getting pos=" + e);  
  39.                     setAudioPosition("Error: " + e);  
  40.                 }  
  41.             );  
  42.         }, 1000);  
  43.     }  
  44. }  
  45.   
  46. // 暂停音频播放  
  47. function pauseAudio() {  
  48.     if (my_media) {  
  49.         my_media.pause();  
  50.     }  
  51. }  
  52.   
  53. // 停止音频播放  
  54. function stopAudio() {  
  55.     if (my_media) {  
  56.         my_media.stop();  
  57.     }  
  58.     clearInterval(mediaTimer);  
  59.     mediaTimer = null;  
  60. }  
  61.   
  62. // 创建Media对象成功后调用的回调函数  
  63. function onSuccess() {  
  64.     console.log("playAudio():Audio Success");  
  65. }  
  66.   
  67. // 创建Media对象出错后调用的回调函数  
  68. function onError(error) {  
  69.     alert('code: '    + error.code    + '\n' +   
  70.         'message: ' + error.message + '\n');  
  71. }  
  72.   
  73. // 设置音频播放位置  
  74. function setAudioPosition(position) {  
  75.     document.getElementById('audio_position').innerHTML = position;  
  76. }  
  77.   
  78. </script>  
  79. </head>  
  80. <body>  
  81.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  82.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  83.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  84.     <p id="audio_position"></p>  
  85. </body>  
  86. </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.     counter = 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>  
        <html>  
        <head>      
        <title>Media Example</title>  
          
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
  2.   
  3. <script type="text/javascript" charset="utf-8">  
  4.   
  5.     // 等待加载PhoneGap  
  6.     document.addEventListener("deviceready", onDeviceReady, false);   
  7.       
  8.     // PhoneGap加载完毕  
  9.     function onDeviceReady() {  
  10.         playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  11.     }  
  12.       
  13.     // 音频播放器  
  14.     var my_media = null;  
  15.     var mediaTimer = null;  
  16.       
  17.     // 播放音频  
  18.     function playAudio(src) {  
  19.         // 从目标文件创建Media对象  
  20.         my_media = new Media(src, onSuccess, onError);  
  21.       
  22.         // 播放音频  
  23.         my_media.play();  
  24.       
  25.         // 每秒更新一次媒体播放到的位置  
  26.         if (mediaTimer == null) {  
  27.             mediaTimer = setInterval(function() {  
  28.                 // 获取媒体播放到的位置  
  29.                 my_media.getCurrentPosition(  
  30.                     // 获取成功后调用的回调函数  
  31.                     function(position) {  
  32.                         if (position > -1) {  
  33.                             setAudioPosition((position/1000) + " sec");  
  34.                         }  
  35.                     },  
  36.                     // 发生错误后调用的回调函数  
  37.                     function(e) {  
  38.                         console.log("Error getting pos=" + e);  
  39.                         setAudioPosition("Error: " + e);  
  40.                     }  
  41.                 );  
  42.             }, 1000);  
  43.         }  
  44.     }  
  45.       
  46.     // 暂停音频播放  
  47.     function pauseAudio() {  
  48.         if (my_media) {  
  49.             my_media.pause();  
  50.         }  
  51.     }  
  52.       
  53.     // 停止音频播放  
  54.     function stopAudio() {  
  55.         if (my_media) {  
  56.             my_media.stop();  
  57.         }  
  58.         clearInterval(mediaTimer);  
  59.         mediaTimer = null;  
  60.     }  
  61.       
  62.     // 创建Media对象成功后调用的回调函数  
  63.     function onSuccess() {  
  64.         console.log("playAudio():Audio Success");  
  65.     }  
  66.       
  67.     // 创建Media对象出错后调用的回调函数  
  68.     function onError(error) {  
  69.         alert('code: '    + error.code    + '\n' +   
  70.             'message: ' + error.message + '\n');  
  71.     }  
  72.       
  73.     // 设置音频播放位置  
  74.     function setAudioPosition(position) {  
  75.         document.getElementById('audio_position').innerHTML = position;  
  76.     }  
  77.   
  78. </script>  
  79. </head>  
  80. <body>  
  81.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  82.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  83.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  84.     <p id="audio_position"></p>  
  85. </body>  
  86. </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>  
        <html>  
        <head>      
        <title>Media Example</title>  
          
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
  2. <script type="text/javascript" charset="utf-8">  
  3.   
  4.     // 等待加载PhoneGap  
  5.     document.addEventListener("deviceready", onDeviceReady, false);   
  6.       
  7.     // PhoneGap加载完毕  
  8.     function onDeviceReady() {  
  9.         playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  10.     }  
  11.       
  12.     // 音频播放器  
  13.     var my_media = null;  
  14.     var mediaTimer = null;  
  15.       
  16.     // 播放音频文件  
  17.     function playAudio(src) {  
  18.         // 从目标文件创建Media对象  
  19.         my_media = new Media(src, onSuccess, onError);  
  20.       
  21.         // 播放音频  
  22.         my_media.play();  
  23.       
  24.         // 每秒更新一次媒体播放到的位置  
  25.         if (mediaTimer == null) {  
  26.             mediaTimer = setInterval(function() {  
  27.                 // 获取媒体播放到的位置  
  28.                 my_media.getCurrentPosition(  
  29.                     // 获取成功后调用的回调函数  
  30.                     function(position) {  
  31.                         if (position > -1) {  
  32.                             setAudioPosition((position/1000) + " sec");  
  33.                         }  
  34.                     },  
  35.                     // 发生错误后调用的回调函数  
  36.                     function(e) {  
  37.                         console.log("Error getting pos=" + e);  
  38.                         setAudioPosition("Error: " + e);  
  39.                     }  
  40.                 );  
  41.             }, 1000);  
  42.         }  
  43.     }  
  44.       
  45.     // 暂停音频播放   
  46.     function pauseAudio() {  
  47.         if (my_media) {  
  48.             my_media.pause();  
  49.         }  
  50.     }  
  51.       
  52.     // 停止音频播放         
  53.     function stopAudio() {  
  54.         if (my_media) {  
  55.             my_media.stop();  
  56.         }  
  57.         clearInterval(mediaTimer);  
  58.         mediaTimer = null;  
  59.     }  
  60.       
  61.     // 创建Media对象成功后调用的回调函数  
  62.     function onSuccess() {  
  63.         console.log("playAudio():Audio Success");  
  64.     }  
  65.       
  66.     // 创建Media对象出错后调用的回调函数  
  67.     function onError(error) {  
  68.         alert('code: '    + error.code    + '\n' +   
  69.               'message: ' + error.message + '\n');  
  70.     }  
  71.       
  72.     // 设置音频播放位置  
  73.     function setAudioPosition(position) {  
  74.         document.getElementById('audio_position').innerHTML = position;  
  75.     }  
  76.   
  77. </script>  
  78. </head>  
  79. <body>  
  80.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  81.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  82.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  83.     <p id="audio_position"></p>  
  84. </body>  
  85. </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>  
        <html>  
        <head>      
        <title>Media Example</title>  
          
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
  2.  
  3. <script type="text/javascript" charset="utf-8">  
  4.   
  5.     // 等待加载PhoneGap  
  6.     document.addEventListener("deviceready", onDeviceReady, false);   
  7.       
  8.     // PhoneGap加载完毕  
  9.     function onDeviceReady() {  
  10.         playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  11.     }  
  12.       
  13.     // 音频播放器  
  14.     var my_media = null;  
  15.     var mediaTimer = null;  
  16.       
  17.     // 播放音频  
  18.     function playAudio(src) {  
  19.         // 从目标播放文件创建Media对象  
  20.         my_media = new Media(src, onSuccess, onError);  
  21.         // 播放音频  
  22.         my_media.play();  
  23.       
  24.         // 每秒更新一次媒体播放到的位置  
  25.         if (mediaTimer == null) {  
  26.             mediaTimer = setInterval(function() {  
  27.                 // 获取媒体播放到的位置  
  28.                 my_media.getCurrentPosition(  
  29.                     // 获取成功后调用的回调函数  
  30.                     function(position) {  
  31.                         if (position > -1) {  
  32.                             setAudioPosition((position/1000) + " sec");  
  33.                         }  
  34.                     },  
  35.                     // 发生错误后调用的回调函数  
  36.                     function(e) {  
  37.                         console.log("Error getting pos=" + e);  
  38.                         setAudioPosition("Error: " + e);  
  39.                     }  
  40.                 );  
  41.             }, 1000);  
  42.         }  
  43.     }  
  44.       
  45.     // 暂停音频播放  
  46.     function pauseAudio() {  
  47.         if (my_media) {  
  48.             my_media.pause();  
  49.         }  
  50.     }  
  51.       
  52.     // 停止音频播放  
  53.     function stopAudio() {  
  54.         if (my_media) {  
  55.             my_media.stop();  
  56.         }  
  57.         clearInterval(mediaTimer);  
  58.         mediaTimer = null;  
  59.     }  
  60.       
  61.     // 创建Media对象成功后调用的回调函数  
  62.     function onSuccess() {  
  63.         console.log("playAudio():Audio Success");  
  64.     }  
  65.       
  66.     // 创建Media对象出错后调用的回调函数  
  67.     function onError(error) {  
  68.         alert('code: '    + error.code    + '\n' +   
  69.             'message: ' + error.message + '\n');  
  70.     }  
  71.       
  72.     // 设置音频播放位置   
  73.     function setAudioPosition(position) {  
  74.         document.getElementById('audio_position').innerHTML = position;  
  75.     }  
  76.   
  77. </script>  
  78. </head>  
  79. <body>  
  80.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  81.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  82.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  83.     <p id="audio_position"></p>  
  84. </body>  
  85. </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>  
        <html>  
        <head>      
        <title>Media Example</title>  
          
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
  2. <script type="text/javascript" charset="utf-8">  
  3.   
  4.     // 等待加载PhoneGap  
  5.     document.addEventListener("deviceready", onDeviceReady, false);   
  6.       
  7.     // PhoneGap加载完毕  
  8.     function onDeviceReady() {  
  9.         playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  10.     }  
  11.       
  12.     // 音频播放器  
  13.     var my_media = null;  
  14.     var mediaTimer = null;  
  15.     // 播放音频  
  16.     function playAudio(src) {  
  17.         // 从目标播放文件创建Media对象  
  18.         my_media = new Media(src, onSuccess, onError);  
  19.       
  20.         // 播放音频  
  21.         my_media.play();  
  22.       
  23.         // 每秒更新一次媒体播放到的位置  
  24.         if (mediaTimer == null) {  
  25.             mediaTimer = setInterval(function() {  
  26.                 // 获取媒体播放到的位置  
  27.                 my_media.getCurrentPosition(  
  28.                     // 获取成功后调用的回调函数  
  29.                     function(position) {  
  30.                         if (position > -1) {  
  31.                             setAudioPosition((position/1000) + " sec");  
  32.                         }  
  33.                     },  
  34.                     // 发生错误后调用的回调函数  
  35.                     function(e) {  
  36.                         console.log("Error getting pos=" + e);  
  37.                         setAudioPosition("Error: " + e);  
  38.                     }  
  39.                 );  
  40.             }, 1000);  
  41.         }  
  42.     }  
  43.       
  44.     // 暂停音频播放         
  45.     function pauseAudio() {  
  46.         if (my_media) {  
  47.             my_media.pause();  
  48.         }  
  49.     }  
  50.       
  51.     // 停止音频播放   
  52.     function stopAudio() {  
  53.         if (my_media) {  
  54.             my_media.stop();  
  55.         }  
  56.         clearInterval(mediaTimer);  
  57.         mediaTimer = null;  
  58.     }  
  59.       
  60.     // 创建Media对象成功后调用的回调函数         
  61.     function onSuccess() {  
  62.         console.log("playAudio():Audio Success");  
  63.     }  
  64.       
  65.     // 创建Media对象出错后调用的回调函数         
  66.     function onError(error) {  
  67.         alert('code: '    + error.code    + '\n' +   
  68.             'message: ' + error.message + '\n');  
  69.     }  
  70.       
  71.     // 设置音频播放位置  
  72.     function setAudioPosition(position) {  
  73.         document.getElementById('audio_position').innerHTML = position;  
  74.     }  
  75.   
  76. </script>  
  77. </head>  
  78. <body>  
  79.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  80.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  81.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  82.     <p id="audio_position"></p>  
  83. </body>  
  84. </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.         },  
  9.   
  10.         // 新建Media对象出错后调用的回调函数  
  11.         function(err) {  
  12.             console.log("recordAudio():Audio Error: "+ err.code);  
  13.         }  
  14.     );  
  15.   
  16.     // 录制音频  
  17.     mediaRec.startRecord();  
  18. }  
完整的范例:
  1. <!DOCTYPE html>  
        <html>  
        <head>      
        <title>Media Example</title>  
          
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
  2. <script type="text/javascript" charset="utf-8">  
  3.   
  4.     // 等待加载PhoneGap  
  5.     document.addEventListener("deviceready", onDeviceReady, false);   
  6.       
  7.     // 录制音频  
  8.     function recordAudio() {  
  9.         var src = "myrecording.mp3";  
  10.         var mediaRec = new Media(src, onSuccess, onError);  
  11.       
  12.         // 开始录制音频  
  13.         mediaRec.startRecord();  
  14.       
  15.         // 10秒钟后停止录制  
  16.         var recTime = 0;  
  17.         var recInterval = setInterval(function() {  
  18.             recTime = recTime + 1;  
  19.             setAudioPosition(recTime + " sec");  
  20.             if (recTime >= 10) {  
  21.                 clearInterval(recInterval);  
  22.                 mediaRec.stopRecord();  
  23.             }  
  24.         }, 1000);  
  25.     }  
  26.       
  27.     // PhoneGap加载完毕   
  28.     function onDeviceReady() {  
  29.         recordAudio();  
  30.     }  
  31.       
  32.     // 创建Media对象成功后调用的回调函数  
  33.     function onSuccess() {  
  34.         console.log("recordAudio():Audio Success");  
  35.     }  
  36.       
  37.     // 创建Media对象出错后调用的回调函数  
  38.     function onError(error) {  
  39.         alert('code: '    + error.code    + '\n' +   
  40.               'message: ' + error.message + '\n');  
  41.     }  
  42.       
  43.     // 设置音频播放位置  
  44.     function setAudioPosition(position) {  
  45.         document.getElementById('audio_position').innerHTML = position;  
  46.     }  
  47.   
  48. </script>  
  49. </head>  
  50. <body>  
  51.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  52.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  53.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  54.     <p id="audio_position"></p>  
  55. </body>  
  56. </html>  
iOS 的特异情况:
  • 用于录制的文件必须已经存在并是.wav类型,可以通过File API来进行文件的创建。
media.stop 
 
停止播放一个音频文件。
  1. media.stop();  
说明:
media.stop函数是一个用于停止播放音频文件的同步函数。
支持的平台:
  • Android
  • iOS
简单的范例:
  1. // 播放音频  
  2. function playAudio(url) {  
  3. // 播放url指向的音频文件  
  4. var my_media = new Media(url,  
  5.     // 新建Media对象成功后调用的回调函数  
  6.     function() {  
  7.         console.log("playAudio():Audio Success");  
  8.     },  
  9.     // 新建Media对象出错后调用的回调函数  
  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.     my_media.stop();  
  21.     }, 10000);          
  22. }  
完整的范例:
  1. <!DOCTYPE html>  
        <html>  
        <head>      
        <title>Media Example</title>  
          
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
  2. <script type="text/javascript" charset="utf-8">  
  3.   
  4.     // 等待加载PhoneGap  
  5.     document.addEventListener("deviceready", onDeviceReady, false);   
  6.       
  7.     // PhoneGap加载完毕  
  8.     function onDeviceReady() {  
  9.         playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");  
  10.     }  
  11.       
  12.     // 音频播放器  
  13.     var my_media = null;  
  14.     var mediaTimer = null;  
  15.       
  16.     // 播放音频  
  17.     function playAudio(src) {  
  18.         // 从目标播放文件创建Media对象  
  19.         my_media = new Media(src, onSuccess, onError);  
  20.       
  21.         // 播放音频  
  22.         my_media.play();  
  23.       
  24.         // 每秒更新一次媒体播放到的位置  
  25.         if (mediaTimer == null) {  
  26.             mediaTimer = setInterval(function() {  
  27.                 // 获取媒体播放到的位置  
  28.                 my_media.getCurrentPosition(  
  29.                     // 获取成功后调用的回调函数  
  30.                     function(position) {  
  31.                         if (position > -1) {  
  32.                             setAudioPosition((position/1000) + " sec");  
  33.                         }  
  34.                     },  
  35.                     // 发生错误后调用的回调函数  
  36.                     function(e) {  
  37.                         console.log("Error getting pos=" + e);  
  38.                         setAudioPosition("Error: " + e);  
  39.                     }  
  40.                 );  
  41.             }, 1000);  
  42.         }  
  43.     }  
  44.       
  45.     // 暂停音频播放  
  46.     function pauseAudio() {  
  47.         if (my_media) {  
  48.             my_media.pause();  
  49.         }  
  50.     }  
  51.       
  52.     // 停止音频播放         
  53.     function stopAudio() {  
  54.         if (my_media) {  
  55.             my_media.stop();  
  56.         }  
  57.         clearInterval(mediaTimer);  
  58.         mediaTimer = null;  
  59.     }  
  60.       
  61.     // 创建Media对象成功后调用的回调函数         
  62.     function onSuccess() {  
  63.         console.log("playAudio():Audio Success");  
  64.     }  
  65.       
  66.     // 创建Media对象出错后调用的回调函数  
  67.     function onError(error) {  
  68.         alert('code: '    + error.code    + '\n' +   
  69.               'message: ' + error.message + '\n');  
  70.     }  
  71.       
  72.     // 设置音频播放位置  
  73.     function setAudioPosition(position) {  
  74.         document.getElementById('audio_position').innerHTML = position;  
  75.     }  
  76.   
  77. </script>  
  78. </head>  
  79. <body>  
  80.     <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>  
  81.     <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>  
  82.     <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>  
  83.     <p id="audio_position"></p>  
  84. </body>  
  85. </html>  
media.stopRecord 
 
停止录制一个音频文件。
  1. media.stopRecord();  
说明:
media.stopRecord是用于停止录制一个音频文件的同步函数。
支持的平台:
  • 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.         },   
  9.   
  10.         // 新建Media对象出错后调用的回调函数   
  11.         function(err) {   
  12.             console.log("recordAudio():Audio Error: "+ err.code);   
  13.         }  
  14.     );   
  15.   
  16.     // 开始录制音频   
  17.     mediaRec.startRecord();   
  18.   
  19.     // 10秒后停止录制  
  20.     setTimeout(function() {   
  21.         mediaRec.stopRecord();   
  22.     }, 10000);   
  23. }  
完整的范例:
  1. <!DOCTYPE html>  
        <html>  
        <head>      
        <title>Media Example</title>  
          
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
  2.   
  3. <script type="text/javascript" charset="utf-8">   
  4.   
  5.     // 等待加载PhoneGap  
  6.     document.addEventListener("deviceready", onDeviceReady, false);    
  7.       
  8.     // 录制音频   
  9.     function recordAudio() {   
  10.         var src = "myrecording.mp3";   
  11.         var mediaRec = new Media(src, onSuccess, onError);   
  12.       
  13.         // 开始录制音频   
  14.         mediaRec.startRecord();   
  15.       
  16.         // 10秒后停止录制  
  17.         var recTime = 0;   
  18.         var recInterval = setInterval(function() {   
  19.             recTime = recTime + 1;   
  20.             setAudioPosition(recTime + " sec");   
  21.             if (recTime >= 10) {   
  22.                 clearInterval(recInterval);   
  23.                 mediaRec.stopRecord();   
  24.             }   
  25.         }, 1000);   
  26.     }   
  27.       
  28.     // PhoneGap加载完毕  
  29.     function onDeviceReady() {   
  30.         recordAudio();   
  31.     }   
  32.       
  33.     // 新建Media对象成功后调用的回调函数   
  34.     function onSuccess() {   
  35.         console.log("recordAudio():Audio Success");   
  36.     }   
  37.       
  38.     // 新建Media对象出错后调用的回调函数  
  39.     function onError(error) {   
  40.         alert('code: '    + error.code    + '\n' +    
  41.               'message: ' + error.message + '\n');   
  42.     }   
  43.       
  44.     // 设置音频播放位置   
  45.     function setAudioPosition(position) {   
  46.         document.getElementById('audio_position').innerHTML = position;   
  47.     }   
  48.   
  49. </script>  
  50. </head>  
  51. <body>  
  52.     <p id="media">Recording audio...</p>  
  53.     <p id="audio_position"></p>  
  54. </body>  
  55. </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回调函数传递给用户。
一个用户指定的回调函数,当媒体函数出现错误的时候被调用。
  1. function(error) {   
  2.     // 处理错误   
  3. }  
参数:
  • error:设备返回的错误信息。(MediaError类型)

更多信息参考:

PhoneGap中国:www.phonegap.cn

中文讨论组:groups.google.com/group/PhoneGapCN


http://blog.csdn.net/phonegapcn/article/details/6702883

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值