Este manual presenta los pasos para crear aplicaciones Android utilizando Android Studio en 3 oraciones o menos:
1) Explica cómo instalar las herramientas necesarias como Android Studio y el SDK de Android. 2) Detalla los pasos iniciales para crear un proyecto en Android Studio. 3) Incluye 30 capítulos que cubren diversos temas sobre el desarrollo de interfaces gráficas, manejo de eventos, almacenamiento de datos, entre otros.
JHipster es un generador de código basado en Yeoman que nos genera un proyecto con Spring Boot en el back-end y con Angular en el front-end.
Llevo un año y medio desarrollando con Spring Boot y Angular y desde hace unos meses, mis nuevos desarrollos los realizo con JHipster. Por eso me he decidido a proponer este taller en donde montaré una pequeña aplicación con este tándem, y en donde hablaré también de mi propia experiencia.
Para poder asistir al taller es necesario tener instalado JHipster y tu IDE favorito (yo usaré Spring Tool Suite para back y Visual Studio Code para front). Para no tener problemas de descarga durante el taller tenéis que crearos un proyecto vacío, en el cual haremos modificaciones durante el taller. Creároslo con los valores por defecto, y luego ejecutarlo con ./mvnw para que se descarguen todas las librerías. Deberíais poder ver algo en http://localhost:8080 ;)
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...leofishman
Este “Bootcamp” es la primera de una serie de capacitaciones que se dictarán en varios lugares y contextos. Durante este “Bootcamp” se verán las bases para crear aplicaciones Android usando eclipse + ADT (Android Development Tools).
Durante el curso cubriremos:
Descripción básica de sistemas Android y sus principales beneficios para usuarios, desarrolladores y empresas.
Instalación y configuración del ambiente de desarrollo.
Creación de una aplicación. Emulador y deploy en dispositivos android.
Conceptos básicos sobre arquitectura y ciclos de vida de aplicaciones Android. Layouts e Intents.
JHipster es un generador de código basado en Yeoman que nos genera un proyecto con Spring Boot en el back-end y con Angular en el front-end.
Llevo un año y medio desarrollando con Spring Boot y Angular y desde hace unos meses, mis nuevos desarrollos los realizo con JHipster. Por eso me he decidido a proponer este taller en donde montaré una pequeña aplicación con este tándem, y en donde hablaré también de mi propia experiencia.
Para poder asistir al taller es necesario tener instalado JHipster y tu IDE favorito (yo usaré Spring Tool Suite para back y Visual Studio Code para front). Para no tener problemas de descarga durante el taller tenéis que crearos un proyecto vacío, en el cual haremos modificaciones durante el taller. Creároslo con los valores por defecto, y luego ejecutarlo con ./mvnw para que se descarguen todas las librerías. Deberíais poder ver algo en http://localhost:8080 ;)
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...leofishman
Este “Bootcamp” es la primera de una serie de capacitaciones que se dictarán en varios lugares y contextos. Durante este “Bootcamp” se verán las bases para crear aplicaciones Android usando eclipse + ADT (Android Development Tools).
Durante el curso cubriremos:
Descripción básica de sistemas Android y sus principales beneficios para usuarios, desarrolladores y empresas.
Instalación y configuración del ambiente de desarrollo.
Creación de una aplicación. Emulador y deploy en dispositivos android.
Conceptos básicos sobre arquitectura y ciclos de vida de aplicaciones Android. Layouts e Intents.
HTML Tour - Programación de Videojuegos HTML5Plain Concepts
En la charla veremos características comunes de los juegos y su aplicación práctica en canvas HTML5. Analizaremos varios tipos de juegos, tanto 2D como 3D y estudiaremos las diferentes maneras implementarlos mientras comentamos las partes clave de su estructura. Para finalizar echaremos un vistazo al framework desarrollado por PlainConcepts para la creación de diferentes tipos de juegos 2D y 3D en HTML5.
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...AMADO SALVADOR
El catálogo general de electrodomésticos Teka presenta una amplia gama de productos de alta calidad y diseño innovador. Como distribuidor oficial Teka, Amado Salvador ofrece soluciones en electrodomésticos Teka que destacan por su tecnología avanzada y durabilidad. Este catálogo incluye una selección exhaustiva de productos Teka que cumplen con los más altos estándares del mercado, consolidando a Amado Salvador como el distribuidor oficial Teka.
Explora las diversas categorías de electrodomésticos Teka en este catálogo, cada una diseñada para satisfacer las necesidades de cualquier hogar. Amado Salvador, como distribuidor oficial Teka, garantiza que cada producto de Teka se distingue por su excelente calidad y diseño moderno.
Amado Salvador, distribuidor oficial Teka en Valencia. La calidad y el diseño de los electrodomésticos Teka se reflejan en cada página del catálogo, ofreciendo opciones que van desde hornos, placas de cocina, campanas extractoras hasta frigoríficos y lavavajillas. Este catálogo es una herramienta esencial para inspirarse y encontrar electrodomésticos de alta calidad que se adaptan a cualquier proyecto de diseño.
En Amado Salvador somos distribuidor oficial Teka en Valencia y ponemos atu disposición acceso directo a los mejores productos de Teka. Explora este catálogo y encuentra la inspiración y los electrodomésticos necesarios para equipar tu hogar con la garantía y calidad que solo un distribuidor oficial Teka puede ofrecer.
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialAMADO SALVADOR
Explora el catálogo completo de cajas fuertes BTV, disponible a través de Amado Salvador, distribuidor oficial de BTV. Este catálogo presenta una amplia variedad de cajas fuertes, cada una diseñada con la más alta calidad para ofrecer la máxima seguridad y satisfacer las diversas necesidades de protección de nuestros clientes.
En Amado Salvador, como distribuidor oficial de BTV, ofrecemos productos que destacan por su innovación, durabilidad y robustez. Las cajas fuertes BTV son reconocidas por su eficiencia en la protección contra robos, incendios y otros riesgos, lo que las convierte en una opción ideal tanto para uso doméstico como comercial.
Amado Salvador, distribuidor oficial BTV, asegura que cada producto cumpla con los más estrictos estándares de calidad y seguridad. Al adquirir una caja fuerte a través de Amado Salvador, distribuidor oficial BTV, los clientes pueden tener la tranquilidad de que están obteniendo una solución confiable y duradera para la protección de sus pertenencias.
Este catálogo incluye detalles técnicos, características y opciones de personalización de cada modelo de caja fuerte BTV. Desde cajas fuertes empotrables hasta modelos de alta seguridad, Amado Salvador, como distribuidor oficial de BTV, tiene la solución perfecta para cualquier necesidad de seguridad. No pierdas la oportunidad de conocer todos los beneficios y características de las cajas fuertes BTV y protege lo que más valoras con la calidad y seguridad que solo BTV y Amado Salvador, distribuidor oficial BTV, pueden ofrecerte.
2. ÍNDICE
1 -Instalación de las herramientas necesarias para
programar para Android Studio
2 -Pasos para crear el primer proyecto Android Studio
3 -Capturar el clic de un botón
4 -Controles RadioGroup y RadioButton
5 -Control CheckBox
6 -Control Spinner
7 -Control ListView (con una lista de String)
8 -Control ImageButton
9 -Notificaciones sencillas mediante la clase Toast
10 -Control EditText
11 -Lanzar un segundo "Activity"
12 -Lanzar un segundo "Activity" y pasar parámetros
13 -Almacenamiento de datos mediante la clase SharedPreferences
14 -Almacenamiento de datos en un archivo de texto en la memoria interna
15 -Almacenamiento de datos en un archivo de texto
localizado en una tarjeta SD
16 -Almacenamiento en una base de datos SQLite
17 -Instalación del programa Android en un dispositivo real
18 -Layout (LinearLayout)
19 -Layout (TableLayout)
20 -Layout (FrameLayout)
21 -Layout (ScrollView y LinearLayout)
22 -Icono de la aplicación
23 -Reproducción de audio (archivo contenido en la aplicación)
24 -Reproducción, pausa, continuación y detención de un archivo de audio.
25 -Reproducción de audio (archivo contenido en una tarjeta SD)
26 -Reproducción de audio (archivo localizado en internet)
27 -Reproducción de audio utilizando el reproductor
propio de Android (vía Intent)
28 -Grabación de audio mediante el grabador
provisto por Android (via Intent)
29 - Captura de audio mediante la clase MediaRecorder
- 2 -
3. 30 - Dibujar: graficar un píxel
31 - Dibujar: pintar fondo y dibujar líneas
32 - Dibujar: rectángulos
33 - Dibujar: círculos
34 - Dibujar: óvalos
35 - Dibujar: texto
36 - Dibujar: texto con fuentes externas
37 - Dibujar: texto sobre un camino
38 - Dibujar: una imagen
39 - Evento touch: dibujar un círculo
40 - Evento touch: juego del buscaminas
41 - Archivo strings.xml
42 - Internacionalización y archivo strings.xml
43 - Localización y archivo strings.xml
44 - Componente ActionBar (Básica)
45 - Componente ActionBar (Botones de acción)
46 - Componente ActionBar (Ocultarlo y mostrarlo)
- 3 -
4. 1 - Instalación de las herramientas necesarias
para programar para Android Studio
Descarga de herramientas necesarios para
programar para Android con el Android Studio
1 - Primero debemos instalar el compilador de Java y la máquina virtual. Estas
herramientas las podemos descargar de:
Java SE Development Kit (JDK).
2 - El segundo paso es la descarga del Android Studio (que contiene todo lo necesario
para comenzar el desarrollo de aplicaciones en Android), lo hacemos del sitio :
Android SDK.
Ahora procedemos a su instalación en el equipo ejecutando el archivo que acabamos de
descargar:
l =I
Welcome to the Android Studio
Setup
Setup will guide you through the installation of Android
Studio.
It is recommended that you dose ali other applications.
before starting Setup. This 'NiTI make it possible to update
relevant sys.tem files '11.'ithout having to reboot your
computer.
Click Next to co.ntinue.
Next> 'Cancel
Dejamos por defecto para que instale el Android Studio, el Android SDK, Android Virtual
Device etc.:
- 4 -
47. public class MainActivity extends ActionBarActivity {
private String[] paises = { "Argentina", "Chile", "Paraguay", "Bolivia",
"Peru", "Ecuador", "Brasil", "Colombia", "Venezuela", "Uruguay"
private String[] habitantes= { "40000000", "17000000", "6500000",
"10000000", "30000000", "14000000", "183000000", "44000000",
"29000000", "3500000" };
private TextView tvl;
private ListView lvl;
@Override
protected void onCreate(Bundle savedinstanceState)
super.onCreate(savedinstanceState);
setContentView(R.layout.activity_main);
tvl=(TextView)findViewByid(R.id.tvl);
lvl= (ListView)findViewByid(R.id.listView);
ArrayAdapter<String> adapter= new ArrayAdapter<String>(this, android.lR.layout
.simple_list_item_1, paises);
lvl.setAdapter(adapter); !
lvl.setOnitemClickListener(new AdapterView.OnitemClickListener() 1
@Override i
public void onitemClick(AdapterView parent, View view, int posit�on, long id) {
tvl.setText("Población de "+ lvl.getitemAtPosition(position) !+ " es "+
habitantes[position]);
) ) ;
@Override
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is
getMenuinflater().inflate(R.menu.menu_main, menu);
presJ,nt.
return true;
@Override
public boolean onOptionsitemSelected(Menuitem item)
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getltemld();
//noinspection SimplifiableifStatement
if (id== R.id.action settings) {
return true;
return super.onOptionsitemSelected(item);
.....................____ ...................................................___ ............................!
Primero definimos dos vectores paralelos donde almacenamos en uno los nombres de países y en el otro almacenamos
la cantidad de habitantes de dichos países:
private String[] paises={"Argentina","Chile","Paraguay","Bolivia","Peru",
"Ecuador","Brasil","Colombia","Venezuela","Uruguay"};
private String[] habitantes={"40000000","17000000","6500000","10000000","30000000",
"14000000","183000000","44000000","29000000","3500000"};
Definimos un objeto de tipo TextView y otro de tipo ListView donde almacenaremos las referencias a los objetos que
definimos en el archivo XML:
private TextView tvl;
private ListView lvl;
En el método onCreate obtenemos la referencia a los dos objetos:
tvl=(TextView)findViewByid(R.id.tvl);
lvl =(ListView)findViewByid(R.id.listView);
- 47 -
87. ! )
public boolean onCreateOptionsMenu(Menu menu) ¡
// Inflate the menu; this adds items to the action bar if it is pres�nt.
getMenuinflater().inflate(R.menu.menu_main, menu);
return true;
@Override
public boolean onOptionsitemSelected(Menuitem item)
!/ Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getitemid();
//noinspection SimplifiableifStatement
if (id == R.id.action_settings) {
return true;
return super.onOptionsitemSelected(item);
public void grabar(View v)
String nombre=etl.getText().toString();
String datos=et2.getText().toString();
SharedPreferences preferencias=getSharedPreferences("agenda",
SharedPreferences.Editor editor=preferencias.edit();
editor.putString(nombre, datos);
ContexJ.MODE Pf
editor.commit();
Toast.makeText(this,"Datos grabados",Toast.LENGTH_LONG).show();
public void recuperar{View v)
String nombre=etl.getText().toString();
SharedPreferences prefe=getSharedPreferences("agenda",
String d=prefe.getString(nombre, "");
Context.MODE JRIVATE);
if (d.length()==O) {
Toast.makeText(this,"No existe dicho nombre en la
!
agenda",Toast.LENGTH_LC
else {
et2.setText(d);
Definimos dos objetos de la clase EditText donde se ingresan el nombre de la persona y los datos de dicha persona:
prívate EditText etl,et2;
Cuando se presiona el botón grabar:
public void grabar(View v) {
}
String nombre=etl.getText().toString();
String datos=et2.getText().toString();
SharedPreferences preferencias=getSharedPreferences("agenda", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=preferencias.edit();
editor.putString(nombre, datos);
editor.commit();
Toast.makeText(this,"Datos grabados",Toast.LENGTH_LONG).show();
Extraemos los dos datos de los EditText, creamos un objeto de la clas SharedPReferences con el nombre de "agenda".
Creamos un objeto de la clase Editor y procedemos a grabar en el archivo de preferencias mediante putString:
editor.putString(nombre, datos);
Significa que en el archivo de preferencias se almacena una entrada con el nombre de la persona y los datos de dicha
persona.
Por otro lado tenemos la lógica para recuperar los datos de una persona de la agenda:
public void recuperar(View v) {
String nombre=etl.getText().toString();
- 87 -
106. import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class MainActivity extends ActionBarActivity {
private EditText et1,et2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText)findViewById(R.id.editText);
et2=(EditText)findViewById(R.id.editText2);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void grabar(View v) {
String nomarchivo = et1.getText().toString();
String contenido = et2.getText().toString();
try {
- 106 -
107. File tarjeta = Environment.getExternalStorageDirectory();
Toast.makeText(this,tarjeta.getAbsolutePath(),Toast.LENGTH_LONG).show();
File file = new File(tarjeta.getAbsolutePath(), nomarchivo);
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(file));
osw.write(contenido);
osw.flush();
osw.close();
Toast.makeText(this, "Los datos fueron grabados correctamente",
Toast.LENGTH_SHORT).show();
et1.setText("");
et2.setText("");
} catch (IOException ioe) {
Toast.makeText(this, "No se pudo grabar",
Toast.LENGTH_SHORT).show();
}
}
public void recuperar(View v) {
String nomarchivo = et1.getText().toString();
File tarjeta = Environment.getExternalStorageDirectory();
File file = new File(tarjeta.getAbsolutePath(), nomarchivo);
try {
FileInputStream fIn = new FileInputStream(file);
InputStreamReader archivo = new InputStreamReader(fIn);
BufferedReader br = new BufferedReader(archivo);
String linea = br.readLine();
String todo = "";
while (linea != null) {
todo = todo + linea + " ";
linea = br.readLine();
}
br.close();
archivo.close();
et2.setText(todo);
} catch (IOException e) {
Toast.makeText(this, "No se pudo leer",
Toast.LENGTH_SHORT).show();
}
}
}
El método para grabar los datos en un archivo de texto localizado en una tarjeta SD comienza obteniendo
el directorio raiz de la tarjeta a través del método getExternalStorageDirectory(), el mismo retorna un
objeto de la clase File.
public void grabar(View v) {
String nomarchivo = et1.getText().toString();
String contenido=et2.getText().toString();
try
{
File tarjeta = Environment.getExternalStorageDirectory();
- 107 -
108. Creamos un nuevo objeto de la clase File indicando el camino de la unidad SD y el nombre del archivo a
crear:
File file = new File(tarjeta.getAbsolutePath(), nomarchivo);
Por último similar al acceso de un archivo interno creamos un objeto de la clase OutputStreamWriter:
OutputStreamWriter osw =new OutputStreamWriter(new FileOutputStream(file));
Grabamos el contenido del EditText:
osw.write(contenido);
Cerramos el archivo:
osw.flush();
osw.close();
Toast.makeText(this,"Los datos fueron grabados
correctamente",Toast.LENGTH_SHORT).show();
et1.setText("");
et2.setText("");
}
catch (IOException ioe)
{
Toast.makeText(this, "No se pudo grabar",
Toast.LENGTH_SHORT).show();
}
}
Para la lectura del archivo nuevamente obtenemos la referencia de la tarjeta SD para obtener el path de la
unidad de almacenamiento, el resto del algoritmo es similar al visto con un archivo interno:
public void recuperar(View v) {
String nomarchivo = et1.getText().toString();
File tarjeta = Environment.getExternalStorageDirectory();
File file = new File(tarjeta.getAbsolutePath(), nomarchivo);
try {
FileInputStream fIn = new FileInputStream(file);
InputStreamReader archivo=new InputStreamReader(fIn);
BufferedReader br=new BufferedReader(archivo);
String linea=br.readLine();
String todo="";
while (linea!=null)
{
todo=todo+linea+"n";
linea=br.readLine();
}
br.close();
archivo.close();
et2.setText(todo);
} catch (IOException e)
{
Toast.makeText(this, "No se pudo leer",
Toast.LENGTH_SHORT).show();
}
}
Este proyecto lo puede descargar en un zip desde este enlace: proyecto018.zip
- 108 -
109. Importante.
Si lo probamos con el emulador del Nexus 5 en el Android Studio cuando tratemos de grabar nos mostrará la
notificación "No se pudo grabar", esto debido a que dicho celular no permite extender la memoria mediante
tarjetas sd.
La solución para probar es crear otro dispositivo virtual. Los pasos para crear otro dispositivo virtual en
Android Studio son los siguientes:
1 - Desde el menú de opciones del Android Studio accedemos a Tools->Android->AVD Manager.
2 - Aparece un diálogo con todas las máquinas virtuales creadas hasta el momento (en las primeras versiones
de Android Studio crea una máquina virtual para el Nexus 5)
Presionamos el botón "Create Virtual Device".
- 109 -