package com.example.agathe.tsgtest.sport;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.agathe.tsgtest.R;
import static android.content.Context.SENSOR_SERVICE;
import static android.hardware.Sensor.TYPE_STEP_COUNTER;
import static android.hardware.Sensor.TYPE_STEP_DETECTOR;
/**
* Created by koudm on 31/01/2017.
*/
public class RunningFragment extends Fragment implements SensorEventListener {
private Chronometer chrono;
private Button start_chrono_btn, stop_chrono_btn, save_performance_btn;
private TextView steps;
private ImageView img_feet;
private SensorManager mSensorManager;
private Sensor mStepCounterSensor;
private Sensor mStepDetectorSensor;
public RunningFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//sensors initialization for steps counting
mSensorManager = (SensorManager) getContext().getSystemService(SENSOR_SERVICE);
mStepCounterSensor = mSensorManager.getDefaultSensor(TYPE_STEP_COUNTER);
mStepDetectorSensor = mSensorManager.getDefaultSensor(TYPE_STEP_DETECTOR);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_running, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
chrono = (Chronometer) view.findViewById(R.id.chrono);
steps= (TextView) view.findViewById(R.id.stepscounts);
start_chrono_btn = (Button) view.findViewById(R.id.btn_start_chrono);
stop_chrono_btn = (Button) view.findViewById(R.id.btn_stop_chrono);
img_feet = (ImageView) view.findViewById(R.id.img_feet);
save_performance_btn = (Button) view.findViewById(R.id.btn_save_perf);
// setup chronometer start button.
chrono.setFormat(" %s");
start_chrono_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chrono.start();
}
});
// setup chronometer stop and restart button.
stop_chrono_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chrono.stop();
}
});
// setup save day,steps and chronometer time button.
save_performance_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//save
//and reset the chronometer
chrono.setBase(SystemClock.elapsedRealtime());
}
});
img_feet.setImageResource(R.drawable.sport_steps);
}
@Override
public void onResume() {
super.onResume();
mSensorManager.registerListener(this, mStepCounterSensor, SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this, mStepDetectorSensor, SensorManager.SENSOR_DELAY_FASTEST);
}
public void onSensorChanged(SensorEvent event) {
Sensor sensor = event.sensor;
float[] values = event.values;
int value = -1;
if (values.length > 0) {
value = (int) values[0];
}
while (chrono.isActivated()) {
if (sensor.getType() == TYPE_STEP_COUNTER) {
steps.setText("You did " + value + "steps !");
} /**else if (sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {
// For test only. Only allowed value is 1.0 i.e. for step taken
steps.setText("Step Detector Detected : " + value);
}**/
}
}
public void onAccuracyChanged(Sensor sensor, int i) {
}
public void onStop() {
super.onStop();
/** mSensorManager.unregisterListener(this, mStepCounterSensor);
mSensorManager.unregisterListener(this, mStepDetectorSensor);
**/
}
}