我有两个不同的代码库有同样的问题。
第一个是直接从developer.android.com 复制的代码:
http://developer.android.com/guide/topics/media/camera.html#custom-camera http://developer.android.com/guide/topics/media/camera.html#custom-camera
第二个是这段代码:
http://android-er.blogspot.com.au/2011/10/simple-exercise-of-video-capture-using.html http://android-er.blogspot.com.au/2011/10/simple-exercise-of-video-capture-using.html
两者都可以与普通后置摄像头配合使用,但一旦我尝试使用前置摄像头,就会出现错误。
这种情况发生在以下设备上:
Nexus S 4.1.2
银河 Nexus 4.1.2
Nexus 7 4.2.1(只有前置摄像头)
我也尝试过看起来像 2.2 时代的相机参数,有些人声称某些三星和 HTC 设备需要这些参数,尽管多篇不同的文章引用了不同的字符串键:
c = Camera.open(frontFacingCameraID); // attempt to get a Camera instance
Camera.Parameters params = c.getParameters();
params.set("cam-mode", 1);
params.set("cam_mode", 1);
params.set("camera-id", 1);
c.setParameters(params);
这些都不起作用,另请注意,我正在检测正确的前置摄像头 ID,在 Nexus 7 上当然是:0。但所有设备上的结果都是相同的。
我尝试过使用低质量配置文件,我尝试过以多种方式手动设置视频分辨率、编码器、输出格式、比特率、帧速率和视频大小,但没有一个有效。
让我认为大多数代码都没有问题的是普通相机工作正常。所以我的猜测是它与设置媒体记录器的prepareVideoRecorder()/prepareMediaRecorder()方法有关。
也许已知可在前置摄像头上使用的媒体记录器手动编码设置?
我不得不说,Android Camera 和 MediaRecorder API 很糟糕。与 iOS 相比,它有点混乱,更不用说一些看起来可怕的参数不兼容问题以及分散的设备环境中的不同分辨率。
假设我可以让它在我的 JB 设备上运行,有谁根据经验知道这些问题是否可以通过 API 15 ICS 解决?
如果 API 10 Gingerbread 太难支持,我会考虑不支持它。