Я работаю над игрой и хочу, чтобы в фоновом режиме игры играла музыка. Я инициализирую игру в классе Game перед тем, как перейти к просмотру игры. У меня также есть sharedPref, в котором есть логическое значение, позволяющее решить, воспроизводить ли музыку в зависимости от того, как пользователь установил настройки в приложении ранее. У меня есть другой класс SoundService, который должен проигрывать музыку по циклу, пока игра не закончится, но она никогда не начнет играть. Любые идеи о том, почему это может быть?
Мне удалось воспроизвести музыку, когда я создал медиаплеер в классе Game, поскольку это занятие. Однако, как только он переключился на режим неактивной игры, он перестал играть через несколько секунд.
public class Game extends Activity {
public static String user;
public static comHandler com;
boolean value;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
value = getIntent().getExtras().getBoolean("isOn?");//from sound settings
if(value) {
startService(new Intent(Game.this, SoundService.class));
}
setContentView(new GameView2(this));
//setContentView(new GameView(this));
}
protected void onDestroy() {
//stop service and stop music
stopService(new Intent(Game.this, SoundService.class));
super.onDestroy();
}
}
Класс SoundService.java:
public class SoundService extends Service {
MediaPlayer player;
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
super.onCreate();
player = MediaPlayer.create(this, R.raw.tune); //select music file
player.setLooping(true); //set looping
player.setVolume(100,100);
}
public int onStartCommand(Intent intent, int flags, int startId) {
player.start();
return Service.START_NOT_STICKY;
}
public void onDestroy() {
player.stop();
player.release();
stopSelf();
super.onDestroy();
}
}
класс GameView2.java:
public class GameView2 extends SurfaceView implements SurfaceHolder.Callback {
....
}