デバイスがポケットにあるときではなく、手にあるときだけデバイスの動きを検出する必要がある小さなアプリケーションを構築しています。
今、私はアプリケーションを構築しましたが、私が歩いているか走っているときにセンサーイベントがトリガーされ、モバイルがポケットに入っていますか?
誰かがデバイスを持っている場合にのみ変更されたセンサーを呼び出す方法はありますか?
ありがとう、ラメッシュ
デバイスがポケットにあるときではなく、手にあるときだけデバイスの動きを検出する必要がある小さなアプリケーションを構築しています。
今、私はアプリケーションを構築しましたが、私が歩いているか走っているときにセンサーイベントがトリガーされ、モバイルがポケットに入っていますか?
誰かがデバイスを持っている場合にのみ変更されたセンサーを呼び出す方法はありますか?
ありがとう、ラメッシュ
ACTION_USER_PRESENTインテントを使用して、電話が使用中か待機中かを最初に確認できます。その後、加速度計を実装してモーションを検出できます。次に例を示します。
public class SensorsActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sensors);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
}
public void onAccuracyChanged(Sensor sensor,int accuracy){
}
public void onSensorChanged(SensorEvent event){
// check sensor type
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
// TODO after accelerometer detected do something here
}
}
}
ACTION_USER_PRESENT検出には、次のBroadcastReceiverが必要です。
public class SensorReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_USER_PRESENT)) {
// TODO notify the user is present
}
}
}
そして、次のようにManifest.xmlで宣言します。
<receiver android:name=".SensorReceiver">
<intent-filter android:enabled="true" android:exported="false">
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
それが役に立てば幸い!