Android: How To Stop Media Player Onclick Of A Button
I have a play and stop button. When I run the following codes, Play button goes well. But when I click the stop button, I'm getting a force close message. I'm new to android dev. M
Solution 1:
First, try without:
mHandler.post(new Runnable(){
public void run(){
customTextBG.setText("Nicholas was… \n\nOlder than sin, ");
customTextHL.setText("");
}
});
and code for stop player:
if(mPlayer.isPlaying())
{
mPlayer.stop();
}
and second, can you provide your xmlfiles, then we can test it and see the errors.
Solution 2:
Put a try catch block like this -
try {
mPlayer.stop();
mPlayer.release();
} catch(Exception ex) {
ex.printStackTrace()
}
If your device is set to debug applications put a breakpoint in the catch block and let us know what the exception says. You can also use the emulator to debug.
Solution 3:
The Above code is modified as following code and gets output as per your requirement.When you are create a mediaplayer throuh MediaPlayer.create(....) Method ,no need to prepare again it. Once release or reset Methods are used,they should be required to re-intialize the datasource.
public class HelloMedia extends Activity {
MediaPlayer mPlayer;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPlayer = MediaPlayer.create(HelloMedia .this, R.raw.sleepaway);
setContentView(R.layout.main);
final Handler mHandler = new Handler();
final TextView customTextBG = (TextView) findViewById(R.id.customTextBG);
final TextView customTextHL = (TextView) findViewById(R.id.customTextHL);
customTextBG.setText("Nicholas was… \n\nOlder than sin, ");
customTextHL.setText("");
final String words[] = {
"Nicholas ", // 0
"was... \n\n", // 1
"Older ", // 2
"than ", // 3
"sin, ", // 4
};
final long startEndTime[][]={
{ //start time
1148,// 0,0
1826, // 0,1
2766,// 0,2
3079,// 0,3
3549,// 0,4
},
{ //end time
1357,// 1,0
2192, // 1,1
3027,// 1,2
3183,// 1,3
3966,// 1,4
}
};
customTextBG.setText("Nicholas was… \n\nOlder than sin, ");
customTextHL.setText("");
View.OnClickListener handler = new View.OnClickListener(){
public void onClick(View v) {
switch (v.getId()) {
case R.id.widget30: // PLAY
try{
if(mPlayer==null)
mPlayer = MediaPlayer.create(HelloMedia .this, R.raw.sleepaway);
if( !mPlayer.isPlaying() )
{
if(!mPlayer.isPlaying())
mPlayer.start();
mHandler.post(new Runnable(){
public void run(){
if(mPlayer!=null)
if(mPlayer.isPlaying()){
final long currentPos = mPlayer.getCurrentPosition();
int x = 0;
while( x < 5){
if( currentPos > startEndTime[0][x] && currentPos < startEndTime[1][x] ){//0
customTextHL.append(words[x]);
words[x]="";
}
x++;
} mHandler.postDelayed(this, 1);
}
}});
}
}catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
break;
case R.id.widget31: // RESET
mHandler.post(new Runnable(){
public void run(){
customTextBG.setText("Nicholas was… \n\nOlder than sin, ");
customTextHL.setText("");
}
});
try{
if(mPlayer.isPlaying())
{
mPlayer.stop();
mPlayer.reset();
mPlayer=null;
}
}catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
break;
}
}
};
// BUTTONS
findViewById(R.id.widget30).setOnClickListener(handler); // PLAY
findViewById(R.id.widget31).setOnClickListener(handler); // RESET
}
}
Solution 4:
Here's my code, tested and working fine:
package com.example.com.mak.mediaplayer;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MediaPlayer mpp;
mpp=MediaPlayer.create(this,R.raw.red); //mp3 file in res/raw folder
Button btnplay=(Button)findViewById(R.id.btnplay); //Play
btnplay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View vone) {
mpp.start();}
});
Button btnpause=(Button)findViewById(R.id.btnpause); //Pause
btnpause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View vtwo) {
if(mpp.isPlaying())
{
mpp.pause();
mpp.seekTo(0);
}
}
});
}
}
Solution 5:
if(mPlayer != null){
mPlayer.release();
}
Post a Comment for "Android: How To Stop Media Player Onclick Of A Button"