Воспроизведение MP3 в разных классах - PullRequest
0 голосов
/ 10 апреля 2019

Я работаю над игрой и хочу, чтобы в фоновом режиме игры играла музыка. Я инициализирую игру в классе 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 {
....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...