2012-01-09 7 views
1

私のアプリケーションにはいくつかのアクティビティがあり、バックグラウンドで音楽が再生されています。これを実現するには、アプリケーションの起動時に音楽を開始し、背景に行く。簡単な回避策がありますか、またはすべてのアクティビティで再生を管理するシステムを実装する必要がありますか?前もって感謝します。複数のアクティビティアプリケーションでの音楽再生の処理

+0

このリンクは、サービスを使用せずに行うのに役立ちます。http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion – Arash

答えて

2

音楽ファイルは、いつでも起動して停止できるサービスを使用して再生できます。

+0

これは問題を解決しませんが、どこでサービスを停止するのか正確にはわからないからです。ユーザーは1つのアクティビティから前のアクティビティまで歩くことができます。その後、再生を停止する必要はありませんが、アプリケーション全体を終了することもできます。何か案は? – Egor

+0

ActivityManagerを調べて、アプリケーションの状態やすべての情報を確認してください。 –

0

これを実現するには、MediaPlayerサービスを使用して実装するのが一番です。

あなたが活動中でそれを実装する場合は、する必要があります -

  • 各アクティビティは、あなたがプレイしている現在の曲、再生の現在の時間を知っておく必要があります。
  • 新しいアクティビティを開始するときは、現在のアクティビティでメディアプレイヤーを停止し、新しいアクティビティでそのアクティビティを再起動してから、再生を開始する必要があります。
  • オーディオ再生に不具合があります。彼が活動を変え続けるならば、それはユーザーにとって迷惑になります。

    • あなたは音楽が再生されている新しい活動に通信する必要がある - あなたがサービスとしてそれを実装する場合

    。ブール値を渡すだけです(isplaying

  • 各アクティビティは、アプリが終了する前に最後のアクティビティかどうかを知る必要があります。この情報を知っていれば、フラグをチェックしてサービスを取得し、終了する前に閉じてください。
  • アクティビティ間の切り替え中に不具合が発生することはありません。
+0

実際には、サウンドトラックは1つだけあり、それは永遠にループします。主な問題は、ユーザーがハードウェアのホームボタンを押すだけで、音楽が再生され続けることができ、大きな問題であるため、すべてのアクティビティが最後になることです。 – Egor

+0

はい、それは私が話していた問題でした.1つのアクティビティでMediaplayerインスタンスを起動してそれを忘れることはできません。すべてのアクティビティでそれぞれに参加する必要があります。しかし、サービスではいつでもサービスを取得することができますが、何の不具合もなくバックグラウンドでサウンドを再生できます。 – bluefalcon

0

アプリケーションタグを拡張するクラスファイルを作成し、oncreate()メソッドで音楽の再生を開始します。 parentActivityから

public class MyApp extends Application { 
@Override 
public void onCreate() { 
     //start music in a service 
    } 
} 

、活動を呼び出すことにより、他の活動を開始するが:子アクティビティが終了したときに活動が終了したときにStartActivityForResult()、そう、parentActivityは知っているもの、それは活動に結果:: onActivityResult()。

この場合、メインの親アクティビティでメディアの再生を開始することができ、戻る時に音楽(サービス)を終了することができます。

すべてのアクティビティのHomeButtonClickをインセプトし、プレイヤーを一時停止/停止します(サービスを終了します)。

+0

まず、Launherアプリのみに許可されているホームボタンクリックを処理します。もう一つは、アプリケーションオブジェクトで音楽を再生し、他の場所で停止することが悪いことです。 –

関連する問題