如何阻止媒体播放器在线程内运行

时间:2011-02-17 09:08:03

标签: android

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

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

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();
        }

    }

1 个答案:

答案 0 :(得分:1)

首先,您应该使用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()后创建一个新的。