助けが必要です。前面カメラのみを使用するアプリを作成しました。ただし、一部のデバイスでは問題に直面しています。したがって、特定のデバイスでは Camera.open() メソッドが例外をスローします。
Failed to connect to camera service.
ログはデバイスによって異なりますが、次の 2 つのメッセージのいずれかです。
Camera W 21325 Camera server died!
また
CameraBase W 18851 An error occurred while connecting to camera: 1
他のデバイスでは正常に動作します。カメラにアクセスするために使用しているコードは次のとおりです-
public Camera getFrontFacingCamera() {
Camera object = null;
try {
object = Camera.open(findFrontFacingCamera());
} catch (Exception e) {
Mint.logException(e);
}
return object;
}
private static int findFrontFacingCamera() {
int cameraId = -1;
@SuppressWarnings("deprecation")
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
cameraId = i;
break;
}
}
return cameraId;
}
private void onCreate() {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cameraObject = getFrontFacingCamera();
showCamera = new ShowCamera(this, cameraObject);
preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(showCamera);
}
@Override
protected void onPause() {
super.onPause();
if (cameraObject != null) {
cameraObject.release();
cameraObject = null;
preview.removeView(showCamera);
showCamera = null;
}
ShowCamera.java
public class ShowCamera extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder holdMe;
private Camera mCamera;
Context context;
public ShowCamera(Context context,Camera camera) {
super(context);
this.context=context;
mCamera = camera;
holdMe = getHolder();
holdMe.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
}
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
this.getHolder().removeCallback(this);
mCamera.release();
}
}
そしてマニフェスト:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.front" android:required="true"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
この問題を修正する方法を知っている人はいますか?