you with theme need dark bar activity android media-player

android - with - java.lang.IllegalStateException ¿qué significa?



theme.appcompat dark (2)

Estoy desarrollando una aplicación de video. Después de la primera reproducción de video, en "OnCopletion" estoy tratando de comenzar uno nuevo. Pero simplemente se detiene (no se estrella) y no hace nada. En el registro:

10-19 09:44:49.056: ERROR/MediaPlayer(4654): setDataSource called in state 128 10-19 09:44:49.056: WARN/System.err(4654): java.lang.IllegalStateException 10-19 09:44:49.056: WARN/System.err(4654): at android.media.MediaPlayer.setDataSource(Native Method) 10-19 09:44:49.056: WARN/System.err(4654): at ru.osiris.BusAdvertising.BusAdvertisingActivity.onCompletion(BusAdvertisingActivity.java:1255) 10-19 09:44:49.056: WARN/System.err(4654): at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:1304) 10-19 09:44:49.056: WARN/System.err(4654): at android.os.Handler.dispatchMessage(Handler.java:99) 10-19 09:44:49.056: WARN/System.err(4654): at android.os.Looper.loop(Looper.java:123) 10-19 09:44:49.056: WARN/System.err(4654): at android.app.ActivityThread.main(ActivityThread.java:4627) 10-19 09:44:49.056: WARN/System.err(4654): at java.lang.reflect.Method.invokeNative(Native Method) 10-19 09:44:49.056: WARN/System.err(4654): at java.lang.reflect.Method.invoke(Method.java:521) 10-19 09:44:49.056: WARN/System.err(4654): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 10-19 09:44:49.056: WARN/System.err(4654): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 10-19 09:44:49.056: WARN/System.err(4654): at dalvik.system.NativeStart.main(Native Method)

¿Qué significa eso? ¿Cómo puedo arreglarlo? ahí está mi código

public class BusAdvertisingActivity extends Activity implements LocationListener, OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback { ... private MediaPlayer mMediaPlayer; private SurfaceView mPreview; private SurfaceHolder holder; private String path; private Bundle extras; @Override public void onCreate(Bundle icicle) { mPreview = (SurfaceView) findViewById(R.id.surface); holder = mPreview.getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); extras = getIntent().getExtras(); } public void surfaceCreated(SurfaceHolder holder) { Log.d(TAG, "surfaceCreated called"); playVideo(); } private void playVideo(Integer Media) { Log.d(TAG, "playVideo called"); doCleanUp(); try { File clip=new File(Environment.getExternalStorageDirectory(), playList[FLcurrentVideo].substring(2, playList[FLcurrentVideo].length()-1)+".mp4"); path = clip.getAbsolutePath(); mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(path); mMediaPlayer.setDisplay(holder); mMediaPlayer.prepare(); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnVideoSizeChangedListener(this); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); } catch (Exception e) { Log.e(TAG, "error: " + e.getMessage(), e); } } public void onCompletion(MediaPlayer arg0) { Log.d(TAG, "onCompletion called"); FLcurrentVideo++; File clip=new File(Environment.getExternalStorageDirectory(), playList[FLcurrentVideo].substring(2, playList[FLcurrentVideo].length()-1)+".mp4"); path = clip.getAbsolutePath(); try { Log.d ("111", path); arg0.setDataSource(clip.getAbsolutePath()); //I got exception here arg0.setDisplay(holder); arg0.prepare(); arg0.setOnBufferingUpdateListener(this); arg0.setOnCompletionListener(this); arg0.setOnPreparedListener(this); arg0.setOnVideoSizeChangedListener(this); arg0.setAudioStreamType(AudioManager.STREAM_MUSIC); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

Por favor, ayúdame.


Los documentos de Android dicen acerca de IllegalStateException :

Se lanza cuando se intenta una acción en un momento en que la máquina virtual no está en el estado correcto.