2011-03-07 17 views
3

私はいくつかのアクティビティを持つ簡単なアプリケーションを持っています。ユーザーがアプリを使用している間、私はいくつかのバックグラウンドミュージックを演奏していました。また、ユーザーがアプリを使用している間は全面的に再生し、アプリがフォアグラウンドになっていないときは再生しないようにします。Androidアプリのバックグラウンドで音楽を再生する

私はいくつかのことを読み、試しました。私はオプションメニューのような最初のアクティビティでMediaPlayerを起動しようとしましたが、次のアクティビティでランダムに終了したり停止したりすることはありません。最初のアクティビティでMediaPlayerを開始しようとしましたが、次のアクティビティを開始するためにボタンを押すと、現在の位置時間を保存し、MediaPlayerを一時停止して次のアクティビティに時間を渡してから、次の活動を再開してください。この方法は問題ありませんが、ユーザーが戻るボタンを押すと、何かが重なり始め、アプリが表示されていないときにも再生されます。

私はonResume()とonPause()も使用しましたが、これは一度に1つのアクティビティに対してのみ有効です。私はサービスを作る必要がありますか?以前はサービスを利用したことはありませんでした。アプリが表示されていないときに音楽を停止するとは思われません。

私はアプリにいくつかのバックグラウンドミュージックを追加したいだけです。私はそれがこれより簡単だろうと思った。どんな助けやアイデアも高く評価されます。これが可能であるかどうかも知っていると助けになるでしょう。

+0

ような何かを? – Piyush

+0

参照http://stackoverflow.com/questions/11490236/android-comprehensive-failproof-music-service-across-multiple-activites –

答えて

0

サービスを作成してonResumeアクティビティにバインドしてアンバインドすると、すべてのアクティビティがバインドされていないときにサービスが終了すると、アプリケーション全体を音楽に変換する最も良い方法となります

uは非同期クラスを使用してみましたサービスを作成し、その

public ServiceConnection Scon = new ServiceConnection() { 

    public void onServiceConnected(ComponentName name, IBinder binder) 
    { 
     mServ = ((DMusic.ServiceBinder) binder).getService(); 
    } 

    public void onServiceDisconnected(ComponentName name) 
    { 
     mServ = null; 
    } 
}; 

public void doBindService() 
{ 
    if (!mIsBound) 
    { 
     bindService(new Intent(this, DMusic.class), Scon, Context.BIND_AUTO_CREATE); 
     mIsBound = true; 
    } 
} 

public void doUnbindService() 
{ 
    if (mIsBound) 
    { 
     unbindService(Scon); 
     mIsBound = false; 
    } 
} 


@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    doBindService(); 
} 




@Override 
public void onStop() 
{ 
    super.onStop(); 
    doUnbindService(); 
} 
関連する問題