我希望实现一个SensorManager
类,可以处理与传感器相关的所有内容,但这显然需要我启动一个新活动。
我不打算这样做 - 只需运行计算。使用服务处理此问题的最佳方法是,您可以从服务中调用活动方法吗?
答案 0 :(得分: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”实例,并可以从加速度计中获取最后一个度量。