是否有音频在播放? (在Android)
Is Any Audio Is Playing? (In Android)
我的应用程序中有两个活动,第一个 (MainActivity.java) 有一个按钮可以调用 activity 两个 (player.java),第二个有音频和一个停止按钮。
所以我面临的主要问题是..
当我从一个点击开始第二个 activity 时,它会转到另一个 activity,
正如我编程的那样,它会自动启动音频(我希望它自动启动)我按下停止音频停止...然后再次返回 MainActivity 调用第二个 activity (player.java) 它工作正常...再次它可以正确启动音频...当我向后按时一切正常,音频继续播放...(这就是我想要的)
但是,如果在不停止音频的情况下按返回键,并再次开始第二个 activity (player.java),它会在不停止第一个的情况下再次启动音频...并且同一首曲目会播放两个次...
我只想一次播放一首曲目...如果正在播放任何其他音频,请停止播放,当我再次播放时 activity。
这是我的代码...
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);
}
}
}
}
将您的 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();
}
}
}
}
我的应用程序中有两个活动,第一个 (MainActivity.java) 有一个按钮可以调用 activity 两个 (player.java),第二个有音频和一个停止按钮。
所以我面临的主要问题是..
当我从一个点击开始第二个 activity 时,它会转到另一个 activity, 正如我编程的那样,它会自动启动音频(我希望它自动启动)我按下停止音频停止...然后再次返回 MainActivity 调用第二个 activity (player.java) 它工作正常...再次它可以正确启动音频...当我向后按时一切正常,音频继续播放...(这就是我想要的)
但是,如果在不停止音频的情况下按返回键,并再次开始第二个 activity (player.java),它会在不停止第一个的情况下再次启动音频...并且同一首曲目会播放两个次...
我只想一次播放一首曲目...如果正在播放任何其他音频,请停止播放,当我再次播放时 activity。
这是我的代码...
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);
}
}
}
}
将您的 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();
}
}
}
}