Han*_*man 19 android sensor broadcastreceiver android-sensors
我在Manifest.xml中编写了一个接收器来检测设备运动是否发生了变化
<receiver android:name="com.hanuman.sensor.receiver.SensorReceiver" >
<intent-filter
android:enabled="true"
android:exported="false" >
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
和内部接收器onReceive()方法代码是:
String action = intent.getAction();
if (action.equals(Intent.ACTION_USER_PRESENT)) {
System.out.println("User is present");
Intent s = new Intent(context, MainActivity.class);
s.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(s);
} else {
System.out.println("User is not present");
}
Run Code Online (Sandbox Code Playgroud)
最后我的问题是,当它被移动时没有检测到传感器,它正在检测我的设备何时解锁然后它正在调用我的MainActivity,但我想检测我的设备运动何时被更改然后我想在接收器中检测到.我怎样才能做到这一点?.
小智 10
获取SensorManager的对象,如下所示 -
SensorManager sensorMan = (SensorManager)getSystemService(SENSOR_SERVICE);
Sensor sensor = sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Run Code Online (Sandbox Code Playgroud)
注册监听器以监听运动传感器的变化 -
sensorMan.registerListener(context, sensor,
SensorManager.SENSOR_DELAY_UI);
Run Code Online (Sandbox Code Playgroud)
然后重写onSensorChanged()方法以检测更改 -
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
//do some stuff
}
//do some other code for other Sensor type
}
Run Code Online (Sandbox Code Playgroud)