Cordova官方插件Vibration、Media、NativeAudio使用简介

介绍Cordova官方提供的插件的使用方法

Posted by catface on January 1, 2015

cordova-plugin-vibration

  1. 安装(通过命令行)

    cordova plugin add cordova-plugin-vibration

  2. 使用

    navigator.vibrate(time) or navigator.vibrate([time])

    [例:navigator.vibrate(3000);]

  3. 注意

    • IOS无法控制震动时长(系统固定) && Windows和Blackberry时长范围(5000ms 至 8000ms).

    • Android和Windows可设定震动模式

      navigator.vibrate(pattern);

      [例:navigator.vibrate([1000, 1000, 3000, 1000, 5000]);]

  4. 取消

    navigator.vibrate(0); or navigator.vibrate([]); or navigator.vibrate([0]);

cordova-plugin-media(可后台播放)

  1. 安装

    cordova plugin add cordova-plugin-media

  2. 使用

    1. 初始化Media

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
       var media;
       media = new Media("/android_asset/www/media/example.mp3", 
           function() {
               alert("Media Init Success");
           }, 
           function(err) {
               alert("Error: " + err);
           }
       );
      
    2. play():media.play();

    3. pause():media.pause();

    4. stop():media.stop();

    5. release()[当Media资源不需要用时应该释放]:media.release();

    6. setVolume()[范围(0.0 - 1.0)]:media.setVolume(volume);

    7. seekTo()[手动设置播放位置]:media.seekTo(milliseconds);

    8. getDuration():返回Media时长(s),异常返回-1

      1
      2
      3
      4
      
       var length= media.getDuration();
       if (duration > -1) {
           alert("length== " + length);
       };
      
    9. getCurrentPosition()

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
       media.getCurrentPosition(
           function(position) {
               if (position > -1) {
                   alert("position");
               }
           }, 
           function(err) {
               alert(err);
           }
       );
      
    10. startRecord() & stopRecord()

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      // 创建文件对象
      var recordMedia = new Media(
          "storage/emulated/0/record.mp3", 
          function() {
              alert("Success");
          }, 
          function(e) {
              alert("Error" + e);
          }
      );
      		
      // 开始录音
      recordMedia.startRecord();
      
      1
      2
      
      // 停止录音
      recordMedia.stopRecord();
      

cordova-plugin-nativeaudio(针对HTML5游戏和音频应用所需的最小延迟,复调和并发)

  1. 安装

    cordova plugin add cordova-plugin-nativeaudio

  2. 使用

    1. preloadSimple():优化短视频/单镜头(最多五秒). 不能停止/循环.

    2. preloadComplex():可以停止/循环和用于多个声音. 可以在使用延迟参数的时间和使用.

    3. play: function (id, successCallback, errorCallback, completeCallback)`

    4. loop: function (id, successCallback, errorCallback)

    5. stop: function (id, successCallback, errorCallback)

    6. unload: function (id, successCallback, errorCallback)

    7. setVolumeForComplexAsset: function (id, volume, successCallback, errorCallback)

  3. 使用案例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
     if( window.plugins && window.plugins.NativeAudio ) {
    		
         // Preload audio resources 
         window.plugins.NativeAudio.preloadComplex( 'music', 'audio/music.mp3', 1, 1, 0, function(msg){
         }, function(msg){
             console.log( 'error: ' + msg );
         });
    		
         window.plugins.NativeAudio.preloadSimple( 'click', 'audio/click.mp3', function(msg){
         }, function(msg){
             console.log( 'error: ' + msg );
         });
    	 
         // Play 
         window.plugins.NativeAudio.play( 'click' );
         window.plugins.NativeAudio.loop( 'music' );
    	 
         // Stop multichannel clip after 60 seconds 
         window.setTimeout( function(){
    	 
             window.plugins.NativeAudio.stop( 'music' );
    				
             window.plugins.NativeAudio.unload( 'music' );
             window.plugins.NativeAudio.unload( 'click' );
    	 
         }, 1000 * 60 );
     }