8

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

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

4

3 回答 3

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 尺寸。

于 2010-11-23T04:45:57.897 回答
2

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

请注意,编写诸如“camera-id”之类的原始字符串通常是一个好兆头,您已经在官方 SDK 之外徘徊。:)

于 2010-11-22T02:02:03.333 回答
0

我认为这是一个添加我已经制定的一些细节的好地方。

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

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

于 2012-10-10T15:48:16.207 回答