2017-03-22 9 views
1

Android用のGoogle ActivityRecognitionApiを使用して、ユーザーが歩行、走行、サイクリングをしていることを知ります。 これらのアクティビティの練習中にユーザーが実行した手順を得る方法はありますか?私はIntentServiceを使ってバックグラウンドでアクティビティの認識をしています。私はバックグラウンドでも手順を取得する必要があります。アクティビティ認識のステップを取得する方法(ActivityRecognitionApiとSensorEventListenerを組み合わせる)

答えて

-1

これらの値を取得するには、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]); 
    } 

} 
} 
+0

リスナーはどこに登録すればよいですか?私はバックグラウンドでステップを取得したい。認識されたアクティビティを管理するIntentServiceがあり、新しいアクティビティが検出されるたびに、そのアクティビティをデータベースに挿入します。同じ活動が検出された期間に検出されたステップも挿入したいと思います。私はすでにあなたのソリューションをUIに実装していましたが、私はUIにリアルタイムステップを表示したくありません。代わりに、私はバックグラウンドで手順を使用する必要があります – Belen

+0

私はコードを変更しただけで、サービスのonstartコマンド内に実装する、それは正常に動作するはずです。 event.values [0]を表示する行をデータベースへの呼び出しに置き換えます。 – sai

関連する問題