有没有播放音频? (在Android中)

时间:2016-07-13 13:57:48

标签: java android audio android-mediaplayer

我的应用程序中有两个活动,第一个(MainActivity.java)有一个按钮来调用活动二(player.java),第二个活动有音频和一个停止按钮。

所以我面临的主要问题是......

当我点击从第二个活动开始第二个活动时,它转到另一个活动, 因为我编程它自动启动音频(我希望它自动启动)我按停止音频停止...然后再回到MainActivity调用第二个活动(player.java)它工作正常...再次正确启动音频..当我按下音频继续播放时,一切正常。(这就是我想要的)

但是,如果在没有停止音频的情况下按回来,并再次启动第二个活动(player.java),它会再次启动音频而不会停止第一个......并且相同的音轨会播放两次......

我想一次只播放一首曲目...如果正在播放任何其他音频,请在我再次开始该活动时停止播放。

这是我的代码......

MainActivity.java

package com.test.myapp;

import android.app.*;
import android.os.*;
import android.content.*;
import android.widget.*;
import android.view.*;

public class MainActivity extends Activity {
  Button btn;

    @Override
    public void onCreate(Bundle savedIntanceState) {
        super.onCreate(savedIntanceState);
        setContentView(R.layout.activity_main);

        btn = (Button) findViewById(R.id.button);

        public void clicked(View v){
            if (v.getId() == R.id.button){
              Intent i = new Intent (MainActivity.this, player.class);
              startActivity(i);
            }
        }
    }
}

player.java

package com.test.myapp;

import android.app.*;
import android.os.*;
import android.content.*;
import android.widget.*;
import android.view.*;
import android.media.*;

public class player extends Activity {
  Button stop;
  MediaPlayer audio;

    @Override
    public void onCreate(Bundle savedIntanceState) {
        super.onCreate(savedIntanceState);
        setContentView(R.layout.player);

        stop= (Button) findViewById(R.id.stop);
        audio = MediaPlayer.create(getBaseContext(), R.raw.myAudio);
        audio.start();

        public void stop(View v){
            if (v.getId() == R.id.stop){
                audio.stop();
                audio = MediaPlayer.create(getBaseContext(), R.raw.myAudio);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

使您的MediaPlayer对象成为静态&检查Mediaplayer isPlaying()。尝试

public class player extends Activity {
    Button stop;
    static MediaPlayer audio;

    @Override
    public void onCreate(Bundle savedIntanceState) {
        super.onCreate(savedIntanceState);
        setContentView(R.layout.activity_player);

        stop = (Button) findViewById(R.id.stop);
        stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                audio.stop();
            }
        });

        if(audio == null) {
            audio = MediaPlayer.create(getBaseContext(), R.raw.myaudio);
            audio.start();
        } else {
            if(audio.isPlaying()) {
                audio.stop();
                audio = MediaPlayer.create(getBaseContext(), R.raw.myaudio);
                audio.start();
            } else {
                audio = MediaPlayer.create(getBaseContext(), R.raw.myaudio);
                audio.start();
            }
        }
    }

}