Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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_Android Sensors - Fatal编程技术网

Android 如何在屏幕方向改变期间处理传感器监控?

Android 如何在屏幕方向改变期间处理传感器监控?,android,android-sensors,Android,Android Sensors,在我的活动中,我使用“onSensorChanged”方法监视传感器 当按下活动中的按钮时(在“onClick”方法中),我开始监视传感器 我在onPause和onResume方法中注册和取消注册侦听 代码如下: public void onCreate(Bundle savedInstanceState) { //Here i set "mySensor" } public void onClick(View view){ sensorManager.registerListener

在我的活动中,我使用“onSensorChanged”方法监视传感器

当按下活动中的按钮时(在“onClick”方法中),我开始监视传感器

我在onPause和onResume方法中注册和取消注册侦听

代码如下:

public void onCreate(Bundle savedInstanceState) {
  //Here i set "mySensor"
}

public void onClick(View view){
  sensorManager.registerListener(this, mySensor, SensorManager.SENSOR_DELAY_FASTEST);
}

protected void onPause() {
  sensorManager.unregisterListener(this, mySensor);
}

protected void onResume() {
  sensorManager.registerListener(this, mySensor, SensorManager.SENSOR_DELAY_FASTEST);
}

public final void onSensorChanged(SensorEvent event) {
  //do things
}
问题是,当屏幕方向发生变化时,监控停止,我在“onSensorChanged”中所做的事情停止,直到我再次按下按钮

我一直在阅读,似乎当屏幕方向改变时,我的活动会被破坏并重新创建,但我希望在这个过程中传感器的监控不会停止

我如何保持监控?我想一定要用这个包,但我不确定


Thanx.

事实上,当设备的方向改变时,Android上的活动确实会被破坏并重新创建。如果你不关心所有方向,你可以“限制”你的活动一个方向

或者,如果您希望提供对多个方向的支持(默认设置),则可以将传感器读取部分移动到静态单例(您可以从任何活动调用)、应用程序类的子类或单独的类中,由应用程序类的子类引用),您可以使用
getApplication()
-阅读以了解有关应用程序类的更多信息)。这三种选择都是在所有活动中保持全球状态的不错选择


如果您希望在应用程序处于后台或应用程序终止后仍能继续读取传感器数据,则更可靠的方法是在应用程序运行时使用服务并在活动中来回传递数据。

的确,当设备的方向改变时,Android上的活动确实会被破坏并重新创建。如果你不关心所有方向,你可以“限制”你的活动一个方向

或者,如果您希望提供对多个方向的支持(默认设置),则可以将传感器读取部分移动到静态单例(您可以从任何活动调用)、应用程序类的子类或单独的类中,由应用程序类的子类引用),您可以使用
getApplication()
-阅读以了解有关应用程序类的更多信息)。这三种选择都是在所有活动中保持全球状态的不错选择


如果您希望在应用程序处于后台或应用程序终止后仍能继续读取传感器数据,则更可靠的方法是在应用程序运行时使用服务并在活动中来回传递数据。

您有几个选择:

  • 您可以将传感器侦听器移动到应用程序类中,该类由
    中的
    android:name
    定义,并命名您派生的类。我建议采用这种方法

  • 您可以将
    android:configChanges=“orientation”
    添加到活动清单中,但如上所述,您需要在活动的
    onConfigurationChanged()
    中重新加载适当的资源,例如特定于方向的布局。我不建议这样做,因为当发生其他配置更改时,您仍然会遇到监控消失的问题,或者您需要确定应用程序应该如何处理它们(并将它们添加到
    android:configChanges
    中的更改列表中)

  • 如前所述,使用android:screenOrientation可以完全更改应用程序的禁用方向,但我真的不建议这样做,除非您希望应用程序只在特定方向上工作,还有其他原因


  • 您有几个选择:

  • 您可以将传感器侦听器移动到应用程序类中,该类由
    中的
    android:name
    定义,并命名您派生的类。我建议采用这种方法

  • 您可以将
    android:configChanges=“orientation”
    添加到活动清单中,但如上所述,您需要在活动的
    onConfigurationChanged()
    中重新加载适当的资源,例如特定于方向的布局。我不建议这样做,因为当发生其他配置更改时,您仍然会遇到监控消失的问题,或者您需要确定应用程序应该如何处理它们(并将它们添加到
    android:configChanges
    中的更改列表中)

  • 如前所述,使用android:screenOrientation可以完全更改应用程序的禁用方向,但我真的不建议这样做,除非您希望应用程序只在特定方向上工作,还有其他原因


  • 谢谢你的答复。我想这就是我需要的:)谢谢你的回复。我想这就是我需要的:)Thanx要了解信息,我将查看应用程序类Thanx要了解信息,我将查看应用程序类