我像这样启动媒体播放器:
if (mp != null) {
mp.stop();
mp.reset();
mp.release();
}
mp = MediaPlayer.create(this, R.raw.background);
mp.start();
我怎样才能停止另一个活动?它继续在另一个活动中播放。如何onDestroy
在其他活动中使用?
我像这样启动媒体播放器:
if (mp != null) {
mp.stop();
mp.reset();
mp.release();
}
mp = MediaPlayer.create(this, R.raw.background);
mp.start();
我怎样才能停止另一个活动?它继续在另一个活动中播放。如何onDestroy
在其他活动中使用?
在您的项目中使用如下所示的分离类。
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
public class AudioPlay {
public static MediaPlayer mediaPlayer;
private static SoundPool soundPool;
public static boolean isplayingAudio=false;
public static void playAudio(Context c,int id){
mediaPlayer = MediaPlayer.create(c,id);
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
if(!mediaPlayer.isPlaying())
{
isplayingAudio=true;
mediaPlayer.start();
}
}
public static void stopAudio(){
isplayingAudio=false;
mediaPlayer.stop();
}
}
播放歌曲
`AudioPlay.playAudio(mContext, R.raw.audiofile);` // play it from your preferred activity. and you can change raw file to your path also its depends upon your requirement.
AudioPlay.stopAudio();
然后在任何活动中使用此行停止音频。希望这可以帮助。
在第一个活动中覆盖 onPause
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
mp.stop();
}
这是我的Kotlin解决方案:
package com.programacionymas.myapp.services
import android.content.Context
import android.media.MediaPlayer
object AudioPlay {
var mediaPlayer: MediaPlayer? = null
var lastResource: Int? = null
fun playAudio(c: Context, id: Int, isLooping: Boolean = true) {
createMediaPlayer(c, id)
mediaPlayer?.let {
it.isLooping = isLooping
if (!it.isPlaying) {
it.start()
}
}
}
private fun createMediaPlayer(c: Context, id: Int) {
// in case it's already playing something
mediaPlayer?.stop()
mediaPlayer = MediaPlayer.create(c, id)
lastResource = id
}
// usually used inside the Activity's onResume method
fun continuePlaying(c: Context, specificResource: Int? = null) {
specificResource?.let {
if (lastResource != specificResource) {
createMediaPlayer(c, specificResource)
}
}
mediaPlayer?.let {
if (!it.isPlaying) {
it.start()
}
}
}
fun pauseAudio() {
mediaPlayer?.pause()
}
}
我从itsrajesh4uguys的 Java 答案开始,并应用了这些更改:
最后我以这种方式使用它:
在onCreate
方法中:
AudioPlay.playAudio(this, R.raw.background_music)
在onResume
方法中:
AudioPlay.continuePlaying(this, R.raw.background_music)
就我而言,我必须指定资源,因为我的一些活动开始播放另一种音乐声音。
您不能调用停止活动,而是从活动本身调用
实现这一点,您可以在服务中发送媒体播放器,并在要访问它的活动中绑定到服务
当您在第一个活动中启动媒体播放器并希望在另一个活动中停止时,只需使用布局充气器 self 在第一个活动中调用您的第二个布局,而不是创建另一个活动.. 在第二个布局文件上,只需按下按钮即可停止媒体播放器
public class FirstAvtivity extends Activity
{
MediaPlayer mPlayer;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_activity_layoutfile);
Button b=(Button)findViewById(R.id.button1);
//start the media player like how you were starting in your activity
// then after clicking button you will be navigated to new layout , there
// you can stop media player
mPlayer.start();
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateLayout();
}
});
}
private void newUpdateLayout() {
LayoutInflater inflater = LayoutInflater.from(this);
setContentView(inflater.inflate(R.layout.second_disapr_scr, null));
finalDismiss=(Button)findViewById(R.id.final_dismiss);
finalDismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),"welcome to second
avtivity",Toast.LENGTH_SHORT).show();
mPlayer.stop();
finish();
}
});
}
}