MediaPlayer 错误码(1,-19)

我在使用MediaPlayer + SurfaceView播放的时候,在调用start()之后,4.0系统播放正常,2.3设备却黑屏并且在onError回调收到 what =1,extra= -19的错误,查了好久,最后发现这是一个系统兼容性问题。

 

对于3.0及以上的系统不需要调用

surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

 

因为系统会自动设置这个类型,但是对于3.0以下的设备需要显示的调用这个代码,设置类型。

总结就是必须要加上这句代码,这样子就能做到兼容性了。

 

MediaPlayer + SurfaceView 播放本地文件这个demo已经有很多了。

如:http://blog.csdn.net/worker90/article/details/7108358

发布了17 篇原创文章 · 获赞 0 · 访问量 4862
展开阅读全文

Android Mediaplayer报错

12-10

顺序播放五六首歌曲的时候机会出现错误 (-38,0); Attempt to call getDuation withot a valid mediaplayer 下面代码 class OnCompletionListener implements android.media.MediaPlayer.OnCompletionListener { @Override public void onCompletion(MediaPlayer mp) { if (currIndex >= (list.size() - 1)) { statethreadFlag = true; mp.stop(); Toast.makeText(getApplicationContext(), "歌曲全部播放完毕", Toast.LENGTH_LONG).show(); } else { statethreadFlag = true; mp.stop(); currIndex++; start(); } } } public void start() { Log.i("mp3", "服务执行了start方法,开始播放歌曲"); if (bundle.getBoolean("flag")) { hMap = list.get(currIndex); player.reset(); try { player.setDataSource(hMap.get("path")); player.prepare(); } catch (Exception e) { e.printStackTrace(); } player.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { // TODO Auto-generated method stub mp.start(); serviceFlag = 1; statethreadFlag = false; new Thread(new StateThread()) { }.start(); } }); class StateThread implements Runnable { @Override public void run() { Log.i("mp3", "服务线程启动"); while (!statethreadFlag) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } nowTime = player.getCurrentPosition(); allTime = player.getDuration(); Log.i("mp3", nowTime + " " + allTime + ""); Intent stateIntent = new Intent(); Bundle bundle = new Bundle(); stateIntent.setAction("com.player.broadcast"); bundle.putInt("now", nowTime); bundle.putInt("all", allTime); bundle.putInt("serviceFlag", serviceFlag); bundle.putInt("currIndex", currIndex); stateIntent.putExtra("state", bundle); sendBroadcast(stateIntent); if (nowTime >= allTime) { break; } } } } 网上找了一天也没解决这个问题 出错了取得的nowTime和allTime 都是-1261004135 希望大神指教,感激不尽,只剩1c币了 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览