Note that there are some explanatory texts on larger screens.

plurals
  1. PO"The surface has been released" error
    primarykey
    data
    text
    <p>I am creating a media player for online videos, but when I try to run it, I get this error: "The surface has been released". Here is my code:</p> <pre><code>public class VideoSample1 extends Activity implements Callback, OnPreparedListener, OnCompletionListener, OnClickListener, OnSeekCompleteListener, android.view.SurfaceHolder.Callback { public String video_path = "My video URL"; private SurfaceView surfaceViewFrame; private MediaPlayer player; private SurfaceHolder holder; private Bundle extras; private static final String TAG = "log_tag"; private boolean b =false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.customvideoview); extras = getIntent().getExtras(); surfaceViewFrame = (SurfaceView) findViewById(R.id.surfaceViewFrame); surfaceViewFrame.setOnClickListener(this); surfaceViewFrame.setClickable(false); holder = surfaceViewFrame.getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); player = new MediaPlayer(); player.setOnPreparedListener(this); player.setOnCompletionListener(this); player.setOnSeekCompleteListener(this); player.setScreenOnWhilePlaying(true); player.setDisplay(holder); } @Override protected void onDestroy() { super.onDestroy(); player.stop(); player.release(); player = null; Toast.makeText(VideoSample1.this, "back",Toast.LENGTH_SHORT).show(); finish(); } private void playVideo() { new Thread(new Runnable() { public void run() { try { player.setDataSource(VideoSample1.this, Uri.parse(extras.getString("Video URL"))); player.prepareAsync(); } catch (IllegalArgumentException e) { Log.d("admin","Error while playing video"); e.printStackTrace(); Log.i(TAG,"tag"+ e.getMessage()); } catch (IllegalStateException e) { Log.d("admin","Error1 while playing video"); e.printStackTrace(); Log.i(TAG, "tag"+e.getMessage()); } catch (IOException e) { e.printStackTrace(); Log.d("admin","Error while playing video.Please, check your network connection"); Log.i(TAG, "tag"+e.getLocalizedMessage()); } } }).start(); } public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } public void surfaceCreated(SurfaceHolder holder) { playVideo(); } public void surfaceDestroyed(SurfaceHolder holder) { } public void onPrepared(MediaPlayer mp) { if (!player.isPlaying()) { b = true; player.start(); } } public void onCompletion(MediaPlayer mp) { mp.stop(); finish(); } public void onSeekComplete(MediaPlayer mp) { } @Override public void invalidateDrawable(Drawable who) { } @Override public void scheduleDrawable(Drawable who, Runnable what, long when) { // TODO Auto-generated method stub } @Override public void unscheduleDrawable(Drawable who, Runnable what) { // TODO Auto-generated method stub } @Override public void onClick(View v) { // TODO Auto-generated method stub } } </code></pre> <p>I referred <a href="https://stackoverflow.com/questions/16194941/the-surface-has-been-released-when-i-try-to-setdisplay-to-mediaplayer">this</a> , and other stack overflow sites but nothing worked with me :-(. Error is near setdisplay(holder). And here is my Logcat messages:</p> <pre><code>08-31 10:18:01.512: E/AndroidRuntime(1162): FATAL EXCEPTION: main 08-31 10:18:01.512: E/AndroidRuntime(1162): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.msense.msenseplayer/com.msense.msenseplayer.VideoSample1}: java.lang.IllegalArgumentException: The surface has been released 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.app.ActivityThread.access$600(ActivityThread.java:123) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.os.Handler.dispatchMessage(Handler.java:99) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.os.Looper.loop(Looper.java:137) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.app.ActivityThread.main(ActivityThread.java:4429) 08-31 10:18:01.512: E/AndroidRuntime(1162): at java.lang.reflect.Method.invokeNative(Native Method) 08-31 10:18:01.512: E/AndroidRuntime(1162): at java.lang.reflect.Method.invoke(Method.java:511) 08-31 10:18:01.512: E/AndroidRuntime(1162): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 08-31 10:18:01.512: E/AndroidRuntime(1162): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 08-31 10:18:01.512: E/AndroidRuntime(1162): at dalvik.system.NativeStart.main(Native Method) 08-31 10:18:01.512: E/AndroidRuntime(1162): Caused by: java.lang.IllegalArgumentException: The surface has been released 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.media.MediaPlayer._setVideoSurface(Native Method) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.media.MediaPlayer.setDisplay(MediaPlayer.java:641) 08-31 10:18:01.512: E/AndroidRuntime(1162): at com.msense.msenseplayer.VideoSample1.onCreate(VideoSample1.java:53) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.app.Activity.performCreate(Activity.java:4578) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 08-31 10:18:01.512: E/AndroidRuntime(1162): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 08-31 10:18:01.512: E/AndroidRuntime(1162): ... 11 more </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload