PhoneGap中的相关媒体源

Cor*_*ius 3 audio cross-platform cordova

我想用PhoneGap(Cordova 2.2.0)开发一种媒体播放器,并将Adobe的Phonegap Build用于其他平台.这意味着几乎所有东西都必须是相对的;)我的应用程序的开发是在Android 2.3(最小目标)上.

这是我的问题:

当它来自net(http://...)时,文件的路径运行良好,或者已经给出了如下所示的确定路径(/android_asset/www/media/song.mp3).但是,当试图相对(media/song.mp3)时,歌曲将不会开始播放,给我一个错误代码:

MediaPlayer:错误(1,-2147483648)

如果我再次按下播放,我会收到更多错误:

MediaPlayer的:启动名为状态0 //意思是没有文件
的MediaPlayer:错误(-38,0)
的MediaPlayer:错误(-38,0)

有没有办法让它相对有效,而不需要:

if(Android){
  src=...
}
if(iOS){
  src=...;
}...
Run Code Online (Sandbox Code Playgroud)

上述选项非常耗时,如果其中一个平台的路径发生变化,则会出现错误.

这是缩小的Javascript代码:

var song;
var app = {
  initialize : function() {
    this.bindEvents();
  },
  bindEvents : function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
  },
  onDeviceReady : function() {
    app.receivedEvent('deviceready');
    song = new Media("/android_asset/www/media/song.mp3");
    console.log("The song is: " + (song.mediaStatus!=0?"okay":"none"));
    $('#play').click(function() {
      song.play();
      console.log("Song started");
    });
    $('#pause').click(function() {
      song.pause();
      console.log("Song paused");
    });
    $('#stop').click(function() {
      song.stop();
      console.log("Song stopped");
    });
  },
  receivedEvent : function(id) {
    console.log('Received Event: ' + id);
  }
};
Run Code Online (Sandbox Code Playgroud)

如果还需要说什么,请告诉我.

Sim*_*ald 8

在运行PhoneGap的所有操作系统上,Media API未正确规范化.如果您想在Android上的资源文件夹中播放某些内容,则需要指定完整路径.您可能最好使用device.name属性来检测您是否在Android上并且在/ android_asset/www / path之前.

  • 以下是一种可以修复它的方法http://simonmacdonald.blogspot.ca/2012/01/on-eleventh-day-of-phonegapping.html (2认同)