1

私のビジネス カード リーダー アプリケーションでは、最初のカメラ キャプチャ アクティビティで画面の向きを修正しました。私はSensorManagerを使用していますが、モバイルの角度を少し変えると、ほとんどの場合ランドスケープになります。

こちら screenOrientation=0 横向きの場合

縦長の場合は screenOrientation=1

private void registerAccelerometerSensor() {
    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

    if (getPackageManager().hasSystemFeature(
            PackageManager.FEATURE_SENSOR_ACCELEROMETER)) {
        eventListener = new SensorEventListener() {

        @Override
            public void onSensorChanged(SensorEvent event) {
                // TODO Auto-generated method stub
                if (event.values[1] < 6.5 && event.values[1] > -6.5) {
                    if (orientation != 1) {
                        Log.d("Sensor", "Landscape");
                        screenOrientation = 0;
                    }

                } else {
                    if (orientation != 0) {
                        Log.d("Sensor", "Portrait");
                        screenOrientation = 1;
                    }
                }
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
                // TODO Auto-generated method stub
            }
        };
        sensorManager.registerListener(eventListener,
                sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_FASTEST);
    } else {
        screenOrientation = -1;
    }
}
4

1 に答える 1