blob: 520bdfd41e578c86c38eacce748f9ed66149c89e [file] [log] [blame]
package com.fairphone.checkup.tests.gyroscope;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.fairphone.checkup.R;
import com.fairphone.checkup.tests.Test;
import java.text.DecimalFormat;
public class GyroscopeTest extends Test {
private static final String TAG = GyroscopeTest.class.getSimpleName();
SensorEventListener mSensorEventListener;
SensorManager mSensorManager;
Sensor mGyroscope;
View mTestView;
public GyroscopeTest(Context context) {
super(context);
}
@Override
protected int getTestTitleID() {
return R.string.gyroscope_test_title;
}
@Override
protected int getTestDescriptionID() {
return R.string.gyroscope_test_description;
}
private void replaceView() {
mTestView = LayoutInflater.from(getContext()).inflate(R.layout.view_gyroscope_test, null);
setTestView(mTestView);
}
@Override
protected void runTest() {
replaceView();
getGyroscope();
setupSensorListener();
}
@Override
protected void onCleanUp() {
mSensorManager.unregisterListener(mSensorEventListener);
mSensorEventListener = null;
super.onCleanUp();
}
private void getGyroscope() {
mSensorManager = (SensorManager)
getContext().getSystemService(Context.SENSOR_SERVICE);
mGyroscope = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
if (mGyroscope == null) {
onTestFailure();
return;
}
}
private void setupSensorListener() {
mSensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
onSensorChange(event);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
mSensorManager.registerListener(mSensorEventListener, mGyroscope, SensorManager.SENSOR_DELAY_NORMAL);
}
private void onSensorChange(SensorEvent event) {
((TextView)findViewById(R.id.x_value)).setText(event.values[0] + " " + getResources().getString(R.string.gyroscope_unit));
((TextView)findViewById(R.id.y_value)).setText(event.values[1] + " " + getResources().getString(R.string.gyroscope_unit));
((TextView)findViewById(R.id.z_value)).setText(event.values[2] + " " + getResources().getString(R.string.gyroscope_unit));
}
private String format(float value) {
DecimalFormat df = new DecimalFormat("#.##");
String ret = "";
if(!(value < 0.0)) {
ret = " ";
}
ret += df.format(value);
return ret;
}
}