Desarrollo de aplicaciones para dispositivos móviles Android

Introducción

Johnattan Jaramillo G.

jjaramillo238@misena.edu.co

Contenido del curso

1- Introducción

2- Layouts y widgets

3- Actividades y fragmentos

4- Almacenamiento local

5- Almacenamiento remoto

6- Material design

7- Publicación y marketing de apps

INTRODUCCIÓN ANDROID (1/2)

  • Introducción al desarrollo de aplicaciones para dispositivos móviles
  • Dispositivos móviles y sistemas operativos
  • Definición
  • Historia
  • Versiones
  • ¿Porqué Android?
  • Componentes de aplicaciones
  • Android Stack
  • Documentación

INTRODUCCIÓN ANDROID (2/2)

  • Preparación del entorno de trabajo
    • Requisitos de instalación
    • Configuraciones adicionales
  • Aprendizajes previos
  • Perfil del desarrollador
  • Mi primera aplicación
    • Crear nuevo proyecto
    • Ejecución de app
  • Gestor de dependencias gradle
  • Estructura de proyecto
  • Ejercicio 1

Desarrollo de apps para dispositivos móviles

Número de aplicaciones disponibles en las principales tiendas de aplicaciones, marzo 2017

https://www.statista.com

Fuente

Desarrollo de apps para dispositivos móviles

Ingresos de la tienda de aplicaciones móviles a nivel mundial en 2015, 2016 y 2020 (en miles de millones de dólares)

https://www.statista.com

Fuente

Desarrollo de apps para dispositivos móviles

Distribución de ingresos de aplicaciones móviles a nivel mundial en 2017, por canal de monetización

https://www.statista.com

Fuente

Dispositivos moviles

Cuando hablamos de dispositivos móviles, pensamos en

  • SmartPhone
  • Tablet
  • IPad
  • Notebook
  • Kindle

Sistemas operativos para dispositivos móviles

Cuando hablamos de sistemas operativos para dispositivos móviles, pensamos en

  • Android
  • iOS
  • Windows Phone (Windos 10 Mobile)
  • Blackberry
  • FirefoxOS

Android:

Android SDK

Plataforma de software para dispositivos móviles.  Incluye:

  • Sistema operativo
  • Middleware
  • Aplicaciones básicas

Provee las herramientas y API's necesarias para desarrollar aplicaciones en la plataforma Android usando el lenguaje de programación Java

Historia (1/2)

  • Google adquirió a Android el 17 de agosto de 2005.
  • Andy Rubin fundó Android Incorporation en Palo Alto, California, en octubre del año 2003.

Historia (2/2)

  • La OHA es un grupo de 84 empresas de tecnología y dispositivos móviles que aceleran la innovación del sector.
  • El primer dispositivo móvil comercial en usar Android fue el HTC Dream It, el 22 de octubre de 2008.

​Google formó la Open Handset Alliance (OHA) el 5 de noviembre de 2007.

Versiones (1/2)

Versiones (2/2)

  • Usan nombres de dulces en orden alfabético y de publicación

  • La última versión es la Oreo, Android 8.0 API Level 26

¿Porque Android?

  • Código abierto
  • Gran comunidad de desarrollo
  • Mercado creciente
  • Integración entre aplicaciones
  • Costo de desarrollo reducido
  • Mayor tasa de éxito
  • Entorno de desarrollo integrado completo

Componentes de aplicaciones

Actividad

Representa una pantalla simple con la que el usuario puede interactuar.

  • Pueden existir una o más
  • Son independientes
  • Se pueden relacionar
  • Deben ser definidas en el archivo de configuración general
  • Heredan de la clase Activity del SDK de Android

.xml

.class

Vista

Lógica de eventos

Servicio

Procesos largos en segundo plano que no requieren interacción con el usuario.

  • Realizan tareas en segundo plano sin bloquear la interacción del usuario con las actividades
  • Reproducir música/Enviar datos a servidor
  • Heredan de la clase Service del SDK de Android

Reproducción de música en segundo plano

Broadcast receivers

Manejan la comunicación entre las aplicaciones y el sistema operativo.

  • Se visualizan como alertas y notificaciones en la barra de estado
  • Notificación de batería baja/Señal de audífono conectado
  • No cuentan con interfaz de usuario

Notificación de batería cargada

Content providers

  • Son usados para compartir información entre aplicaciones.
  • En Android, la información no puede ser compartida directamente entre dos aplicaciones

Proveedores de contenido

Android Stack

Usan

ApplicactionFramework

APLICACIONES

Android Runtime

Usa

Android

Librerías

Linux Kernel

Desarrollador

Incluye

Dalvik Virtual Machine

ANDROID RUNTIME

Core Librares

Compilación JIT (Just In Time)

JDK

Código fuente

Bytecode

Write once, run anywhere

Ensambla a plataforma Android

Código ensamblado ligero

Ejecutable

Código de máquina

DVM

DVM es gratuito y emplea poca memoria para ahorro de batería

Dalvik es reemplazado por ART (Android Runtime) en la versión 5.0.

Precompilado

API

