更改活动后停止mediaPlayer

时间:2016-01-31 08:06:30

标签: android media-player

我创建了一个包含2个活动的应用程序,第一个是listView,第二个是带有2个按钮的活动,播放和暂停音频文件。 我想在更改活动后停止播放音频(转到listView或home),但它在后台播放。 我尝试了“onBackPressed”方法,但是eclipse说错误。 请帮我 。 我的代码:

public class Poems extends Activity {

    MediaPlayer myMediaPlayer;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.poems_layout);

        getActionBar().setDisplayHomeAsUpEnabled(false);
        ActionBar bar = getActionBar();
        bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#e64e35")));

      
      
       
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            String my_key_number = extras.getString("key_number");

           
            TextView tv = (TextView) findViewById(R.id.textViewpp);
            Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Mj_Tehran.ttf");
            tv.setTypeface(tf);
            String stringName = "string_key_" + my_key_number;
            int resID = getResources().getIdentifier(stringName, "string", getPackageName());
            String stringToShow = getResources().getString(resID);
            tv.setText(stringToShow);

           
            LinearLayout layout2 = (LinearLayout) findViewById(R.id.linearLayout2);
            //  RelativeLayout layout = (RelativeLayout) findViewById(R.id.RelativeLayout1);
            String imageName = "pic_" + my_key_number;
            int resID2 = getResources().getIdentifier(imageName, "drawable", getPackageName());
            layout2.setBackgroundResource(resID2);

           
            String voiceName = "audio_" + my_key_number;
            int resID3 = getResources().getIdentifier(voiceName, "raw", getPackageName());
            final MediaPlayer mediaPlayer1 = MediaPlayer.create(Poems.this, resID3);
          
            Button playBtn = (Button) findViewById(R.id.btn_start);
            OnClickListener listenToStart = new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    mediaPlayer1.start();

                }
            };
            playBtn.setOnClickListener(listenToStart);

           
            Button stopBtn = (Button) findViewById(R.id.btn_stop);
            OnClickListener listenToPause = new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    mediaPlayer1.stop();
                    mediaPlayer1.release();

                }

            };

            stopBtn.setOnClickListener(listenToPause);

        }

    };



    @Override
    public void onBackPressed() {
        mediaPlayer1.stop();    *//mediaPlayer1 cannot be resolved*

        finish();
    }

2 个答案:

答案 0 :(得分:0)

你需要覆盖。

@override
    protected void onDestroy(){
    myMediaPlayer.stop();
    }

也会覆盖onPause()

@override
    protected void onPause(){
    myMediaPlayer.stop();
    }

答案 1 :(得分:0)

它是super.onBackPressed();,不能解决问题。

您的解决方案通过按钮调用myMediaPlayer.stop();来更改其他活动。