blob: 2b47619de143dab6606907e7a8af538098d93442 [file] [log] [blame]
package com.fairphone.checkup.tests.accelerometer;
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 AccelerometerTest extends Test {
private static final String TAG = AccelerometerTest.class.getSimpleName();
SensorEventListener mSensorEventListener;
SensorManager mSensorManager;
Sensor mAccelerometer;
View mTestView;
public AccelerometerTest(Context context) {
super(context);
}
@Override
protected int getTestTitleID() {
return R.string.accelerometer_test_title;
}
@Override
protected int getTestDescriptionID() {
return R.string.accelerometer_test_description;
}
private void replaceView() {
mTestView = LayoutInflater.from(getContext()).inflate(R.layout.view_accelerometer_test, null);
setTestView(mTestView);
}
@Override
protected void runTest() {
replaceView();
getAccelerometer();
setupSensorListener();
}
@Override
protected void onCleanUp() {
mSensorManager.unregisterListener(mSensorEventListener);
mSensorEventListener = null;
super.onCleanUp();
}
private void getAccelerometer() {
mSensorManager = (SensorManager)
getContext().getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if (mAccelerometer == null) {
onTestFailure();
return;
}
}
private void setupSensorListener() {
mSensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
onSensorChange(event);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
mSensorManager.registerListener(mSensorEventListener, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
private void onSensorChange(SensorEvent event) {
((TextView)findViewById(R.id.x_value)).setText(format(event.values[0]));
((TextView)findViewById(R.id.y_value)).setText(format(event.values[1]));
((TextView)findViewById(R.id.z_value)).setText(format(event.values[2]));
}
private String format(float value) {
DecimalFormat df = new DecimalFormat("0.00");
String ret = "";
if(!(value < 0.0)) {
ret = " ";
}
ret += df.format(value);
return ret;
}
}