Servicios de alto nivel proporcionados en forma de clases

Facilita el trabajo de los desarrolladores

Escribir apps más fácil y rápido

Java

APPLICATION FRAMEWORK

Aplicaciones nativas

Escritas en un lenguaje de programación como C, C++, Assembler

Son específicas al hardware y el sistema operativo

Interactuar con componentes de bajo nivel

Java

LIBRERÍAS

Sistema operativo

Linux

Administración de memoria

Administración de energía

Administración de recursos

Administración de controladores

Reservar, liberar memoria

Procesos, hilos y tareas

Bluetooth, cámara

Instalación drivers

LINUX KERNEL

Documentación

Desarrollo de aplicaciones para dispositivos móviles con Android Studio

Requisitos de instalación (1/3)

JDK 8 o superior

Java Development Kit

Requisitos de instalación (2/3)

JRE 6 o superior

Java Runtime Environment

Requisitos de instalación (3/3)

Android Studio

IDE 

Configuraciones adicionales: Smartphone (1/2)

Activar opciones de desarrollador en el smartphone

  1. Ingresar a ajustes
  2. Acerca del teléfono
  3. Presionar 7 veces número de compilación
  4. Opciones de programador
  5. Habilitar depuración por USB

Configuraciones adicionales: Emulador (1/2)

Configurar emulador de dispositivos virtuales

  1. Instalar el Intel HAXM Emulator
  2. Activar tecnología de virtualización en la BIOS (depende de cada fabricante)
  • Introducción
  • Sintaxis, palabras reservadas  y expresiones
  • Variables

  • Tipos de datos

  • Operadores

  • Métodos cadenas

  • Condicionales

  • Ciclos

  • Métodos

Aprendizajes previos: básico

(1/2)

Aprendizajes previos: intermedio (2/2)

  • Arreglos (vectores y matrices)

  • ArrayList

  • Clases y objetos

  • Constructores

  • Herencia

  • Polimorfismo

  • Encapsulación

  • Abstracción

  • Interfaces

Compiladores de Java Online

  • https://www.compilejava.net

  • https://www.tutorialspoint.com/compile_java_online.php

Demuestra tus skills

Perfil del desarrollador

Paciencia 

Perseverancia 

Investigación

Vamos a crear nuestra primera aplicación

Crear nuevo proyecto

Paso1 

Si no tienes un proyecto abierto, en la ventana Welcome to Android Studio haz clic en Start a new Android Studio project.

Paso1 

Si tienes un proyecto abierto, selecciona File > New Project.

Crear nuevo proyecto

Paso2

Configurar el proyecto - Click en next

Nombre de la app (Inicia con letra, sin espacios, ni caracteres especiales)

Dominio de la empresa (Usado al momento de la publicación)

Nombre del paquete Java (Automático)

Ubicación del proyecto (No olvidar)

Soporte C++ y Kotlin (Desactivar)

Crear nuevo proyecto

Empecemos!

Paso3

Seleccionar plataformas - Click en next

Crear nuevo proyecto

En cada plataforma seleccionada, debemos indicar la versión del API a partir de la cuál se dará soporte a la app

Ayuda a escoger la versión del API de acuerdo a estudios de uso de versiones de Android

Paso4

Actividad en blanco

Crear nuevo proyecto

Seleccionar actividad - Click en next

No seleccionaremos plantilla de inicio, pues crearemos un diseño desde cero

Paso5

Nombre de la actividad (Java)

Crear nuevo proyecto

Configurar actividad - Click en next

Generar vista para la actividad

Nombre de la vista (XML)

Compatibilidad con versiones anteriores

Es altamente recomendado dejar los valores por defecto, puesto que la app siempre tendrá una actividad principal, la cuál marcará el inicio de la ejecución

Estructura del proyecto

Conozcamos los archivos y carpetas de nuestro proyecto!

Estructura del proyecto

Conozcamos los archivos y carpetas de nuestro proyecto!

PROJECT WINDOW

En la ventana de proyecto se listan archivos y carpetas de la aplicación.

Por defecto, se usa la vista Android.

Estructura del proyecto

APP

Por defecto, la aplicación usa el módulo App.

Módulo

Archivos fuente

Opciones de compilación

Unidades discretas de funcionalidad

Proyecto tiene uno o más

Permite dependencia entre ellos

Puede ser compilado, probado y depurado independientemente

(Contenedor)

Nuevo. File->New->New Module

Estructura del proyecto

MANIFESTS

Describe las características fundamentales de una aplicación y cada uno de sus componentes

Interfaz entre el sistema operativo de Android y la aplicación.

Estructura del proyecto

MANIFESTS

  • AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.doblet.layouts">

    <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>

Estructura del proyecto

Conozcamos los archivos y carpetas de nuestro proyecto!

MANIFESTS

  • AndroidManifest.xml
  • xmlns:android

Espacio de nombres. Debe definirse como "http://schemas.android.com/apk/res/android

  • package

Nombre del paquete Java que sirve como identificado único de la aplicación

  • versionCode

Número entero que permite identificar la versión de la app. No se muestra al usuario, permite al sistema administrar internamente actualizaciones

