按主页或最近通话按钮后音乐不再播放

Music doesn't play again after I press home or recents button

我有一个带有播放或暂停音乐按钮的应用程序。播放音乐时按后退按钮可暂停音乐,再次打开应用程序可在按播放按钮后恢复音乐。但这不适用于主页或最近按钮。音乐会暂停,但在重新打开应用程序并按下播放按钮后,音乐才会播放,直到强制关闭。这是代码:

package com.example.firozkaoo2222.myapplication;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import static com.example.firozkaoo2222.myapplication.R.raw.police;

public class MainActivity extends AppCompatActivity {

private MediaPlayer policeSound = MediaPlayer.create(this, police);

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button policeSounds = this.findViewById(R.id.police);

    policeSounds.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (policeSound == null) {
                policeSound = MediaPlayer.create(getApplicationContext(), R.raw.police);
            }

            if (policeSound.isPlaying()) {
                policeSound.pause();
            } else {

                policeSound.start();
            }
        }
    });
}

@Override
protected void onResume() {
    super.onResume();
    if (policeSound != null) {
        policeSound = MediaPlayer.create(this, R.raw.police);
        policeSound.start();
    }

}

@Override
public void onPause() {
    super.onPause();
    if (policeSound.isPlaying())
        policeSound.pause();
}

//Back button pressed.
@Override
public void onBackPressed() {
    super.onBackPressed();
    if (policeSound.isPlaying())
        policeSound.pause();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    policeSound.stop();
    policeSound = null;
}

}

如果您按下主页按钮,应用程序会转到后台,当您从后台返回时,您应该重写 onResume() 方法;

代码:

public class MainActivity extends AppCompatActivity {

    //THIS IS YOUR LAST MISTAKE. IF YOU TRY TO CREATE THE OBJECT WITH THE CONTEXT AND THE RESOUERCES
    //WHEN THE ACTIVITY IS NOT CREATED YET, YOUR APP CRASH
    //private MediaPlayer policeSound = MediaPlayer.create(this, R.raw.police);
    private MediaPlayer policeSound;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button policeSounds = this.findViewById(R.id.police);

        policeSounds.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (policeSound == null) {
                    policeSound = MediaPlayer.create(getApplicationContext(), R.raw.police);
                }

                if (policeSound.isPlaying()) {
                    policeSound.pause();
                } else {

                    policeSound.start();
                }
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (policeSound != null) {
            policeSound = MediaPlayer.create(this, R.raw.police);
            policeSound.start();
        }

    }

    @Override
    public void onPause() {
        super.onPause();
        if (policeSound.isPlaying())
            policeSound.pause();
    }

    //Back button pressed.
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        if (policeSound.isPlaying())
            policeSound.pause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        policeSound.stop();
        policeSound = null;
    }
}

希望对你有所帮助。