Android: onResume/onPause и медиаплеер

У меня есть два мероприятия, домашнее задание и ближе. У меня в домашнем задании играет песня, но при нажатии кнопки медиаплеер останавливается и открывается ближе. В моей функции onPause я пытаюсь приостановить медиаплеер, но это не сработает, открывается более близкая активность, а музыка все еще играет. Раньше я настраивал его так, чтобы в прослушивателе кнопок на домашнем задании активности медиаплеер приостанавливался, но медиаплеер не возобновлялся, когда я устанавливал его в onResume. Я думаю, что это может быть проблема с областью действия для медиаплеера, может ли кто-нибудь помочь мне с этим?

package com.cis.lab4;

import java.io.IOException;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Homework extends Activity {

    final MediaPlayer mediaplayer = new MediaPlayer();
    int media_length;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_homework);
        setPlayer();
        mediaplayer.start();
        Button next = (Button) findViewById(R.id.homeworkContinue);
        final Intent openCloser = new Intent(this, EndActivity.class);
        next.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                startActivity(openCloser);

            }

        });
    }

    public void onResume(Bundle savedInstanceState){
        super.onResume();
        mediaplayer.seekTo(media_length);
        mediaplayer.start();
    }

    public void onPause(Bundle savedInstanceState){
        mediaplayer.pause();
        media_length = mediaplayer.getCurrentPosition();
    }


    public void setPlayer(){
        AssetFileDescriptor afd;
        try {
            afd = getAssets().openFd("rev.mp3");
            mediaplayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
            mediaplayer.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

person Jarryd Goodman    schedule 22.04.2013    source источник


Ответы (1)


вы не переопределили onPause должным образом.

попробуйте вместо этого onPause:

    @Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();

    mediaplayer.pause();
    media_length = mediaplayer.getCurrentPosition();
}

это должно работать нормально. вы должны сделать то же самое для onResume. спокойной ночи.

person Gladi    schedule 22.04.2013