bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


android

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
android [2023/04/27 23:37]
enric_mieza_sanchez [Més coses interessants]
android [2024/04/23 13:29] (actual)
enric_mieza_sanchez [Desenvolupament Android]
Línia 37: Línia 37:
   * **Xamarin** permet treballar en C# i compilar de forma multiplataforma per a Android i iOS   * **Xamarin** permet treballar en C# i compilar de forma multiplataforma per a Android i iOS
  
 +Android Studio i les àrees de treball:
 +
 +{{:android-studio-1.png?direct|}}
  
 ==== Alguns aspectes inicials ==== ==== Alguns aspectes inicials ====
Línia 82: Línia 85:
   - Mira els apartats de més amunt i l'article [[Java]] per disposar de la instal·lació del IDE i llibreries adequades.   - Mira els apartats de més amunt i l'article [[Java]] per disposar de la instal·lació del IDE i llibreries adequades.
   - Es recomana utilitzar algun tipus de sistema de control de versions. El més popular és [[Git]] i la web www.github.com . Es pot fer les operacions més comunes al menú VCS de IntelliJ IDEA.   - Es recomana utilitzar algun tipus de sistema de control de versions. El més popular és [[Git]] i la web www.github.com . Es pot fer les operacions més comunes al menú VCS de IntelliJ IDEA.
