2016-03-01 59 views
1

我正在构建一个应用程序使用PhoneGap /科尔多瓦,这是在后台播放一个MP3文件。我添加了Cordova Media插件,但是当我在浏览器中测试时,我得到的“媒体”未定义,就好像它找不到该插件。播放本地MP3 Android - 科尔多瓦“媒体未定义”

$(document).ready(function() { 

    var bgMedia = new Media(getPhoneGapPath('timer')); 
    bgMedia.play(); 

    function getPhoneGapPath(audiofile) { 

     var path = window.location.pathname; 
      path = path.substr(path, path.length - 23); 
      path = path + 'audio/'+audiofile+'.mp3'; 
     return 'file://' + path; 
    } 
}); 

我已经确认该文件的路径是正确的。我的问题是双重的,我怎样才能让媒体插件配置正确,实际上更糟糕(我错过了另一个步骤)以及调用和播放文件的正确方法是什么?

使用当前版本的Cordova。

+0

您是否安装了插件? – manzapanza

+0

是的,我的帖子表明我有。 – plumwd

回答

0

Cordova插件仅适用于设备或仿真器。 如果您在浏览器中运行该项目,您需要嘲笑它们以防止应用程序崩溃。

当我运行在浏览器中的项目我取消这条线从index.html的:

<script src="js/mocks/plugin.media.js"></script> 

plugin.media.js:

window.Media = { 
    get: function(){}, 
    play: function(){}, 
    stop: function(){}, 
    seekTo: function(){}, 
    pause: function(){}, 
    getDuration: function(){}, 
    getCurrentPosition: function(){}, 
    startRecord: function(){}, 
    stopRecord: function(){}, 
    release: function(){}, 
    setVolume: function(){}, 
    onStatus: function(){} 
}; 
+0

我的目录中没有那个js文件。另外,当我在我的设备(iPad和Galaxy Tab 3)上编译和运行时,它也会失败。 – plumwd

+0

如果您需要[mock](https://en.wikipedia.org/wiki/Mock_object)Media插件,则需要创建此文件。在设备上运行时,您收到了什么错误? – manzapanza

1

一些挖我是能够使后以下工作:

// Wait for device API libraries to load 
 
     // 
 
     document.addEventListener("deviceready", onDeviceReady, false); 
 

 
     // device APIs are available 
 
     // 
 
     function onDeviceReady() { 
 
      playAudio(); \t \t \t 
 
     } 
 

 
     // Audio player 
 
     // 
 
     var my_media = null; 
 
     var mediaTimer = null; 
 

 
     function getCordovaPath() { 
 

 
      var path = window.location.pathname; 
 
\t \t \t if (device.platform == "Android") { 
 
\t \t \t path = "/android_asset/www/"; 
 
\t \t \t } 
 
\t \t \t // path = cordova.file.applicationDirectory + 'www/' 
 
      // path = path.substr(path, path.length - 23); 
 

 
      //path = path + 'audio/'+audiofile+'.mp3'; 
 
      return 'file://' + path; 
 
     } 
 

 
     // Play audio 
 
     // 
 
     function playAudio() { 
 
      // Create Media object from src 
 
      //my_media = new Media(src, onSuccess, onError); 
 
      my_media = new Media(getCordovaPath() + 'audio/timer.mp3', 
 
      // success callback 
 
      function() { console.log("playAudio():Audio Success"); }, 
 
      // error callback 
 
      function (err) { console.log("playAudio():Audio Error: " + err); }); 
 

 
      // Play audio 
 
      my_media.play(); 
 

 
      
 
     } 
 

 
     // Pause audio 
 
     // 
 
     function pauseAudio() { 
 
      if (my_media) { 
 
       my_media.pause(); 
 
      } 
 
     } 
 

 
     // Stop audio 
 
     // 
 
     function stopAudio() { 
 
      if (my_media) { 
 
       my_media.stop(); 
 
      } 
 
     } 
 

 
     // onSuccess Callback 
 
     // 
 
     function onSuccess() { 
 
      console.log("playAudio():Audio Success"); 
 
     } 
 

 
     // onError Callback 
 
     // 
 
     function onError(error) { 
 
      alert('code: ' + error.code + '\n' + 
 
        'message: ' + error.message + '\n'); 
 
     } 
 

 
     // Set audio position 
 
     // 
 
     function setAudioPosition(position) { 
 
      document.getElementById('audio_position').innerHTML = position; 
 
     }

相关问题