2016-03-01 63 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; 
 
     }

相關問題