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

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

最佳答案

绝对有可能创建一个类(不是Activity)来管理传感器。您正确地说,为了“订阅”传感器,您需要一个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”的实例,并可以从加速度计获得最后的度量。

08-18 06:19
查看更多