1

私はAndroid用のストリーミングミュージックプレーヤーをやっています。MediaPlayerで試しました

mp.setDataSource("http://www.myServerPage.com/songUrl.mp3"); 
mp.prepare(); 
mp.start(); 

動作しますが、良くありません。準備状態は非常に遅く、多くの場合、アプリケーションはフリーズしています。

私はフォーラムやチュートリアルでたくさん検索しましたが、私が見る限り、これが一般的な方法です。

サーバーから音楽を再生したり、NDKやその他の入力ストリームで何か良いアドバイスをしたりするために、ストリームを開く別の方法であることを誰かが知っていますか?

助けてくれてありがとう。/ micke

4

1 に答える 1

1

メディア再生の記事は、リモートメディアソースの処理方法について非常に明確ですprepareAsync()。ソースを再生する準備ができたときに通知を受け取るようにリスナーを呼び出して設定します。

この理由はまさにあなたが経験していることです:

(...)prepare()の呼び出しは、メディアデータのフェッチとデコードを伴う可能性があるため、実行に時間がかかる場合があります。したがって、実行に時間がかかる可能性のあるメソッドの場合と同様に、アプリケーションのUIスレッドからメソッドを呼び出さないでください。これを行うと、メソッドが戻るまでUIがハングします。これは、ユーザーエクスペリエンスが非常に悪く、ANR(Application Not Responding)エラーが発生する可能性があります。

さらなる開発に役立つ可能性のあるいくつかの詳細情報と指針については、言及された記事を確認することをお勧めします。

于 2012-04-06T02:08:28.780 に答える