2016-12-06 4 views
0

アンドロイドのMediaPlayerに問題があります。メディアプレーヤーを使用するすべてのメソッドがあるカスタム実装者を使用するサービスの開始、一時停止、再生などアクティビティからフラグメントに切り替えるときにAndroid MediaPlayerが再生されない

プレーヤーは正常に動作していますが、すべてのアクティビティでオーディオを聴き続けることができるため、最小化するボタンがあります。BaseActivityで作成したBaseFragmentのオーディオを開始または再開する必要があります。オーディオ。私はメディアプレーヤーの活動を閉じたときに

私はプレーヤーを一時停止し、私はこれが、この

AudioPlayerService.unRegister(this); 

のようなプレーヤーのサービスの登録を解除する方法サービス

//Connection with a service 
private ServiceConnection mConnection = new ServiceConnection() { 
    @Override 
    public void onServiceConnected(ComponentName name, IBinder service) { 

     Log.d(">>>>>", "Service starts on fragment"); 
     AudioPlayerService.LocalBinder mLocalBinder = (AudioPlayerService.LocalBinder) service; 
     audioServiceObject = mLocalBinder.getService(); 
     mBounded = true; 

     if (audioServiceObject != null) { 
      audioServiceObject.startAudioPlayer(audio_path, media_length); 
      AudioPlayerService.register(this); 
      audioServiceObject.pauseAudioPlayer(); 
     } 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     Log.d(">>>>>", "Service end"); 
     mBounded = false; 
     audioServiceObject = null; 
    } 
}; 

にBaseFragmentに接続イム私はBaseActivityの下のプレーヤーを呼び出します

PlayerBottom newAudioPlayer = new PlayerBottom(); 
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
    transaction.add(R.id.audioPlayerFrame, newAudioPlayer); 
    transaction.commit(); 

ボトムプレイヤーは、アクティビティが最小化されたときに残っていた位置なので、MediaPlayer.seektoを呼び出して、どこに残っているかを渡してそこから開始することができます。

答えて

1

サービスをどのように開始するのかよく分かりませんが、あなたのアクティビティにバインドして開始すると思います。 アクティビティを削除すると、サービスからバインドが解除され、アクティビティが終了します。

bindService()の代わりにstartService()を呼び出してサービスを開始する必要があります。

このような場合は、ここでのサービスについての詳細を参照することもできます。違いを説明するServices Documentation

良いビデオ:bindService(で始まるPerf matters video

+0

イム)ので、私はSTARTSERVICEでそれを開始する必要がありますそれに縛られていますか? –

+0

はい。ビデオで述べたように、ある時点でサービスを停止したい場合は、startService()、bindService()、unbindService()、stopService()の順番を守ってください。 – Distwo

+0

私はアクティビティでstartService()を使用し、後でフラグメント内でバインドする必要があります。フラグメント上でそのサービスの参照を取得するにはどうすればよいですか? –

関連する問題