blob: 36fa23998990c82f83cda55756fe70f1f5d9000d [file] [log] [blame]
package com.fairphone.checkup.tests.proximity;
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;
/**
* Created by dirk on 16-10-15.
*/
public class ProximityTest extends Test {
private static final String TAG = ProximityTest.class.getSimpleName();
public ProximityTest(Context context) {
super(context);
}
SensorEventListener mSensorEventListener;
SensorManager mSensorManager;
Sensor mProximitySensor;
View mTestView;
@Override
protected int getTestTitleID() {
return R.string.proximity_test_title;
}
@Override
protected int getTestDescriptionID() {
return R.string.proximity_test_description;
}
private void replaceView() {
mTestView = LayoutInflater.from(getContext()).inflate(R.layout.view_proximity_test, null);
setTestView(mTestView);
}
@Override
protected void runTest() {
replaceView();
getProximitySensor();
setupSensorListener();
}
@Override
protected void onCleanUp() {
mSensorManager.unregisterListener(mSensorEventListener);
mSensorEventListener = null;
super.onCleanUp();
}
private void getProximitySensor() {
mSensorManager = (SensorManager)
getContext().getSystemService(Context.SENSOR_SERVICE);
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
if (mProximitySensor == null) {
onTestFailure();
return;
}
}
private void setupSensorListener() {
mSensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
onSensorChange(event);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
mSensorManager.registerListener(mSensorEventListener, mProximitySensor, SensorManager.SENSOR_DELAY_NORMAL);
}
private void onSensorChange(SensorEvent event) {
((TextView) findViewById(R.id.proximity_sensor_state_text)).setText(event.values[0] < 0.1 ? getResources().getString(R.string.proximity_state_triggered) : getResources().getString(R.string.proximity_state_not_triggered));
}
}