i have created a mediaplayer in a fragment. I initialized it like this:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Main.mp = new MediaPlayer();
}
First i was facing problem when pressing back the song was still playing. Tha's why added the code below:-
public void onPause() {
super.onPause();
if (Main.prepared && !error) {
if (Main.mp.isPlaying()) {
Main.mp.stop();
}
}
}
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
}
// super.onBackPressed();
}
Now when i press back it stops the mediaplayer. But again when i press that song and press the play button it crashes. I am getting this errr:
08-14 12:07:16.650: E/AndroidRuntime(9913): FATAL EXCEPTION: main
08-14 12:07:16.650: E/AndroidRuntime(9913): java.lang.IllegalStateException
08-14 12:07:16.650: E/AndroidRuntime(9913): at android.media.MediaPlayer.isPlaying(Native Method)
08-14 12:07:16.650: E/AndroidRuntime(9913): at com.fragment.StreamFragment$7.run(StreamFragment.java:290)
08-14 12:07:16.650: E/AndroidRuntime(9913): at android.os.Handler.handleCallback(Handler.java:615)
08-14 12:07:16.650: E/AndroidRuntime(9913): at android.os.Handler.dispatchMessage(Handler.java:92)
08-14 12:07:16.650: E/AndroidRuntime(9913): at android.os.Looper.loop(Looper.java:213)
08-14 12:07:16.650: E/AndroidRuntime(9913): at android.app.ActivityThread.main(ActivityThread.java:4787)
08-14 12:07:16.650: E/AndroidRuntime(9913): at java.lang.reflect.Method.invokeNative(Native Method)
08-14 12:07:16.650: E/AndroidRuntime(9913): at java.lang.reflect.Method.invoke(Method.java:511)
08-14 12:07:16.650: E/AndroidRuntime(9913): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
08-14 12:07:16.650: E/AndroidRuntime(9913): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
08-14 12:07:16.650: E/AndroidRuntime(9913): at dalvik.system.NativeStart.main(Native Method)
The code that is written on (StreamFragment.java:290) is:
// set seeker to follow media player
handler = new Handler();
r = new Runnable() {
@Override
public void run() {
if (Main.prepared) {
if (Main.mp.isPlaying() ) {
seeker.setProgress(Main.mp
.getCurrentPosition());
}
}
seeker.postDelayed(r, 200);
}
};
handler.postDelayed(r, 1000);