Проблема с запуском сервиса. Как это исправить? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть начальное действие, использующее службы для воспроизведения фонового звука, и через 5 секунд загружается другое действие.Проблема во втором упражнении: звук не загружается или служба не работает ... Я не уверен, что происходит.

Звук работает в первом действии при запуске приложения.

вот первая операция:

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        //remove window title and make it fullscreen
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        //bind activity
        setContentView(R.layout.start_activity);
        ButterKnife.bind(this);

        Intent intent = new Intent(StartActivity.this, SoundService.class);
        intent.putExtra("filename", "audiostart");
        //start service and start music
        startService(intent);

        int TIME_OUT = 5000;
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(StartActivity.this, AvatarsActivity.class);
                startActivity(i);
                finish();
            }
        }, TIME_OUT);


        Log.d(TAG, "APP Started!");
    }

    @Override
    protected void onDestroy() {
        //stop service and stop music
        stopService(new Intent(StartActivity.this, SoundService.class));
        super.onDestroy();
    }

и вторая операция:

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.avatars_activity);
        ButterKnife.bind(this);

        Intent intent = new Intent(AvatarsActivity.this, SoundService.class);
        intent.putExtra("filename", "audioavatars");
        //start service and start music
        startService(intent);
    }

    @Override
    protected void onDestroy() {
        //stop service and stop music
        stopService(new Intent(AvatarsActivity.this, SoundService.class));
        super.onDestroy();
    }

вот услуга:

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }


    public void onCreate() {
        player = MediaPlayer.create(this, R.raw.audio);
        player.setLooping(false);
    }

    public int onStartCommand(Intent intent, int flags, int startId) {
        if(intent != null){
            String mFilename = intent.getStringExtra("filename");
            Toast toast = Toast.makeText(getApplicationContext(), "Filename: " + mFilename, Toast.LENGTH_SHORT);
            toast.show();
        }

        player.start();
        return Service.START_NOT_STICKY;
    }

    public void onDestroy() {
        player.stop();
        player.release();
        stopSelf();
        super.onDestroy();
    }
  1. Мне нужен фоновый звук, когда второе действие загружается через 5 секунд, прошедших в первом действии.

  2. И вторая проблема заключается в том, что я хочу передать переменную в методе onCreate в сервисес каким звуком играть в зависимости от активности.(Это задание, я думаю, что могу это сделать, но не больно спрашивать мнения, как это сделать)

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Вы начинаете второе действие с 5-секундной задержкой и сразу же, после того, как намерение начала очереди, вы вызываете finish () для первого действия, которое вызовет обратный вызов onDestroy для того же действия.В onDestroy () этого 1-го действия вы реализовали остановку службы, которая вызывает остановку службы.

Удалите эту реализацию onDestroy () в обеих операциях и предоставьте пользователю способ явно останавливать службу (нажав на кнопку или что-то еще) вместо того, чтобы делать это в обратном вызове жизненного цикла действия.

0 голосов
/ 20 июня 2019

Ваш код выглядит нормально. Но вы зарегистрировали свой сервис в файле манифеста? Пожалуйста, проверьте ваш манифест. Ваш сервис не зарегистрирован может быть возможной причиной.

...