1

我希望实现一个SensorManager可以处理所有与传感器相关的类,但这显然需要我启动一个新活动。

我不想这样做 - 只是运行计算。使用服务处理此问题的最佳方法是,您可以从服务中调用活动方法吗?

4

1 回答 1

1

绝对有可能创建一个类(不是活动)来管理传感器。你是对的,为了“订阅”一个传感器,你需要一个 SensorManager。但是任何类都可以实例化一个 SensorManager。

你可以想象一个类“mySensorClass”是这样开始的(想象你想从加速度计收集数据):

public class mySensorClass implements SensorEventListener {
   public static final String TAG = "mySensorClass";

   private SensorManager mSensorManager;
   private Sensor mAccelerometer;

[...]

然后,在构造函数中,您将实例化 SensorManager 并注册到它:

public DeviceOrientation(Context context) {
   mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
   mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

   mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}

最后,您可以使用以下方法将从加速度计接收到的数据存储在类变量中:

@Override
public void onSensorChanged(SensorEvent event) { ... }

最终,您的活动只需创建一个“mySensorClass”实例,并可以从加速度计获取最后一个测量值。

于 2013-02-28T10:02:40.490 回答