简体   繁体   English

在Android应用程式上停止背景音效

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM