Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
android_sensors [2024/01/26 17:37] enric_mieza_sanchez [Exemple] |
android_sensors [2025/01/13 18:28] (actual) enric_mieza_sanchez [Exercici] |
||
|---|---|---|---|
| Línia 6: | Línia 6: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[Kotlin]] en aquesta wiki. | ||
| - | {{tag> #Dam #DamMp08 #DamMp08Uf2 # | + | {{tag> #Dam #DamMp08 #DamMp08Uf2 # |
| \\ | \\ | ||
| Línia 29: | Línia 30: | ||
| ===== Exemple amb dades de l' | ===== Exemple amb dades de l' | ||
| + | |||
| + | <tabbox Versió Kotlin> | ||
| + | |||
| + | En aquesta versió apareix la clàssica herència de '' | ||
| + | |||
| + | <file kotlin MainActivity.kt> | ||
| + | class MainActivity : AppCompatActivity(), | ||
| + | |||
| + | private lateinit var sensorManager: | ||
| + | private lateinit var accelerometre: | ||
| + | private lateinit var binding: ActivityMainBinding | ||
| + | |||
| + | override fun onCreate(savedInstanceState: | ||
| + | super.onCreate(savedInstanceState) | ||
| + | enableEdgeToEdge() | ||
| + | |||
| + | // Utilitzem bindings per facilitar accés als elements gràfics | ||
| + | // recorda activar-los a build.gradle.kts afegint: | ||
| + | // viewBinding { enable = true } | ||
| + | binding = ActivityMainBinding.inflate(layoutInflater) | ||
| + | setContentView(binding.root) | ||
| + | | ||
| + | // escoltar variacions dels sensors | ||
| + | sensorManager = getSystemService( | ||
| + | Context.SENSOR_SERVICE) as SensorManager | ||
| + | accelerometre = sensorManager.getDefaultSensor( | ||
| + | Sensor.TYPE_ACCELEROMETER) as Sensor | ||
| + | sensorManager.registerListener(this, | ||
| + | SensorManager.SENSOR_DELAY_NORMAL) | ||
| + | } | ||
| + | |||
| + | override fun onSensorChanged(event: | ||
| + | // emprem les dades del sensor | ||
| + | val x = event.values[0] | ||
| + | val y = event.values[1] | ||
| + | val z = event.values[2] | ||
| + | // 1g = 9,8 m/s² , què és un valor força alt. | ||
| + | // Al fer *10 ens acostem als 100, que és el valor màxim per defecte de la ProgressBar | ||
| + | binding.xProgressBar.progress = abs(x*10.0).toInt() | ||
| + | binding.yProgressBar.progress = abs(y*10.0).toInt() | ||
| + | binding.zProgressBar.progress = abs(z*10.0).toInt() | ||
| + | } | ||
| + | |||
| + | override fun onAccuracyChanged(sensor: | ||
| + | // TODO(" | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <tabbox Versió Java> | ||
| + | |||
| + | Versió amb objecte '' | ||
| <file java MainActivity.java> | <file java MainActivity.java> | ||
| Línia 70: | Línia 123: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | </ | ||
| + | |||
| \\ | \\ | ||
| Línia 77: | Línia 133: | ||
| <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 '' | ||
| Llença l'app al teu dispositiu mòbil. | Llença l'app al teu dispositiu mòbil. | ||
| Línia 87: | Línia 141: | ||
| {{: | {{: | ||
| {{: | {{: | ||
| + | |||
| + | Substitueix els '' | ||
| + | |||
| + | Compara amb el resultat de '' | ||
| </ | </ | ||
| <WRAP todo> | <WRAP todo> | ||
| - | **Double tap** | + | **Double |
| + | |||
| + | Normalment parlem de //tap// o //double tap// per a interaccions de " | ||
| + | |||
| + | Implementarem un detector de " | ||
| + | |||
| + | Una primera aproximació podria ser **implementar un comptador de //thuds// en cadascun dels eixos XYZ**. Hauràs d' | ||
| + | |||
| + | Assegura que al canviar la orientació (portrait/ | ||
| - | Intenta implementar un detector de " | ||
| </ | </ | ||