gpt4 book ai didi

android - 如何停止在线程内运行的媒体播放器

转载 作者:行者123 更新时间:2023-11-30 04:45:40 27 4
gpt4 key购买 nike

每当按下进程对话框的停止选项时,我试图停止媒体播放器并退出我的 Activity 类,但是通过使用下面的代码我能够退出我的 Activity 类但无法停止媒体播放器的声音,它一直在运行,直到线程停止..

请帮我解决这个问题提前致谢..

public class Test_Service extends Activity {

private MediaPlayer mp;
private Thread welcomeThread;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

mp = MediaPlayer.create(Test_Service.this,R.raw.alarm1);


welcomeThread=new Thread() {
int wait = 0;
@Override
public void run() {
try {
super.run();
while (wait <30000) {

mp.start();
sleep(3000);
wait +=3000;
}
} catch (Exception e) {
System.out.println("EXc=" + e);
} finally {

}
}
};
new AlertDialog.Builder(Test_Service.this)
.setTitle("Alarm is running")
.setPositiveButton("Stop",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
mp.stop();
welcomeThread.stop();
Test_Service.this.finish();

}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
mp.stop();
Test_Service.this.finish();


}
})
.create().show();
welcomeThread.start();
}

}

最佳答案

首先,您应该使用一个Handler,它是postDelayed()。延迟启动的方法。

此外,您可以在 AlertDialog 上设置以下 OnDismissListener 并在那里停止播放器以避免代码重复。

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {

@Override
public void onDismiss(DialogInterface dialog) {
mp.release();
handler.removeCallbacks(startingRunnable);
finish();
}
});

MediaPlayer.release()将停止您的 MediaPlayer 并释放它。如果您想重复使用此 MediaPlayer,则必须在调用 release() 后创建一个新的。

关于android - 如何停止在线程内运行的媒体播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5026918/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com