import
androidx.annotation.RequiresApi;
import
androidx.appcompat.app.AppCompatActivity;
import
android.content.Context;
import
android.media.AudioAttributes;
import
android.media.AudioFocusRequest;
import
android.media.AudioManager;
import
android.media.MediaPlayer;
import
android.os.Build;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.Button;
import
java.io.IOException;
@RequiresApi
(api = Build.VERSION_CODES.O)
public
class
MainActivity
extends
AppCompatActivity {
MediaPlayer mediaPlayer;
AudioManager audioManager;
AudioAttributes playbackAttributes;
AudioManager.OnAudioFocusChangeListener audioFocusChangeListener =
new
AudioManager.OnAudioFocusChangeListener() {
@Override
public
void
onAudioFocusChange(
int
focusChange) {
if
(focusChange == AudioManager.AUDIOFOCUS_GAIN) {
mediaPlayer.start();
}
else
if
(focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) {
mediaPlayer.pause();
mediaPlayer.seekTo(
0
);
}
else
if
(focusChange == AudioManager.AUDIOFOCUS_LOSS) {
mediaPlayer.release();
}
}
};
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
playbackAttributes =
new
AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build();
AudioFocusRequest focusRequest =
new
AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
.setAudioAttributes(playbackAttributes)
.setAcceptsDelayedFocusGain(
true
)
.setOnAudioFocusChangeListener(audioFocusChangeListener)
.build();
final
int
audioFocusRequest = audioManager.requestAudioFocus(focusRequest);
Button bPlay = findViewById(R.id.playButton);
Button bPause = findViewById(R.id.pasueButton);
Button bStop = findViewById(R.id.stopButton);
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.music);
bPlay.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
if
(audioFocusRequest == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
mediaPlayer.start();
}
}
});
bPause.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
mediaPlayer.pause();
}
});
bStop.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
mediaPlayer.stop();
try
{
mediaPlayer.prepare();
}
catch
(IOException e) {
e.printStackTrace();
}
}
});
}
}