zoukankan      html  css  js  c++  java
  • Android开发Mediaplayer总是报prepareAsync called in state 8和error(1,-2147483648)错误

    昨天编写一个播放软件在软件都完成的时候,首先在模拟器上使用总是提示一个错误:called in state8.

    自己反复的查看代码移植没有发现问题的所在,后来就把android的API对于这个类的介绍又给看了看,发现了问题所在。

    一开始的代码如下:

    MediaPlayer mPlayer=MediaPlayer.create(MainActivity.this, R.raw.c);
                    
                    mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    
                    mPlayer.setDisplay(sHolder);
                    
                    try {
                        mPlayer.prepare();
                        
                    } catch (IllegalStateException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    
                    mPlayer.start();

    后来查看后,发现这句代码MediaPlayer mPlayer=MediaPlayer.create(MainActivity.this, R.raw.c);执行完的时候其实已经相当于执行了mPlayer.prepare(),所以才会总是出现一个错误:prepareAsync called in state 8。

    做相应的改变

    try {
                        
                        if (mPlayer!=null) {
                            mPlayer.stop();
                        }
                        
                        mPlayer.prepare();

    }

    就可以解决相应的错误。

    当这个问题解决之后,我再次运行之后又发现了一个问题,总是报一个错误:error(1,-2147483648)

    最后在网上查找资料之后,发现这个问题是模拟器的问题,可能是不同的版本系统或硬件对视频的格式支持不同的原因,最后自己就将软件部署到真实的手机上,发现可以正常的运行

  • 相关阅读:
    Quartz2.0以上版本的单机和集群
    Mysql的Haproxy反向代理和负载均衡
    spring AOP原理解析
    Restful接口调用方法超详细总结
    mysql数据库主从同步
    数据备份的OSS接口
    读取properties配置文件的方法
    算法学习——堆排序(二叉树排序)
    回溯算法的实现
    冒泡排序
  • 原文地址:https://www.cnblogs.com/YangMT/p/4744161.html
Copyright © 2011-2022 走看看