これらの値を取得するには、StepCounterセンサーを使用する必要があります。
public class StepCounterService extends Service implements SensorEventListener{
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Check if the stepCounter is available first.
List<Sensor> gravSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
for(Sensor each : gravSensors){
//check for sensor named stepcounter in the list.
Log.d("Sesnor_list",each.getName());
}
//If it's available we can retrieve the value using following code
Sensor sensor;
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
return START_STICKY;
}
//An onSensorChanged event gets triggered every time new step count is detected.
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == sensor.TYPE_STEP_COUNTER){
Log.d("step_count = ",event.values[0]);
}
}
}
出典
2017-03-22 15:27:09
sai
リスナーはどこに登録すればよいですか?私はバックグラウンドでステップを取得したい。認識されたアクティビティを管理するIntentServiceがあり、新しいアクティビティが検出されるたびに、そのアクティビティをデータベースに挿入します。同じ活動が検出された期間に検出されたステップも挿入したいと思います。私はすでにあなたのソリューションをUIに実装していましたが、私はUIにリアルタイムステップを表示したくありません。代わりに、私はバックグラウンドで手順を使用する必要があります – Belen
私はコードを変更しただけで、サービスのonstartコマンド内に実装する、それは正常に動作するはずです。 event.values [0]を表示する行をデータベースへの呼び出しに置き換えます。 – sai