如何在广播接收机中检测运动传感器?

我已经写了一个接收器来检测设备运动在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> 

而内部接收者的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"); } 

最后我的问题是,是不是检测传感器时,它是motiones,它是检测当我的设备在解锁那么它正在调用我的MainActivity ,但我想检测当我的设备的运动改变,然后我想在接收器中检测。 我怎样才能做到这一点?。

Solutions Collecting From Web of "如何在广播接收机中检测运动传感器?"

获取SensorManager的对象,

 SensorManager sensorMan = (SensorManager)getSystemService(SENSOR_SERVICE); Sensor sensor = sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

注册侦听器以侦听运动传感器中的更改 –

 sensorMan.registerListener(context, sensor, SensorManager.SENSOR_DELAY_UI); 

然后重写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 } 

你不能也不应该这样做,因为当屏幕熄灭时,传感器自动closures,这是由大多数设备中的系统完成的,有些设备支持传感器在屏幕熄灭之后像监视器一样收听4.但是你可以创build将听取屏幕和屏幕上的接收器。

公共类Screen扩展BroadcastReceiver {

  @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { screenOn(); } if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { screenOff(); } } IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_SCREEN_OFF); intentFilter.addAction(Intent.ACTION_SCREEN_ON); mReceiver = new Screen(); registerReceiver(mReceiver, intentFilter);