开发者

how to stop media player running inside a thread

开发者 https://www.devze.com 2023-02-12 03:13 出处:网络
I am trying to stop a media player and get outof my activity class whenever the stop option of the process dialog is pressed,but by using the below code开发者_Python百科 i am able to getting out of my

I am trying to stop a media player and get out of my activity class whenever the stop option of the process dialog is pressed,but by using the below code开发者_Python百科 i am able to getting out of my activity class but unable to stop the media player sound ,and it is running continuously till the thread stop..

Please help me on this matter Thanx in advance..

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

    }


First of all, you should use a Handler with it's postDelayed() method to delay the start.

Furthermore you can set the following OnDismissListener on your AlertDialog and stop the player there to avoid code repetition.

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {

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

MediaPlayer.release() will stop your MediaPlayer and release it. If you want to reuse this MediaPlayer you will have to create a new one after calling release().

0

精彩评论

暂无评论...
验证码 换一张
取 消