Referències:
Quan parlem de «sensors» en Android solem referir-nos als de moviment: l'acceleròmetre i el giroscopi (brúixola 3D).
També son sensors (però no de moviment) la càmera, el micro, la pantalla tàctil i el GPS.
Si mirem la documentació oficial podrem veure que la llibreria Android disposa dels següents deteccions:
Els dos darrers son les dades «en cru» tal i com arriben dels sensors. Els altres son mecanismes de la llibreria per facilitar-nos la programació.
public class MainActivity extends AppCompatActivity { private SensorManager sensorManager; private Sensor sensor; SensorEventListener sensorListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sensorListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent sensorEvent) { // Valors de l'acceleròmetre en m/s^2 float xAcc = sensorEvent.values[0]; float yAcc = sensorEvent.values[1]; float zAcc = sensorEvent.values[2]; // Processament o visualització de dades... } @Override public void onAccuracyChanged(Sensor sensor, int i) { // Es pot ignorar aquesta CB de moment } }; // Seleccionem el tipus de sensor (veure doc oficial) sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); // registrem el Listener per capturar els events del sensor if( sensor!=null ) { sensorManager.registerListener(sensorListener,sensor, SensorManager.SENSOR_DELAY_NORMAL); } } }
Implementa una app que visualitzi els valors de l'acceleròmetre seguint l'exemple anterior on emprem el Sensor.TYPE_ACCELEROMETER
. Tens unes captures de pantalla més a baix de com pots fer la app.
Compara amb el resultat de Sensor.TYPE_LINEAR_ACCELERATION
. Quina diferència veus?
Llença l'app al teu dispositiu mòbil.
Com has de col·locar el mòbil per aconseguir aquests valors (aproximats)?:
Double tap
Intenta implementar un detector de «double tap». No ha de reaccionar amb 1 sol «tap» ni tampoc si ens desplacem ràpid o fem una sola sacsejada del mòbil.