2016-05-06 8 views
2

Android 6(Marshmallow)へのアップグレードでインターネットラジオステーションのプレーヤーアプリが失敗しました。テストするために、Mediaプラグインのドキュメントからサンプルコード(下記)をコピーし、最新のCordova(6.1.1)、Androidプラットフォーム(5.1.1)、ブラウザプラットフォーム(4.1.0)、Mediaプラグイン(2.3.0)。また、必要なホワイトリストステートメントを追加しました(下記)。ブラウザプラットフォームでは、インターネットファイルとインターネットストリームの両方を再生します。 Androidプラットフォームでは、mp3インターネットストリームを開始できません。コンソールログは、ストリームが1秒以内に終了し、OnSuccessコールバックが呼び出されたことを示します。エラーメッセージは表示されず、単に「playAudio():Audio Success」と記録され、終了します。Android 6(Marshmallow)でmp3インターネットオーディオストリーミングでCordova Mediaプラグインが失敗する

プレーヤーコード

var src = "http://audio.wgbh.org:8104"; 
 
my_media = new Media(src, 
 
    // success callback 
 
    function() { 
 
     console.log("playAudio():Audio Success"); 
 
    }, 
 
    // error callback 
 
    function (err) { 
 
     console.log("playAudio():Audio Error: " + err); 
 
}

config.xmlのホワイトリストがされている(はい安全ではない、私はそれ以降の修正します)

<plugin name="cordova-plugin-whitelist" source="npm" spec="1" /> 
<allow-navigation href="*" /> 
<allow-intent href="*" /> 
<access origin="*" launch-external="yes" /> <!-- Required for iOS9 --> 

12月から、以前のスタックオーバーフローの質問2015年も同じ問題 "cordova media plugin stopped working on Android 6"でした。これは、AudioPlayerへのJavaパッチを示唆しています。私はその変更を行い、テストアプリを再構築しました。しかしそれは何も変わらなかった。その変更を行うにはコルドバを十分に構築していますか?

BTWは、USBに接続された実際の電話機でテストし、Chromeのツールを使用してログを確認します。

私には何が欠けていますか?または、これはMediaプラグインのJavaコードまたはAndroidプラットフォームのバグですか?

答えて

2

私自身の質問に答えるために、以前にcordova media plugin stopped working on Android 6で提供されていたパッチが私の問題に答えています。 私の間違いは間違った場所でそれを適用していました。プラットフォーム/アンドロイド/ src/org/apache/cordova/media/AudioPlayer.javaのコードを直接変更して、アプリケーションを再構築すると機能します。 (私は代わりにプラグインコードにパッチを当てていた)。 354行目をコメントアウトすると、

//this.seekToPlaying(this.seekOnPrepared); 

それはトリックです。

+0

すごくありがとう!これは完璧に機能しました! – Fastmover

関連する問題