アンドロイドの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を呼び出して、どこに残っているかを渡してそこから開始することができます。
イム)ので、私はSTARTSERVICEでそれを開始する必要がありますそれに縛られていますか? –
はい。ビデオで述べたように、ある時点でサービスを停止したい場合は、startService()、bindService()、unbindService()、stopService()の順番を守ってください。 – Distwo
私はアクティビティでstartService()を使用し、後でフラグメント内でバインドする必要があります。フラグメント上でそのサービスの参照を取得するにはどうすればよいですか? –