Android问题集锦之三十九:使用Camera录像的常见问题

在Android5.0之前我们一直使用android.hardware.Camera做拍照和录像,然而使用的过程并不是一帆风顺的,我跟着官方Camera文档编码实验,却也遇到了各种各样的问题,下面就来分别说说。
另外,API21开始推荐使用android.hardware.Camera2这个包了。

一、权限问题
使用Camera需要有camera的权限,录像时需要有录制音频的权限,保存相片和视频时需要有操作sdcard的权限。否则,因为权限问题就会报错。有些报错会显示告诉你权限问题,但有些不会,比如下面这个。

java.lang.RuntimeException: setAudioSource failed

这就是录制音频的权限没有。
下面列出几个必须的权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

二、startPreview fails

mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

一般都是设置上面的Type就好了,但是我的4.0.3的酷派的手机就仍然报错,而4.0.4和4.4的手机都没有问题,我也是找了N多资料,但是最后还是给跪了,应该是硬件问题。
也试了Camera.open()之前将camera置为null,都不行。
三、MediaRecorder﹕ start failed: -19
这个错误出现在我的4.4的5太子上。
任我怎么修改也不行,最后用了其他人的代码才终于跑起来。
参考:http://blog.csdn.net/shen332401890/article/details/8819564

总结:
众多的API版本使得向下兼容变得很难,在漫长的API1到API21的过程中,不一定哪一个API会跟你惊喜,让你原本预计一个小时的工作变成一天甚至更多。

你可能感兴趣的:(Camera)