Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Següent revisió | Revisió prèvia | ||
android_sensors [2024/01/26 15:15] enric_mieza_sanchez creat |
android_sensors [2024/01/26 17:37] (actual) enric_mieza_sanchez [Exemple] |
||
---|---|---|---|
Línia 1: | Línia 1: | ||
====== Sensors de moviment d' | ====== Sensors de moviment d' | ||
+ | |||
+ | {{ : | ||
Referències: | Referències: | ||
- | * [[https:// | + | * [[https:// |
* [[https:// | * [[https:// | ||
+ | |||
+ | {{tag> #Dam #DamMp08 #DamMp08Uf2 # | ||
\\ | \\ | ||
- | ===== Exemple ===== | + | ===== Sensors ===== |
+ | Quan parlem de " | ||
+ | |||
+ | 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: | ||
+ | * Sensor.TYPE_GRAVITY | ||
+ | * Sensor.TYPE_LINEAR_ACCELERATION | ||
+ | * Sensor.TYPE_ROTATION_VECTOR | ||
+ | * Sensor.TYPE_SIGNIFICANT_MOTION | ||
+ | * Sensor.TYPE_STEP_COUNTER | ||
+ | * Sensor.TYPE_STEP_DETECTOR | ||
+ | * Sensor.TYPE_ACCELEROMETER | ||
+ | * Sensor.TYPE_GYROSCOPE | ||
+ | |||
+ | 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ó. | ||
+ | |||
+ | ===== Exemple | ||
<file java MainActivity.java> | <file java MainActivity.java> | ||
Línia 14: | Línia 35: | ||
private SensorManager sensorManager; | private SensorManager sensorManager; | ||
private Sensor sensor; | private Sensor sensor; | ||
+ | SensorEventListener sensorListener; | ||
@Override protected void onCreate(Bundle savedInstanceState) { | @Override protected void onCreate(Bundle savedInstanceState) { | ||
Línia 19: | Línia 41: | ||
setContentView(R.layout.activity_main); | setContentView(R.layout.activity_main); | ||
- | | + | |
- | yTextView = findViewById(R.id.yTextView); | + | |
- | zTextView = findViewById(R.id.zTextView); | + | |
- | + | ||
- | final SensorEventListener mSensorListener | + | |
@Override | @Override | ||
public void onSensorChanged(SensorEvent sensorEvent) { | public void onSensorChanged(SensorEvent sensorEvent) { | ||
- | // Visualitza el contingut dels eixos xyz de sensorEvent.values[]... | + | // Valors |
+ | float xAcc = sensorEvent.values[0]; | ||
+ | float yAcc = sensorEvent.values[1]; | ||
+ | float zAcc = sensorEvent.values[2]; | ||
| | ||
+ | // Processament o visualització de dades... | ||
} | } | ||
@Override | @Override | ||
public void onAccuracyChanged(Sensor sensor, int i) { | public void onAccuracyChanged(Sensor sensor, int i) { | ||
+ | // Es pot ignorar aquesta CB de moment | ||
} | } | ||
}; | }; | ||
- | sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); | + | |
- | // Aquí seleccionem el tipus de sensor (veure doc oficial) | + | |
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); | sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); | ||
+ | | ||
+ | // registrem el Listener per capturar els events del sensor | ||
if( sensor!=null ) { | if( sensor!=null ) { | ||
- | sensorManager.registerListener(mSensorListener, | + | sensorManager.registerListener(sensorListener,sensor, |
+ | | ||
} | } | ||
} | } | ||
} | } | ||
</ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Exercici ===== | ||
<WRAP todo> | <WRAP todo> | ||
- | Implementa una app que visualitzi els valors de l' | + | Implementa una app que visualitzi els valors de l' |
Compara amb el resultat de '' | Compara amb el resultat de '' | ||
+ | |||
+ | Llença l'app al teu dispositiu mòbil. | ||
+ | |||
+ | Com has de col·locar el mòbil per aconseguir aquests valors (aproximats)?: | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP todo> | ||
+ | **Double tap** | ||
Intenta implementar un detector de " | Intenta implementar un detector de " | ||
</ | </ | ||