Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新打开活动后不能暂停mediaplayer_Java_Android_Android Mediaplayer - Fatal编程技术网

Java 重新打开活动后不能暂停mediaplayer

Java 重新打开活动后不能暂停mediaplayer,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,在我的MainActivity.java中有一个对象MediaPlayer,当您单击playB按钮并按pauseB暂停时,它会播放声音。一切正常。但是,如果重新打开应用程序并单击“暂停”b,声音将继续播放。如何修复它?如何捕捉当前正在播放的MediaPlayer public class MainActivity extends ActionBarActivity { Button playB; Button pauseB; Context c; Medi

在我的
MainActivity.java
中有一个对象
MediaPlayer
,当您单击
playB
按钮并按
pauseB
暂停时,它会播放声音。一切正常。但是,如果重新打开应用程序并单击“暂停”b,声音将继续播放。如何修复它?如何捕捉当前正在播放的
MediaPlayer

    public class MainActivity extends ActionBarActivity {
    Button playB;
    Button pauseB;
    Context c;
    MediaPlayer mp;

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

        final Button playB = (Button) findViewById(R.id.playB);
        Button pauseB = (Button) findViewById(R.id.pauseB);


            mp = mp.create(this, R.raw.fawaid_1);
        playB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mp.start();
            }
        });
        pauseB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mp.pause();
            }
        });
    }
} 

重新打开应用程序时,
onCreate
再次被调用,因此您有了一个新的
MediaPlayer
对象,从那时起,“播放”和“暂停”按钮将控制新的播放器对象,而不是上一个。这就是为什么你的暂停按钮不会影响在你最小化应用程序之前启动的声音。如果你现在按播放按钮,你会有两种声音同时播放

解决此问题的一种方法是检查媒体播放器是否已初始化:

if(mp==null)
mp = MediaPlayer.create(this, R.raw.fawaid_1);

建议在开发音乐播放器时使用AIDL服务。 原因

  • 返回活动后,可以再次保留控件

  • 执行进程间通信很容易

  • 这是一个在背景上运行的简单音乐播放器

    我在这个音乐播放器里用的那首歌是雪花乐队的


    问题是我在这里声明了对象
    MediaPlayer
    公共类MainActivity扩展了ActionBarActivity{Button playB;Button pauseB;Context c;MediaPlayer mp;
    它已经创建并且状态为
    !=null
    。不是吗?@JoeSilent您声明了一个变量,然后通过调用
    MediaPlayer.create()
    方法创建了一个对象。在调用该方法之前,
    mp
    将是
    null