播放本地MP3 Android - Cordova“Media Undefined”

时间:2016-03-01 16:52:45

标签: android cordova cordova-plugins

我正在使用PhoneGap / Cordova构建一个应用程序,即在后台播放mp3文件。我添加了Cordova Media插件,但是当我在浏览器中测试时,我发现“Media”未定义,好像它找不到插件一样。

$(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。

2 个答案:

答案 0 :(得分:3)

经过一番挖掘,我能够完成以下工作:



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

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

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

         function getCordovaPath() {

            var path = window.location.pathname;
			if (device.platform == "Android") {
			   path = "/android_asset/www/";
			} 
			// 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;
        }




答案 1 :(得分: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(){}
};