Подтвердить что ты не робот

Как я обнаружу датчик движения в широковещательном приемнике?

Я написал один приемник для обнаружения изменения движения устройства или не так, как в 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");
        }

Наконец, мой вопрос заключается в том, что он не обнаруживает датчик, когда он движется, он обнаруживает, когда мое устройство разблокировано, а затем вызывает мою MainActivity, но я хочу определить, когда мое устройство движется изменено, то я хочу обнаружить в приемнике. Как я могу это сделать?

4b9b3361

Ответ 1

Получить объект 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
    }

Ответ 2

Вы не можете, и вы не должны этого делать, потому что, когда экран отключается, датчик отключается автоматически, это делается системой на большинстве устройств, некоторые устройства поддерживают датчики, прослушивающие после того, как экран погас, как 4. Но вы можете создать приемники, которые будут слушать экран и включать экран.

Открытый класс Экран расширяет 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);