1

フロントカメラを使用する小さなアプリに取り組んでいます。私がフロントカメラを使用する方法は、ほとんどの電話で機能するようですが、ユーザーは 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 ユーザーでした。どんな助けでも大歓迎です!

4

1 に答える 1

2

今夜、私のアプリでこの問題が発生していた S3 と顔を合わせました。ここで何が起こっていた。TextureView は、4.0 以降のデバイスでは (私が理解していることから) デフォルトでオンになっている 2d ハードウェア アクセラレーションに依存しています。彼の電話では(少なくとも私のアプリでは)オンになっていませんでした。修正は、マニフェスト (アプリケーションの下) に 1 行を追加するだけで簡単でした。

android:hardwareAcceleration = "true"
于 2012-11-15T04:40:09.667 に答える