zoukankan      html  css  js  c++  java
  • The surface has been released 异常

    http://dingran.iteye.com/blog/1442502

    =====================================

    在使用surfaceView和MediaPlayer播放视频的时候出现了一个异常,纠结了很久,经过同事帮助,终于发现了问题的根源。

     

    异常如下:

     

    E/AndroidRuntime( 1765): Caused by: java.lang.IllegalArgumentException: The surface has been released
    E/AndroidRuntime( 1765):     at android.media.MediaPlayer._setVideoSurface(Native Method)
    E/AndroidRuntime( 1765):     at android.media.MediaPlayer.setDisplay(MediaPlayer.java:633)

     

     

    原因是在surfaceHolder还没准备好的时候,我就调用了MediaPlayer的start()方法。

     

    正确的播放流程应该是:

     

            surfaceView = (SurfaceView) findViewById(R.id.PlaySurfaceView);
            surfaceHolder = surfaceView.getHolder();
            surfaceHolder.addCallback(this);

     

          mediaPlayer.setDisplay(surfaceHolder);

     

    try {
                
                mediaPlayer.setDataSource(this, Uri.parse("/sdcard/bianxing.ts"));
                
            } catch (IllegalArgumentException e1) {
                e1.printStackTrace();
            } catch (SecurityException e1) {
                e1.printStackTrace();
            } catch (IllegalStateException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            try {
                mediaPlayer.prepare();
            } catch (IllegalStateException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
                
                @Override
                public void onPrepared(MediaPlayer mp) {
                    
                    mediaPlayer.start();
                    
                }
            });

     

    这样就可以正常播放了,唉,不容易啊,感谢同事的帮助。

     

    其实对Medialayer的封装来说,VideoView已经做的很好了,自己再写这些确实费力,期望以后扩展会好点


    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    Getting started with 3G | ip.access nano3G+OpenBSC+Osmocom-bb Part 1
    Metasploit的射频收发器功能 | Metasploit’s RF Transceiver Capabilities
    分析无线遥控器信号并制作Hack硬件进行攻击
    利用Hackrf One进行GPS定位欺骗制作超级跑马机
    使用OpenBTS基站测试物联网模块安全性
    在cmd中为命令设置别名以及启动cmd时自动执行bat
    Struts2、spring2、hibernate3在SSH中各起什么作用
    switch omega
    html转译字符 字符实体
    excel自定义数据验证
  • 原文地址:https://www.cnblogs.com/iplus/p/4467404.html
Copyright © 2011-2022 走看看