Android的MediaPlayer的错误(1,-38)在Android 2.3设备 [英] Android MediaPlayer error (1, -38) on Android 2.3 devices

查看:1724
本文介绍了Android的MediaPlayer的错误(1,-38)在Android 2.3设备的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

近日被分配一个任务开发一个Android应用程序发挥通过WiFi RTSP流。然而,应用程序是使用上的Andr​​oid SurfaceView类的MediaPlayer,同样code适用于Android 4.2,4.3和4.4,当尝试在2.3,它受到Android的MediaPlayer的错误(1,-38)调用MediaPlayer.start后()功能。

集思广益几天后,我找到了答案,并希望分享救人的时候,因为是与上线这个问题非常有限的信息(也许我没有搜索够硬:))<。 / p>

解决方案

只是为了回答我的问题,分享调查结果。

要解决的MediaPlayer错误的问题(1,-38)的Andr​​oid 2.3设备上调用mediaPlayer.start()后,只设置了表面支架后增加以下条款。


    ...;
    surfaceHolder_.addCallback(本);
    surfaceHolder_.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    mediaPlayer_ =新的MediaPlayer();
    ...;

有关等于或大于蜂窝更高版本的设备,我们并不需要设置表面支架类型,框架会自动处理,对于附着表面观到媒体播放器,这就是为什么code在Android版4.0但不是在2.3。因此,我们可以使用条件语句来守护表面持有者的setType条款为:


    如果(Build.VERSION.SDK_INT&LT; Build.VERSION_ codeS.HONEYCOMB){
        surfaceHolder_.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

Recently be assigned a task to develop an Android app to play RTSP streams via WiFI. The app is utilizing Android MediaPlayer class on SurfaceView, same code works on Android 4.2, 4.3 and 4.4, however, when try it on 2.3, it suffers Android MediaPlayer error (1, -38) after calling MediaPlayer.start() function.

After brainstorming for a couple of days, I found the answer and would like to share to save people's time as there is very limited information related to this problem on line(Probably I didn't search hard enough :)).

解决方案

Just for answering my own question to share the findings.

To solve the problem of MediaPlayer error (1,-38) after calling mediaPlayer.start() on Android 2.3 device, just add the following clause after setting up the surface holder.

...; surfaceHolder_.addCallback(this); surfaceHolder_.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mediaPlayer_ = new MediaPlayer(); ...;

For devices equal to or higher than Honeycomb, we don't need to set the surface holder type, the framework will handle that automatically for the attached surface view to the media player, that's why the code works in Android 4.0 but not in 2.3. Hence we can use a condition statement to guard the surface holder setType clause as:

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { surfaceHolder_.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); }

这篇关于Android的MediaPlayer的错误(1,-38)在Android 2.3设备的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