-  - Si ja has llegit els apunts per aclarir els conceptes previs, podem passar a l'acció. Crea una aplicació amb una //empty activity// des del menú File->New->Project->Android+  - Si ja has llegit els apunts per aclarir els conceptes previs, podem passar a l'acció. Crea una aplicació amb una //empty views activity// des del menú File->New->Project->Android
   - Afegeix un **botó** ([[https://developer.android.com/reference/android/widget/Button|Button]]). Busca els arxius de recursos **R.layout** (carpeta ''res->layout'' i arxiu ''activity_main.xml'') per afegir-ho gràficament (millor no complicar-nos la vida abans d'hora ;).   - Afegeix un **botó** ([[https://developer.android.com/reference/android/widget/Button|Button]]). Busca els arxius de recursos **R.layout** (carpeta ''res->layout'' i arxiu ''activity_main.xml'') per afegir-ho gràficament (millor no complicar-nos la vida abans d'hora ;).
   - Afegeix un **OnButtonClickListener** al mètode ''onCreate'' de la ''MainActivity.java''. En principi, el botó no fa res quan el premem. Aquest //listener// ens permetrà captar l'event OnClick i fer alguna cosa. A la documentació del mateix [[https://developer.android.com/reference/android/widget/Button|Button]] trobaràs un exemple de com fer-ho.   - Afegeix un **OnButtonClickListener** al mètode ''onCreate'' de la ''MainActivity.java''. En principi, el botó no fa res quan el premem. Aquest //listener// ens permetrà captar l'event OnClick i fer alguna cosa. A la documentació del mateix [[https://developer.android.com/reference/android/widget/Button|Button]] trobaràs un exemple de com fer-ho.
Línia 103: Línia 106:
 ==== Aplicació principal (joc) ==== ==== Aplicació principal (joc) ====
 <WRAP todo> <WRAP todo>
-  - Crea una nova aplicació amb una sola ''Activity'' (Empty Activity).+  - Crea una nova aplicació amb una sola ''Activity'' (Empty Views Activity).
   - Ves al layout i crea la casella d'entrada per al número. Es tracta d'un objecte ''TextEdit'', però volem restringir-ho perquè només ens deixi entrar nombres i no lletres. Entre els objectes disponibles al IDE hi ha un de predefinit que ja ens ho facilita.   - Ves al layout i crea la casella d'entrada per al número. Es tracta d'un objecte ''TextEdit'', però volem restringir-ho perquè només ens deixi entrar nombres i no lletres. Entre els objectes disponibles al IDE hi ha un de predefinit que ja ens ho facilita.
   - Crea un botó i un listener perquè l'usuari validi l'entrada del número. Prova que funciona amb un Toast, per exemple.   - Crea un botó i un listener perquè l'usuari validi l'entrada del número. Prova que funciona amb un Toast, per exemple.
Línia 110: Línia 113:
   - Afegeix un [[https://developer.android.com/guide/topics/ui/dialogs?hl=es-419|AlertDialog]] per avisar l'usuari de quan acaba la partida i felicitar-lo.   - Afegeix un [[https://developer.android.com/guide/topics/ui/dialogs?hl=es-419|AlertDialog]] per avisar l'usuari de quan acaba la partida i felicitar-lo.
   - Quan s'acaba la partida, es regenera el número aleatori i es torna a jugar.   - Quan s'acaba la partida, es regenera el número aleatori i es torna a jugar.
-  - Posa un quadre de text o ''TextView'' amb ''Scroll'' per tal de facilitar el seguiment de la partida per part de l'usuari (així veurà l'històric dels números que ha anat entrant.+  - Posa un ''TextView'' per anar indicant a l'usuari l'historial dels intents i resultats que ha obtingut. 
 +  - Per aconseguir un //scroll// en la pantalla de l'historial podem posar un ''ScrollView'' i a dins seu posar el ''TextView''.
   - Implementa un comptador d'intents que es visualitzi en algun racó de la pantalla. Ens servirà per després fer el //ranking//.   - Implementa un comptador d'intents que es visualitzi en algun racó de la pantalla. Ens servirà per després fer el //ranking//.
  
 Podem millorar la jugabilitat amb alguns detalls més. Podem millorar la jugabilitat amb alguns detalls més.
  
-  - Per facilitar el joc a l'usuari, esborrem el número del ''EditText'' que l'usuari fa un intent.+  - Per facilitar el joc a l'usuari, esborrem el número del ''EditText'' quan l'usuari fa un intent d'endevinar (si no, l'usuari haurà d'esborrar-ho manualment).
   - Es pot millorar la jugabilitat si implementem que **el joc detecti la tecla Enter** del teclat de pantalla.   - Es pot millorar la jugabilitat si implementem que **el joc detecti la tecla Enter** del teclat de pantalla.
     * S'implementa millor amb un [[https://stackoverflow.com/questions/25595414/stop-keyboard-from-closing-when-enter-is-pressed-in-edittext|OnEditorActionListener]] ja que el ''OnClickListener'' amaga el teclat al prèmer ENTER.     * S'implementa millor amb un [[https://stackoverflow.com/questions/25595414/stop-keyboard-from-closing-when-enter-is-pressed-in-edittext|OnEditorActionListener]] ja que el ''OnClickListener'' amaga el teclat al prèmer ENTER.
Línia 140: Línia 144:
 Abans, però, caldrà crear una nova ''Activity'' per poder posar-hi el rànking: Abans, però, caldrà crear una nova ''Activity'' per poder posar-hi el rànking:
 <WRAP todo> <WRAP todo>
-  - Crear nova //Activity// amb el seu //layout// associat (arxiu XML): <code>File -> New -> Android Activity -> Empty Activity</code> +  - Crear nova //Activity// amb el seu //layout// associat (arxiu XML): <code>File -> New -> Android Activity -> Empty Views Activity</code> 
-  - Afegim [[https://stackoverflow.com/questions/9173347/android-setonkeylistener-on-edittext|Intent]]: aquest objecte ens serveix per posar en marxa una altra ''Activity''. Així podrem passar de la partida a la taula de rècords. Caldrà que l'activem quan acabem la partida, o bé podem afegir un botó nou per visualitzar la taula de rècords. [[https://developer.android.com/training/basics/firstapp/starting-activity?hl=es-419|Aquest exemple per obrir una nova activity t'ajudarà]].+    * ULL! Si creeu la ''Activity'' manualment, cal afegir-la també manualment a l'arxiu ''AndroidManifest.xml'' 
 +  - Afegim [[https://developer.android.com/guide/components/intents-filters?hl=es-419|Intent]]: aquest objecte ens serveix per posar en marxa una altra ''Activity''. Així podrem passar de la partida a la taula de rècords. Caldrà que l'activem quan acabem la partida, o bé podem afegir un botó nou per visualitzar la taula de rècords. [[https://developer.android.com/training/basics/firstapp/starting-activity?hl=es-419|Aquest exemple per obrir una nova activity t'ajudarà]].
   - Per tal que puguem afegir una nova entrada a la taula de rècords caldrà que el ''MainActivity'' passi el paràmetre del nº d'intents que el jugador ha realitzat. Per passar paràmetres examina el mètode ''putExtra()'' de l'objecte ''Intent''.   - Per tal que puguem afegir una nova entrada a la taula de rècords caldrà que el ''MainActivity'' passi el paràmetre del nº d'intents que el jugador ha realitzat. Per passar paràmetres examina el mètode ''putExtra()'' de l'objecte ''Intent''.
   - Diàlegs o [[https://developer.android.com/guide/topics/ui/dialogs?hl=es-419|Dialogs]]: abans d'obrir la ''RecordsActivity'' convé que demanem a l'usuari si vol o no afegir el seu rècord a la taula. El //widget// Dialog ens permetrà fer això, i també demanar el nom de l'usuari. Tenim 2 estratègies diferents per implementar el ''Dialog'' que necessitem:   - Diàlegs o [[https://developer.android.com/guide/topics/ui/dialogs?hl=es-419|Dialogs]]: abans d'obrir la ''RecordsActivity'' convé que demanem a l'usuari si vol o no afegir el seu rècord a la taula. El //widget// Dialog ens permetrà fer això, i també demanar el nom de l'usuari. Tenim 2 estratègies diferents per implementar el ''Dialog'' que necessitem:
Línia 326: Línia 331:
  
 ==== Text to Speech ==== ==== Text to Speech ====
-Una funció interessant per a les nostres apps és fer-la parlar. Per fer-ho, podeu gravar vosaltres els sons, però és molt interessant utilitzar el sintetitzador de veu d'Android, amb la llibreria Text-to-Speech. Així podem fer-li parlar qualsevol cosa, sense haver d'enregistrar abans. Val a dir que en els idiomes més parlats (anglès, castellà, francès, xinès) funciona molt bé, però en català el sintetitzador és de poca qualitat. 
  
-  - [[https://www.tutorialspoint.com/android/android_text_to_speech.htm|Tutorial per utilitzar Text-to-Speech en Android]]. +Pots mirar més sobre reconeixement i síntesi de veu a l'article [[Android Speech]].
-  - [[https://developer.android.com/reference/android/speech/tts/TextToSpeech|Documentació oficial de Text-to-Speech per a Android]]+
-  - Exemple [[https://stackoverflow.com/questions/3577058/android-tts-languages|per canviar de llengua (Locale)]] per a llengües que no estan als objectes principals.+
  
 \\ \\
android.1682638633.txt.gz · Darrera modificació: 2023/04/27 23:37 per enric_mieza_sanchez