如何在三星Galaxy S上使用前置摄像头

时间:2010-11-22 00:29:45

标签: android android-camera android-sdk-2.1

我在网上找到了几个答案,例如:

Camera.Parameters parameters = mCamera.getParameters();
parameters.set("camera-id", 2);
mCamera.setParameters(parameters);

mMediaRecorder.setVideoSource(2);

但它不起作用。我还在清单文件上设置了权限:

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

我错过了什么吗?我已经搜索了StackOverflow,我知道之前已经问过这个问题,但似乎没有确定的解决方案,任何形式的帮助都会受到赞赏。

注意:我在2.1平台上使用Galaxy S

3 个答案:

答案 0 :(得分:12)

无论如何经过一些试验和错误后,我想出了如何做到这一点:

Camera.Parameters parameters = mCamera.getParameters();
parameters.set("camera-id", 2);
parameters.setPreviewSize(640, 480); // or (800,480) this is supported front camera preview size @ Samsung Galaxy S
mCamera.setParameters(parameters);

或者,如果您需要将它与MediaRecorder一起使用:

MediaRecorder mMediaRecorder = new MediaRecorder();
Camera mCamera = Camere.open();
Camera.Parameters parameters = mCamera.getParameters();
parameters.set("camera-id", 2);
parameters.setPreviewSize(640, 480); // or (800,480)
mCamera.setParameters(parameters);
mCamera.unlock(); // unlock, to give other process to access it otherwise it can't be used later
mMediaRecorder.setCamera(mCamera);
// continue with mMediaRecorder standard routines here

如果您需要较小的预览尺寸,则可以设置/缩小SurfaceView尺寸。

答案 1 :(得分:2)

目前没有适用于前置摄像头的标准API;您将需要依赖硬件制造商使用其扩展来访问前置摄像头的任何(如果有)文档。这当然只适用于那些特定的设备。

注意编写像“camera-id”这样的原始字符串通常是一个很好的迹象,你已经徘徊在官方SDK之外的树林里。 :)

答案 2 :(得分:0)

我认为这是一个很好的地方,可以添加一些我已经解决过的细节。

如果您在纵向模式下使用前置摄像头并且出现的结果文件被切割成正方形,并且会抛出绿色块,尝试反转宽度和高度(预览和记录器)并将编码器设置为H263。 ..

这解决了我在三星Galaxy S 2.3.3 +上的问题...