フロントカメラを使用する小さなアプリに取り組んでいます。私がフロントカメラを使用する方法は、ほとんどの電話で機能するようですが、ユーザーは S3 やその他のさまざまな新しいデバイスで問題を報告しています。フロントカメラにアクセスする方法は次のとおりです。
// Find the ID of the front camera
CameraInfo cameraInfo = new CameraInfo();
for(int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if(cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {
defaultCameraId = i;
mCameraFound = true;
}
}
if(!mCameraFound)
displayDialog(8);
アプリに追加したエラー レポートの一部から、S3 が実際にフロント カメラを検出していることに気付きましたが、ユーザーは空白の画面しか表示しないと報告しています。私が持っているデバイス (GNex と N7) でしかテストできませんでした。ここの誰かがこれについて何らかの経験を持っているか、この問題の解決を手伝ってくれることを望んでいました. S3 でアプリを試してみたい場合は、以下のリンクを確認してください。前もって感謝します。
https://play.google.com/store/apps/details?id=com.wckd_dev.mirror
編集: プレビューに使用される TextureView を含む MirrorView オブジェクトを作成しました。MirrorView オブジェクトは SurfaceTextureListener を実装します。onSurfaceTextureAvailable() メソッド内で、プレビューが開始されます。また、アプリが非表示から表示に戻った後にプレビューを再開する方法も作成しました。
したがって、これはアプリが最初に起動されたときに呼び出されます。
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
try {
if (mCamera != null) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(mPreviewSize.height, mPreviewSize.width);
requestLayout();
mCamera.setParameters(parameters);
mCamera.setPreviewTexture(surface);
mCamera.startPreview();
}
}
catch(RuntimeException e) {
// Log.e(TAG, "RuntimeException caused by setPreviewTexture()", exception);
}
catch (IOException e) {
// Log.e(TAG, "IOException caused by setPreviewTexture()", exception);
}
}
restartPreview 呼び出しは、同一の (ただし別の) メソッドに対するものです。ユーザーから収集したデバッグ データの一部から、アプリが S III で 2 つのカメラを検出し、CAMERA_FACING_FRONT に一致する ID を選択していることに気付きました。また、この問題はすべての S III で発生しているようには見えません。フィードバックを報告しているユーザーもいます。この問題を経験しているユーザーからの最新の報告は、AT&T S III ユーザーでした。どんな助けでも大歓迎です!