El día 16 de Mayo de 2018 empecé el curso “Desarrollo de Aplicaciones Android” en el PUE.
Agradecimientos a Eloi Rifà por darme a conocer el PUE y también a Ricardo Jaume, profesor del curso y que ha empezado con muy buen pie! Un maestro de la vieja escuela!!
Estoy poniendo en marcha http://android.sergioguillen.com pero hasta que no lo tenga listo, iré colgando un post para cada clase a la que asista, con tal de resumir el contenido de la clase del día.
ATENCIÓN: este post es un borrador! Estoy construyendo http://android.sergioguillen.com donde pondré el contenido del curso de forma bien estructurada e iré colgando mis proyectos y aplicaciones en Android.
Para desarrollar aplicaciones en el entorno Android, podemos utilizar 2 lenguajes: el clásico Java o el nuevo Kotlin.
Java, que es un lenguaje de programación orientado a objetos.
Su nombre viene de una isla en Indonesia llamada “Java”:

Y el nombre de Kotlin viene por una isla cerca de San Petesburgo:

Son los dos lenguajes oficiales para el desarrollo de aplicaciones nativas en Android.
Este curso se centra en Java así que como dice Ricardo… Chicos, ¡vamos a por ello!
Podemos considerar 2 ramas en programación y en Java:
Nativo (Usando Java tal cual) o híbrido (usando frameworks, con lo que dependes de sus actualizaciones, como por ejemplo “Ionic“.
A la hora de compilar, se trabaja con Bundles: son empaquetados contenedores del código y los recursos de la aplicación que meteremos en el SmartPhone.
APK: Android PacKage.
Al igual que utilizamos SEO para mejorar el posicionamiento de las páginas web en Google, utilizaremos ASO para mejorar el posicionamiento de las aplicaciones en Google Play.
En el lanzamiento de una APP, existen 2 fases: el PRE y el POST.
El PRE consiste en el desarrollo de la aplicación en sí y para ello utilizaremos el entorno de programación “Android Studio”, que se ajusta a la arquitectura y componentes de Android.
El POST consiste en hacer ASO y promover nuestra aplicación por las diferentes redes sociales.
Es importante tener buenas Reviews, ya que con 3 ó 4 malas Reviews, ya podemos cambiar el nombre de nuestra APP porque estará conenada al fracaso y a que quede “aparcada”.
Lo más importante de una aplicación: que aporte VALOR!
Los orígenes de Java se remontan a Sun MicroSystems, cuando lanzaban servidores como la Sun Spark, corriendo Unix y pudiendo utilizarse JAVA para programar. Esas máquinas las conocí en 1996, cuando empecé a trabajar en La Vanguardia.
Respecto a JAVA, tenemos 2 grandes distribuciones:
- Java EE: Enterprise Edition
- Java SE: Standar Edition (en la que se centra este curso)
En este curso utilizaremos JAVA SE v8.
Para ver la versión de JAva que tenemos instalada en la máquina, basta con abrir una pantalla de terminal y escribir “java -version”:

Para descargar e instalar Java SE, basta con buscar en Google “oracle java 8” y buscar el link “Java SE Development Kit 8 Downloads.
Java API (8) -> Todo lo que podemos usar en Java (paquetes/clases)
Google “java api”: java api specifications java SE 8: información de paquetes y clases.
Paquete java.util: muestra todo lo que podemos utilizar de ese paquete.
“Ecosistema Android”, Java orientado a Android (no a páginas web).
developer.android.com: desde aquí podremos descargar el Android Studio
Configure->SDK Manager
API Level 27











*Soporte
Finish

Gradle: sistema que te indexa, que te gestiona las piezas/dependencias

Si sale el aviso del FireWall, darle al Permitir


Esperemos que acbe de indexr


Java MainActivity:

package com.sergioguillen.android.holamundo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.sergioguillen.android.holamundo”>
<application
android:allowBackup=”true”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:roundIcon=”@mipmap/ic_launcher_round”
android:supportsRtl=”true”
android:theme=”@style/AppTheme”>
<activity android:name=”.MainActivity”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>
</manifest>
Le damos l play:

Necesitamos dispositivo físico o virtual (AVD ndroid virtual device)



Drivers disponibles para muchas marcas: https://developer.android.com/studio/run/oem-usb










Unknown sources
Tema “huella digital”










Creamos una aplicaci´pn de consola


Zona escritura d ecódigopackage com.sergioguillen.android;

public class Main {
public static void main(String[] args) {
// write your code here
}
}
punto de entrada: lugar por donde ese ejcuta la aplicción
es el public static void main(String[] args
Todo e Java es un objeto! (P.O.O.)
Signific que todo el código que haga es una clase q tiene un nombre
Cuando la clase tiene un nombre y un método llamado main ese es el método de entrd
Escirbe(“hola”)
Lo pondrá en la

sout y tabulador escribe toda la función (ayuda):

public class Main {
public static void main(String[] args) {
// write your code here
System.out.println(“Hola Mundo”);
}
}
sout y tabulador escribe toda la función (ayuda):
Ejercicio Lanzmiento de Martillo
Clase/objeto Random:

New crea objeto que proviene de la clase random que se llama generador
A partir de la clase random, cre el objeto randomresultado = generador.
Te muestra los métodos de ese objeto

Control+Alt+M, genera la función tirarMartillo();

refactor

method, fabrica la función


Ctrl mayúsculas F10 ejecutapackage com.sergioguillen.android;
CÓDIGO DEL EJERCICIO DE TIRO DE MARTILLO (Contiene fallos):
import java.util.Random;
public class Main {
public static void main(String[] args) {
// write your code here
System.out.println(“Programa lanzamiento de martillo”);
// Tenemos 5 atletas lanzadores de martillo
// Sólo puede ganar uno
// El tope de longitud en la final es de 200m
// Hay una fase eliminatoria donde quedarán los que igualen o superen la marca de 120 metros
// Creación de atletas
String atleta1 = “Sergio”;
String atleta2 = “Pepe”;
String atleta3 = “Marta”;
String atleta4 = “Berta”;
String atleta5 = “Ricardo”;
//Creación de un array donde guardar las mrcas de los 5 atletas:
int[] marcas= new int[5];
int[] finalistas = new int[5];
// Lanzar martillo tantas veces como atletas haya
// Obtener finalistas (los que han superado los 120 metros
// Obtener ganador (de entre todos los finalistas)
//Entero [0..200]
//int es primitivo (solo es un valor)
//Integer (es un objeto)
ejecutarEliminatoria(marcas);
verElementos(marcas);
obtenerFinalistas(marcas, finalistas);
verElementos(finalistas);
}
private static void obtenerFinalistas(int[] marcas, int[] finalistas) {
int j=0;
for(int i=0;i<marcas.length;i++)
{
int marca=marcas[i];
if(marca>=120)
{
finalistas[j]=marca;
j=j+1;
}
}
}
private static void verElementos(int[] items) {
for(int i=0;i<5;i++) {
System.out.println(items[i]);
}
}
//El paso es por referencia! Se modifica el array marcas!!
private static void ejecutarEliminatoria(int[] marcas) {
//estructura iterativa
for(int i=0;i<5;i++){
int marca = tirarMartillo();
marcas[i]=marca;
// System.out.printf(“Marca: ” + marca + “\n”);
}
}
private static int tirarMartillo() {
int resultado; //declaramos resultado
resultado = 0;
// objeto de tipo Random
Random generador = new Random(); //Random está en el paquete util (ver declaración de la clase
resultado = generador.nextInt( 200); //bound=limite
return resultado;
}
}
“La Orquilla de compatibilidad” (versión Android): versión MÁXIMA y versión minima.
SERVICIOS: han de estar declarados en el Manifest!
MANIFEST.XML: “Lista de todos los participantes de la fiesta” – Ricardo Jaume
Recordad traer un teléfono Android y el cable USB!
JAVA
intelJ: entorno que usaremos para las aplicaciones de terminal
idealC, versión Community IntelliJIDEA (jetbrains.com)