<manifest>

Estructura del proyecto

Conozcamos los archivos y carpetas de nuestro proyecto!

MANIFESTS

  • versionName

Cadena de texto que permite identificar el número de la versión de la app. Se muestra al usuario. Si no se especifica, es 1 por defecto

  • android:minSdkVersion

Número entero que permite indicar la versión mínima de API soportada por la aplicación. Impide instalación de la app en versiones anteriores. Es obligatorio

  • android:targetSdkVersion

Número entero que permite indicar la versión de API en la que se creó el proyecto. Garantiza soporte para versiones anteriores, más no para las posteriores

Estructura del proyecto

Conozcamos los archivos y carpetas de nuestro proyecto!

MANIFESTS

<application>

Incluye todas las declaraciones de la aplicación

  • android:icon

Indica la referencia a la imagen que se usa para el icono de la aplicación.

-El ícono está ubicado en la ruta: res/mipmap

-El icono permite abrir la aplicación en el dispositivo

  • android:allowBackup

Indica si se permite a la aplicación participar en copias de seguridad y restauraciones

Estructura del proyecto

Conozcamos los archivos y carpetas de nuestro proyecto!

MANIFESTS

  • android:theme

Recurso de estilo que define un tema para todas las actividades de la aplicación. Las actividades pueden sobrescribir los temas con sus propios atributos

<activity>

Especifica una actividad

  • android:name
  • android:label

Nombre de la clase Java de la actividad

Etiqueta para identificar la actividad

Todas las actividades se deben especificar en el manifiesto

Estructura del proyecto

Conozcamos los archivos y carpetas de nuestro proyecto!

MANIFESTS

<intent-filter>

  • android.intent.action.MAIN
  • android.intent.category.LAUNCHER

Especifica el punto de entrada de la aplicación

Especifica que la aplicación puede ser lanzada desde el icono en dispositivo

Etiquetas permitidas en el manifiesto para especificar componentes

<activity>

<service>

Actividades

Servicios

<receiver>

<provider>

Broadcast receivers

Content providers

Estructura del proyecto

JAVA

Archivos de código fuente en Java

  • Nombres de paquetes (incluye JUnit)
  • Clases de actividades
  • MainActivity.java pertenece al paquete especificado al momento de crear el proyecto
  • La clase MainActivity hereda de AppCompactActivity, que a su vez hereda de FragmentActivity y Activity

Estructura del proyecto

JAVA

MainActivity.Java

package com.example.doblet.layouts;

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);
    }
}

Estructura del proyecto

RES

Recursos que no son de código

  • Vistas XML 
  • Textos de interfaz de usuario
  • Imágenes de mapa de bits

Estructura del proyecto

RES

Recursos que no son de código

Recursos de animación

  • Ubicación: res/anim
  • Acceso: R.anim

Animaciones predeterminadas

Transiciones

Cuadro

  • Ubicación: res/drawable
  • Acceso: R.drawable

Recursos de menú

  • Ubicación: res/menu
  • Acceso: R.menu

Contenidos para menús de aplicación

Estructura del proyecto

RES

Recursos que no son de código

Recursos de imagen

  • Ubicación: res/drawable
  • Acceso: R.drawable

Gráficos con mapas de bits o XML

Recursos de vistas

Vistas para la interfaz de usuario

  • Ubicación: res/layout
  • Acceso: R.layout

Estructura del proyecto

RES

Recursos que no son de código

Recursos de color

Colores que cambian basados en el estado de la vista

  • Ubicación: res/color
  • Acceso: R.color

Estructura del proyecto

RES

Recursos que no son de código

Recursos de color

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

Estructura del proyecto

RES

Recursos que no son de código

Recursos de strings

  • Ubicación: res/values
  • Acceso: R.string

Definen strings, string arrays (incluyen formatos y estilos)

  • Textos de la aplicación
  • Facilitan la traducción de la aplicación a otros idiomas
  • Evitar repetición de código (centralizado)
  • String: Recurso XML que provee una cadena de texto simple
  • String Array: Recurso XML que provee un arreglo de cadenas de texto

Estructura del proyecto

RES

Recursos que no son de código

Recursos de strings

<resources>
    <string name="app_name">Layouts</string>
</resources>

Estructura del proyecto

RES

Recursos que no son de código

Recursos de styles

  • Ubicación: res/values
  • Acceso: R.style

Definen la apariencia y el formato de los elementos de la interfaz de usuario

Especifica propiedades como:

  • Height (altura)
  • Padding (margen interior)
  • Font color (color de fuente)
  • Font size (tamaño de fuente)
  • Background color (color de fondo)
  • Estilos de la aplicación
  • Similar a CSS
  • Separa el diseño del contenido

Estructura del proyecto

RES

Recursos que no son de código

Recursos de styles

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

Ejecución de app (1/2):

Emulador

Probar aplicaciones en dispositivo virtual

Ejecución de app (2/2): Smartphone

Probar aplicaciones en dispositivo real

Ejercicio

  • Ingresar a la documentación oficial de Android
  • Desarrollar primera aplicación:
Made with Slides.com