public BumpMonitor(Context context) { context.bindService(new Intent(context, MonitorService.class), mConnection, Context.BIND_ABOVE_CLIENT); sensorMgr = (SensorManager) context.getSystemService(AppCompatActivity.SENSOR_SERVICE); bumpSensor = sensorMgr.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION); if (bumpSensor == null) { Log.i("BumpMonitor", "Warning: no significant motion sensor"); } else { boolean registered = sensorMgr.requestTriggerSensor(sensorListener, bumpSensor); Log.i("BumpMonitor", "Significant motion sensor registered: "+registered); } }
@Override public void onTrigger(TriggerEvent event) { Log.i("BumpMonitor", "Sensor triggered"); //value[0] = 1.0 when the sensor triggers. 1.0 is the only allowed value. long curTime = System.currentTimeMillis(); // only allow one update every 100ms. if (event.sensor.getType() == Sensor.TYPE_SIGNIFICANT_MOTION) { if ((curTime - lastUpdate) > CHECK_INTERVAL) { lastUpdate = curTime; /* * Send Alert */ Message message = new Message(); message.what = EventTrigger.BUMP; try { if (serviceMessenger != null) { serviceMessenger.send(message); } } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //re-register the listener (it finishes after each event) boolean registered = sensorMgr.requestTriggerSensor(sensorListener, bumpSensor); Log.i("BumpMonitor", "Significant motion sensor re-registered: "+registered); } };
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) @Override protected void onResume() { super.onResume(); if (mSigMotion != null && mSensorManager.requestTriggerSensor(mListener, mSigMotion)) mTextView.append(getString(R.string.sig_motion_enabled) + "\n"); }
@Override protected void onResume() { super.onResume(); if (mSigMotion != null && mSensorManager.requestTriggerSensor(mListener, mSigMotion)) mTextView.append(getString(R.string.sig_motion_enabled) + "\n"); }
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) private void listing16_6() { SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); // Listing 16-6: Registering a Trigger Event Listener Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION); sensorManager.requestTriggerSensor(triggerEventListener, sensor); }
private void registerPickupListener() { SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Sensor pickupSensor = sensorManager.getDefaultSensor(25); if (pickupSensor != null) { sensorManager.requestTriggerSensor(new TriggerEventListener() { @Override public void onTrigger(TriggerEvent triggerEvent) { new ScreenController(NotificationListener.this, false).handlePickup(); if (isWakeOnPickupEnabled()) { registerPickupListener(); } } }, pickupSensor); } else { LoggerFactory.getLogger("NotificationListener").debug("No pickup listener available"); } }
@TargetApi(VERSION_CODES.JELLY_BEAN_MR2) private static SensorManager mockSensorManager(final int events, final boolean result) { SensorManager sensorManager = mock(SensorManager.class); when(sensorManager.getDefaultSensor(GOOD_SENSOR)).thenReturn(mockSensor()); when(sensorManager.getDefaultSensor(BAD_SENSOR)).thenReturn(null); final ArgumentCaptor<SensorEventListener> sensorArgument = ArgumentCaptor.forClass(SensorEventListener.class); when(sensorManager.registerListener(sensorArgument.capture(), any(Sensor.class), anyInt(), any(Handler.class))) .thenAnswer(new Answer<Boolean>() { @Override public Boolean answer(InvocationOnMock invocation) throws Throwable { for (int i = 0; i < events; i++) { sensorArgument.getValue().onSensorChanged(mockSensorEvent()); } return result; } }); final ArgumentCaptor<TriggerEventListener> triggerArgument = ArgumentCaptor.forClass(TriggerEventListener.class); when(sensorManager.requestTriggerSensor(triggerArgument.capture(), any(Sensor.class))) .thenAnswer(new Answer<Boolean>() { @Override public Boolean answer(InvocationOnMock invocation) throws Throwable { triggerArgument.getValue().onTrigger(mockTriggerEvent()); return result; } }); return sensorManager; }
boolean success = mSensorManager.requestTriggerSensor(listener, sensor); if (!success) { subscriber.onError(new SensorException(sensor));