アプリに MediaPlayer クラスを実装していて、バックグラウンドで音楽を再生したいので、Activity または BroadcastReciever の代わりに Service を使用しました。問題は、ユーザーが存在するかアプリを一時停止すると、音楽が停止せずに再生されることです。onStop メソッドと onPause メソッドを追加しましたが、問題は解決しません。また、Activity クラスのように super.onPause() メソッドを呼び出すことはできません。
いくつかの調査の結果、アプリが一時停止または停止してもサービスがアクティブなままであることがわかりました(これが本当かどうかはわかりません)が、私の経験ではこれは本当だと思います。私は何をすべきか?google と stackoverflow で答えを検索しましたが、答えが得られませんでした。
ここにコードがあります。
package in.isuru.animation;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
public class PlayMusic extends Service{
private static final String TAG = null;
MediaPlayer player;
public void onCreate(){
super.onCreate();
Log.d(TAG, "Music service started onCreate()");
player = MediaPlayer.create(this, R.raw.oh_holy_night);
player.setLooping(true);
//player.setVolume(100, 100);
}
public int onStartCommand(Intent intent, int flags, int startId){
player.start();
Log.d(TAG, "Player started!");
if(player.isLooping() != true){
Log.d(TAG, "Player not playing any file.");
}
return 1;
}
public void onStart(Intent intent, int startId){
}
public IBinder onUnBinder(Intent arg0){
return null;
}
public void onStop(){
player.stop();
player.release();
}
public void onPause(){
player.stop();
player.release();
}
public void onDestroy(){
player.stop();
player.release();
Log.d(TAG, "Player destroyed");
}
public void onLowMemory(){
player.release();
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}