Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android自然传感器定向帮助_Android_Orientation_Android Sensors - Fatal编程技术网

Android自然传感器定向帮助

Android自然传感器定向帮助,android,orientation,android-sensors,Android,Orientation,Android Sensors,我正在努力实现Reto Meier推荐的保持屏幕方向不变的方法。他在谷歌IO期间演讲的幻灯片(见第23页)可在中找到 我已经完成了代码,并设置了值,但屏幕方向仍在变化。仅供参考,我在应用程序中注册此侦听器 这是我的密码: final SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sm.registerListener( new SensorEventListener

我正在努力实现Reto Meier推荐的保持屏幕方向不变的方法。他在谷歌IO期间演讲的幻灯片(见第23页)可在中找到

我已经完成了代码,并设置了值,但屏幕方向仍在变化。仅供参考,我在应用程序中注册此侦听器

这是我的密码:

final SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    sm.registerListener(
        new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent sensorEvent) {
                if (sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION) {
                    final WindowManager wm = (WindowManager) getApplicationContext()
                            .getSystemService(Context.WINDOW_SERVICE);
                    final Display display = wm.getDefaultDisplay();

                    int x = SensorManager.AXIS_X;
                    int y = SensorManager.AXIS_Y;

                    switch (display.getRotation()) {
                    case Surface.ROTATION_90:
                        x = SensorManager.AXIS_Y;
                        y = SensorManager.AXIS_MINUS_X;

                        break;
                    case Surface.ROTATION_180:
                        y = SensorManager.AXIS_MINUS_Y;

                        break;
                    case Surface.ROTATION_270:
                        x = SensorManager.AXIS_MINUS_Y;
                        y = SensorManager.AXIS_MINUS_X;

                        break;
                    case Surface.ROTATION_0:
                    default:
                        break;
                    }

                    SensorManager.remapCoordinateSystem(sensorEvent.values, x, y, new float[] {});
                }
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {

            }
        }, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION),
        SensorManager.SENSOR_DELAY_NORMAL);

AndroidManifest.XML
文件中,所有30多行当前不起作用的代码都可以替换为一些XML值

我们都看到了

<activity android:name=".YourActivity" android:screenOrientation="portrait" ></activity>
在一台计算机上运行,它的工作原理与我预期的一样


我希望这对其他人有所帮助。

请记住,对于硬件键盘处于打开/关闭状态的设备,方向仍然会发生变化。遗憾的是,具有默认横向方向的平板电脑在花费大量时间和精力开发应用程序后,足以给您一大堆负面投票(一颗星)。我经历过这一切!很好的解决方案。我的平板电脑和智能手机都可以使用。那么你是说
android:screenOrientation=“nosensor”
不适用于7英寸的平板电脑?
<activity android:name=".YourActivity" android:screenOrientation="nosensor" ></activity>