2

画像操作にフロントカメラを使用する Android アプリケーションを作成しています。

カメラがどこにあるかを知ることは私にとって重要です。たとえば、Samsung S3 ではデバイスの上部にあり、Galaxy Note 10 では側面にあります。

カメラ プレビュー バッファの向きと画面自体の向きを知ることができるので、これは重要です (UI をカメラに対して常に縦向きに保ちたい、つまり、カメラが常に上にあるようにしたい)。

何か案は?

編集:Android 4以降を使用できます(下位バージョンをサポートする必要はありません)

ありがとう!

4

2 に答える 2

1

Android自体からの参照以外に、カメラがデバイスのどこにあるかを把握する方法はないと思います: http://developer.android.com/reference/android/graphics/Camera.html

于 2013-04-11T09:51:55.050 に答える
0

他の人が言ったように、向きなどを取得するだけなので、位置自体は関係ありません。

そうは言っても、私は以前に StackOverflow からこのメソッドを取得しました (それを開発した人への称賛)、それは魅力のように機能します。コールバックで呼び出すだけsurfaceCreatedです。

    private void setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera) {
            android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
            android.hardware.Camera.getCameraInfo(cameraId, info);
            int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
            int degrees = 0;
            switch (rotation) {
            case Surface.ROTATION_0:
                    degrees = 0;
                    break;
            case Surface.ROTATION_90:
                    degrees = 90;
                    break;
            case Surface.ROTATION_180:
                    degrees = 180;
                    break;
            case Surface.ROTATION_270:
                    degrees = 270;
                    break;
            }

            int result;
            if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                    result = (info.orientation + degrees) % 360;
                    result = (360 - result) % 360; // compensate the mirror
            } else { // back-facing
                    result = (info.orientation - degrees + 360) % 360;
            }
            camera.setDisplayOrientation(result);
    }
于 2013-04-11T09:55:51.770 に答える