[英]Stop background audio on android app
im working on simple audio application but i have a major problem because audio wont stop when user press home button or move app to background 我在简单的音频应用程序上工作,但我遇到了一个主要问题,因为当用户按下主屏幕按钮或将应用程序移至后台时,音频不会停止
i tried to use onPause() but it not work for me please can anyone help ? 我尝试使用onPause(),但对我不起作用,任何人都可以帮忙吗?
import android.media.MediaPlayer;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button1 = (Button) findViewById(R.id.btn1);
final MediaPlayer angry = MediaPlayer.create(MainActivity.this, R.raw.angry);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(angry.isPlaying()) {
angry.pause();
button1.setText("Play");
} else {
angry.start();
angry.setLooping(true);
button1.setText("Pause");
}
}
});
You should pausing MediaPlayer instance in onPause()
method. 您应该在
onPause()
方法中暂停MediaPlayer实例。
But from your code, your final MediaPlayer angry
is only exist in onCreate()
method as local object variable. 但是从您的代码来看,
final MediaPlayer angry
只在onCreate()
方法中作为本地对象变量存在。 To fix your problem, you need to move out your angry
object from onCreate()
method, so you can access it from onPause()
method. 要解决您的问题,您需要从
onCreate()
方法中移出angry
对象,以便可以从onPause()
方法中访问它。 Here's example: 例子如下:
import android.media.MediaPlayer;
public class MainActivity extends ActionBarActivity {
MediaPlayer angry; //Now it is here
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
angry = MediaPlayer.create(MainActivity.this, R.raw.angry);
And you should pause it in onPause()
method like this: 您应该像这样在
onPause()
方法中将其暂停:
@Override
public void onPause ()
{
if (angry != null)
{
angry.pause();
angry.stop();
}
super.onPause();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.