Escolar Documentos
Profissional Documentos
Cultura Documentos
La forma ms sencilla de editar un texto en pantalla, cambiando el tamao del texto, color, estilo Tambin veremos como realizar realizar distintos tipos de enlaces como al navegador, correo electrnico o un mapa. Lo primero que vamos a realizar es un ejemplo simple de texto:
1 <?xml version="1.0" encoding="utf-8"> <AbsoluteLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 <TextView 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:text="El Texto que queremos mostrar" /> 11 </AbsoluteLayout> 12
El resultado es el siguiente:
Pgina 1
android:text="pepe@correoo.net" />
1<TextView 2 android:layout_width="wrap_content" android:layout_height="wrap_content" 3 android:autoLink="map" 4 android:text="381 Park Avenue South, New York" /> 5
Pgina 2
9 10 11
Pgina 3
EditText
La forma mas sencilla que el usuario interacte con la aplicacin introduciendo texto. Veamos como realizarlo de forma simple:
1 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 5 android:layout_height="fill_parent" 6 android:orientation="vertical"> 7 <EditText 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content"/> 10 11 </LinearLayout> 12
Pgina 4
Veamos algunos atributos Android:inputType=number Cuando pulsemos sobre el EditText, nos aparecer directamente el teclado numrico:
1 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 <EditText 8 android:layout_width="wrap_content" 9 10 android:layout_height="wrap_content" 11 android:inputType="number"/> </LinearLayout> 12
Pgina 5
Android:inputType=textEmailAddress Nos muestra la tecla @ en el teclado para mayor comodidad del usuario.
1 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 <EditText 8 android:layout_width="wrap_content" 9 10 android:layout_height="wrap_content" android:inputType="textEmailAddress"/> 11 </LinearLayout> 12
Button
Estudiaremos una forma sencilla de crear botones y configurar el evento para que nos cambie un texto. En primer lugar crearemos un botn al que identificaremos como btnBoton1 y con el texto Plsame.
Pgina 6
Tambin crearemos un TextView que identificaremos como txtTexto con el texto No has pulsado. Archivo main.xml
1 <?xml version="1.0" encoding="utf-8"> <LinarLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 8 <Button android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:id="@+id/btnBoton1" 11 android:text="PULSAME"/> 12 13 14 <TextView android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:id="@+id/txtTexto" 17 android:text="No has pulsado"/> 18 </LinearLayout> 19 20
Con esto hemos creado la pantalla de inicio que queda como sigue :
Pantalla inicial Ahora modificaremos el archivo Java para que el botn funcione. Para controlar el evento del botn importaremos OnClickListener, el cdigo quedara como sigue:
1 public class PracticaActivity extends Activity implements OnClickListener{ /** Called when the activity is first created. */ 2 @Override 3 public void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.main); 6 7 View btnboton1 = findViewById(R.id.btnBoton1); 8 btnboton1.setOnClickListener(this); 9 10 11 @Override 12 public void onClick(View v) { final TextView txttexto=(TextView) findViewById(R.id.txtTexto); 13 txttexto.setText("Has pulsado el boton"); 14 } 15 } 16
Pgina 7
Evento OnclickListener
RadioButton
Usaremos el RadioButton para realizar una seleccin entre varias opciones: Para ello usaremos el RadioGroup para agrupar los RadioButton . 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 <RadioGroup android:id="@+id/grupo1" 8 android:orientation="vertical" 9 android:layout_width="fill_parent" 10 android:layout_height="fill_parent"> 11 12 <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" 13 android:layout_height="wrap_content" 14 android:text="Opcin RadioButton 1"/> 15 <RadioButton android:id="@+id/radio2" 16 android:layout_width="wrap_content" 17 android:layout_height="wrap_content" 18 android:text="Opcin RadioButton 2"/> 19 </RadioGroup> 20 21 22</LinearLayout>
El resultado es el siguiente:
Pgina 8
Android:onClick Vamos a darle utilidad al RadioButton, cambiaremos el texto segn su posicin. Diseamos el entorno 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 2 android:layout_width="fill_parent" 3 android:layout_height="fill_parent" 4 android:orientation="vertical"> 5 6 <TextView 7 android:layout_width="wrap_content" 8 android:layout_height="wrap_content" 9 android:id="@+id/txtTexto" 10 android:text="Sin seleccin"/> 11
1 <RadioButton android:id="@+id/rbtArriba" 2 android:layout_width="wrap_content" 3 android:layout_height="wrap_content" android:onClick="onRadioButtonClick" 4 android:text="Arriba" /> 5 6 <RadioButton android:id="@+id/rbtAbajo" android:layout_width="wrap_content" 7 android:layout_height="wrap_content" 8 android:onClick="onRadioButtonClick" 9 android:text="Abajo" /> 10
Pgina 9
Llamamos al mtodo que creamos con el android:onClick , y pasamos a variables el txtTexto y RadioButton
1public void onRadioButtonClick(View v) { RadioButton button = (RadioButton) v; 2 TextView txttexto = (TextView) findViewById(R.id.txtTexto); 3 txttexto.setText("has pulsado "+ button.getText()); 4 5} 6}
El resultado es el siguiente:
Pgina 10
CheckBox
El CheckBox es un botn con dos estados, pulsado o no pulsado como el que vemos a continuacin :
Vamos a crear un TextBox con un texto que se modificar segn la actividad del Checkbox 1 <?xml version="1.0" encoding="utf-8"> <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 6 android:orientation="vertical"> 7 8 <CheckBox 9 android:layout_width="wrap_content" 10 android:layout_height="wrap_content" 11 12 android:id="@+id/chkBox" 13 android:text="Botn CheckBox"/> 14 15 <TextView android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 18 android:id="@+id/txtView" 19 android:text="Sin pulsar"/> 20 </LinearLayout> El resultado es el siguiente :
Pantalla inicial
Ahora modificaremos el archivo Java. Usaremos el OnClickListener para controlar el evento al pulsar sobre el CheckBox y con ello modificar el texto de nuestro TextView 1 package com.practica.android; import android.app.Activity; 2 import android.os.Bundle; 3
Pgina 11
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
import android.view.View; import android.view.View.OnClickListener; import android.widget.CheckBox; import android.widget.TextView; public class PracticaActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); verificarCheckbox(); } private void verificarCheckbox() { CheckBox chkbox = (CheckBox) findViewById(R.id.chkBox); final TextView txtview = (TextView) findViewById(R.id.txtView); chkbox.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (((CheckBox) v).isChecked()) { txtview.setText("Pulsado"); } else { txtview.setText("No Pulsado"); } } }); } }
El resultado es el siguiente:
TableLayout
Con esta instruccin, organizamos los componentes que se visualizan en pantalla en forma de tablas, para ello tambin usaremos TableRow para realizar las divisiones. 1 2 3 4 5 6 7 8 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TableRow>
Pgina 12
9 <Button android:layout_width="wrap_content" 10 android:layout_height="wrap_content" 11 android:text="boton 1" /> 12 13<Button android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:text="boton 2" /> 16 17</TableRow> <TableRow> 18 <Button 19 android:layout_width="wrap_content" 20 android:layout_height="wrap_content" 21 android:text="boton 3" /> 22 23<Button android:layout_width="wrap_content" 24 android:layout_height="wrap_content" 25 android:text="boton 4" /> 26 27</TableLayout>
El resultado es el siguiente
RelativeLayout
Con esta instruccin, organizamos los componentes que se visualizan en pantalla en referencia a uno en concreto. Lo veremos mejor con un ejemplo. En primer lugar crearemos un botn PADRE, para ello le daremos una ID para poder referenciarlo ms adelante y usaremos el Layout_alingParentTop=true para colocarlo en la parte superior de la pantalla.
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="fill_parent" android:layout_height="fill_parent"> 4 5 <Button android:id="@+id/BotonPadre" 6 android:layout_width="wrap_content" 7 android:layout_height="wrap_content" 8 android:layout_alignParentTop="true" 9 android:text="Padre" /> 10
Pgina 13
Ahora crearemos un botn que llamaremos BotonHijo y con la instruccin layout_below lo colocaremos debajo del BotonPadre:
1<Button 2 android:id="@+id/BotonHijo" android:layout_width="wrap_content" 3 android:layout_height="wrap_content" 4 android:layout_below="@+id/BotonPadre" 5 android:text="Hijo"/> 6 7</RelativeLayout>
El resultado es el siguiente:
Algunas disposiciones para los RelativeLayout android: layout_toLeftOf Para posicionarlo a la izquierda del que referenciamos. android: layout_toRightOf Para posicionarlo a la derecha del que referenciamos . android: layout_alignParentBottom como true (verdadero) para posicionarlo en la parte baja del todo
LinearLayout
Con esta instruccin, organizamos los componentes que se visualizan en pantalla en una fila o en una columna. Por defecto y si no indicamos lo contrario, el diseo ser en vertical:
1 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 2
Pgina 14
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="boton1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="boton2"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="boton3"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="boton4"/> </LinearLayout>
El resultado es el siguiente:
Pgina 15
AbsoluteLayout
Con esta instruccin, organizamos los componentes mediantes las coordenadas (x,y). Esta opcin no es nada recomendable ya que desconocemos la resolucin del terminal, y podemos dejar espacios libres o incluso superpuestos Archivo main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <AbsoluteLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 android:orientation="vertical"> 7 8 <Button 9 android:layout_width="wrap_content" 10 android:layout_height="wrap_content" 11 android:layout_x="50px" 12 android:layout_y="50px" android:text="boton 1"/> 13 14 <Button 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:layout_x="150px" 18 android:layout_y="50px" 19 android:text="boton 2"/> 20 21 <Button 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:layout_x="50px" 25 android:layout_y="150px" 26 android:text="boton 3"/> 27 28 </AbsoluteLayout> 29 El resultado es el siguiente
Ejemplo de absoluteLayout
Pgina 16
ImageView
Usaremos el ImageView cuando queremos mostrar una imagen. La ruta del archivo se la indicamos en el android:src. El formato aceptado es JPG, GIF y PNG. Te mostramos como hacerlo:
1 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 <ImageView 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:src="@drawable/android"/> 11 12 </LinearLayout> 13 Resultado:
Para subir las imgenes al Eclipse, simplemente lo arrastras desde tu carpeta a res/drawable-hdpi.
ImageButton
Con esta opcin, podremos insertar una imagen en nuestro Button, Para ello usaremos el formato png en nuestra imagen, y la subiremos a res/drawable-hdpi del Eclipse. Ahora solo nos falta incluir la ruta en nuestro button. Aqui tienes un ejemplo sencillo de como hacerlo:
Pgina 17
1 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 <ImageButton 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:src="@drawable/ok"/> 11 12 <ImageButton 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:src="@drawable/no"/> 16 17 </LinearLayout> 18 El resultado es el siguiente:
Para incluir los png dentro de la carpeta, simplemente los hemos desde el origen:
MenuItem
Crearemos un men que aparecer al pulsar el botn fsico del terminal. El resultado ser el siguiente:
Pgina 18
Seguiremos los siguientes pasos para crear un nuevo archivo xml que llamaremos menuTeclado. Pulsamo el botn derecho sobre la carpeta res, vamos a New Folder :
Pgina 19
Pulsamos sobre la nueva carpeta creada y nos vamos a Android XML file :
Pgina 20
5 6 7 8 9 10 11 12
<item android:id="@+id/Opcion1" android:title="Opcion1"> </item> <item android:id="@+id/Opcion2" android:title="Opcion2"> </item> <item android:id="@+id/Opcion3" android:title="Opcion3"> </item> </menu>
Con las siguientes instrucciones en el archivo java activaremos el botn fsico del mvil:
1 package com.practica.android; 2 import android.app.Activity; 3 import android.os.Bundle; 4 import android.view.Menu; 5 import android.view.MenuInflater; 6 public class PracticaActivity extends Activity { 7 public void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.main); 10 } 11 @Override 12 public boolean onCreateOptionsMenu(Menu menu) { 13 MenuInflater inflater = getMenuInflater(); 14 inflater.inflate(R.menu.menuinicio, menu); 15 return true; 16 }} 17
ToggleButton
Con este botn obtenemos dos estados: Pulsado o no pulsado. Veremos como crearlo y crearemos un evento al pulsarlo. En primer lugar desarrollaremos un entorno donde tendremos un ToggleButon que modificar un texto segn su estado:
1 <?xml version="1.0" encoding="utf-8"> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 8 <ToggleButton 9 android:layout_width="wrap_content" android:layout_height="wrap_content" 10 android:id="@+id/btnBoton1" 11 android:textOn="ON" 12 android:textOff="OFF"/> 13 14 <TextView 15
Pgina 21
16 17 18 19 20 21
1 package com.practica.android; import android.app.Activity; 2 import android.os.Bundle; 3 import android.view.View; 4 import android.view.View.OnClickListener; 5 import android.widget.TextView; 6 import android.widget.ToggleButton; 7 8 9 @Override 10 public void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.main); 13 14 15 16 ToggleButton btnboton1 = (ToggleButton) findViewById(R.id.btnBoton1); 17 final TextView txttexto = (TextView) findViewById(R.id.txtTexto); 18 19 btnboton1.setOnClickListener(new OnClickListener() 20 { 21 @Override 22 public void onClick(View v) 23 { 24 txttexto.setText("Pulsado"); }}); 25 } 26 } 27 28
Pgina 22
Toast
El Toast es un pop up flotante que aparece en pantalla un breve espacio de tiempo. Vamos a crear el entorno, un simple botn que al pulsarlo aparezca el Toast.
1 <?xml version="1.0" encoding="utf-8"> <AbsoluteLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 <Button 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:id="@+id/btnToast" 11 android:text="Activar Toast" /> 12 </AbsoluteLayout> 13
Archivo Java : 1 package com.practica.android;<br> 2 import android.app.Activity; 3 import android.os.Bundle; 4 import android.view.View; 5 import android.view.View.OnClickListener; 6
Pgina 23
import android.widget.Toast; 7 8 9 public class PracticaActivity extends Activity { 10 11 public void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.main); 14 View btnboton1 = findViewById(R.id.btnToast); 15 btnboton1.setOnClickListener(new OnClickListener() { 16 public void onClick(View v) {; Toast.makeText(getApplicationContext(),"Botn pulsado", 17 18Toast.LENGTH_LONG).show(); 19 20 } 21 }); }}
Pgina 24
A la izquierda nos aparecer un men que seleccionaremos Rename para nombrar nuestra API
Aunque aparezca una API Key, esta nos nos sirve, pulsaremos sobre Create new Android Key:
En la ventana que nos aparece pegamos el cdigo SHA1 que vimos en este tutorial , seguido de ; y nombre de nuestro paquete en la aplicacin, que en mi caso es: es.tutorialandroid.mapav2 :
Vamos a localizar donde tiene guardado ECLIPSE la clave del Debug Para ello vamos a Window / Preferences
Pgina 26
Una vez abierto vamos a Android / Build. Aqui encontramos la ruta de la Key.
Como se puede observar, en mi caso el certificado de pruebas est en la ruta C:\Users\yomero\.android\debug.keystore. Pues bien, para obtener nuestra huella digital SHA1 deberemos acceder a dicha ruta desde la consola de comando de Windows y ejecutar los siguientes comandos: abrimos la ventana de comandos:
Pgina 27
1 Tecleamos cd .android (Esto es en mi caso) 2 "C:\Program Files\Java\jdk1.7.0_07\bin\keytool.exe" -list -v -keystore debug.keystore alias androiddebugkey -storepass android -keypass android
Esto nos deber devolver varios datos del certificado, entre ellos la huella SHA1. Pues bien, nos copiamos este dato y lo aadimos a la ventana de obtencin de la API Key donde nos habamos quedado antes, y a continuacin separado por un punto y coma aadimos el paquete java que vayamos a utilizar en nuestra aplicacin, que en mi caso ser
package="com.example.mapita"
Pulsamos el botn Create y ya deberamos tener nuestra API Key generada, podremos verla en la pantalla siguiente dentro del apartado Key for Android Apps (with certificates). Apuntaremos tambin este dato para utilizarlo ms tarde.
Pgina 28
Con esto ya habramos concluido los preparativos iniciales necesarios para utilizar el servicio de mapas de Android en nuestras propias aplicaciones, por lo que empecemos a crear un proyecto de ejemplo en Eclipse. No cierres el Api Key lo utilizaras despus.
Verifico que tengo instalado el Google Play Services. En mi caso la ltima versin a 5 de marzo de 2013 es la 5:
Una vez comprobado que tenemos las libreras, crearemos un proyecto al que yo he denominado MapaV2 :
Pgina 29
Browse
Pgina 30
Pgina 31
Para incluirla en nuestro proyecto tenemos que ir a propiedades del proyecto / carpeta Android:
Pgina 32
Volvemos a pulsar Ok
Pgina 33
Vamos a modificar el Manifest como sigue: Crearemos un meda-data como sigue pero con el valor de nuestra API Key : 1<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="api_key"/> 2 Agregamos los siguientes permisos : <permission 1 android:name="es.tutorialandroid.mapav2.permission.MAPS_RECEIVE" 2 android:protectionLevel="signature"/> 3 <uses-permission 4 android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 5 <uses-permission android:name="android.permission.INTERNET"/> 6 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 7 <uses-feature android:glEsVersion="0x00020000" 8 android:required="true"/> As quedara nuestro Manifest : Recuerda modificar los valores del API Key y el nombre de tu Package en mi caso era package="com.example.mapita4" 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="es.tutorialandroid.mapav2" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="16" /> 10 <permission 11 android:name="es.tutorialandroid.mapav2.permission.MAPS_RECEIVE" 12 android:protectionLevel="signature"/> <uses-permission 13 14android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.INTERNET"/> 15 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 16 <uses-feature android:glEsVersion="0x00020000" 17 android:required="true"/> 18 19 <application 20 android:allowBackup="true" 21 android:icon="@drawable/ic_launcher" 22 android:label="@string/app_name" 23 android:theme="@style/AppTheme" > 24 <activity 25 android:name="es.tutorialandroid.mapav2.MainActivity" 26 android:label="@string/app_name" > 27 <intent-filter> 28 <action android:name="android.intent.action.MAIN" /> 29 30 <category android:name="android.intent.category.LAUNCHER" /> 31 </intent-filter> 32
Pgina 34
</activity> 33 <meta-data android:name="com.google.android.maps.v2.API_KEY" 34 android:value="AIzaSyAPeOQ07w7_Gaqo-uJddOeQpT8UgLcwwqM"/> 35 </application> 36 37 </manifest> El cdigo Java como sigue : 1 package es.tutorialandroid.mapav2; 2 3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.view.Menu; 6 7 8 9 public class MainActivity extends android.support.v4.app.FragmentActivity { 10 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_main); 14 } 15 16 17 @Override 18 public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. 19 getMenuInflater().inflate(R.menu.activity_main, menu); 20 return true; 21 } 22 23} Y por ltimo nuestro XML : 1<?xml version="1.0" encoding="utf-8"?> 2<fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 class="com.google.android.gms.maps.SupportMapFragment"/> 6 El resultado es el siguiente :
Pgina 35
En el Manifest crearemos 3 permisos: Permiso para localizacion aproximada mediante triangulacin de antenas: <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> Permiso para localizacin exacta mediante GPS: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> Permiso para usar Internet (Imprescindible) <uses-permission android:name="android.permission.INTERNET"/>
Pgina 36
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mapita4" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <permission android:name="com.example.mapita4.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.mapita4.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" />
Api Key
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyCA4330YIOvwE2bKroXqOIOzLqtG0NbvIA" /> </application> </manifest> Modificamos el activity_main de la siguiente forma: 1 <?xml version="1.0" encoding="utf-8"> 2 <RelativeLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="match_parent" android:layout_height="match_parent" 5 tools:context=".MainActivity"> 6 7 <com.google.android.maps.MapView 8 android:id="@+id/mapa" 9 android:layout_width="fill_parent" 10 android:layout_height="fill_parent" 11 android:apiKey="Aqui tu Api Key"/> 12 </RelativeLayout> 13 Y por iltimo el cdigo Java: 1 package com.example.mapita4; 2 import com.google.android.maps.MapActivity; 3 import com.google.android.maps.MapView; 4 import android.os.Bundle; 5 import android.app.Activity; import android.view.Menu; 6 public class MainActivity extends MapActivity { 7 private MapView mapView; 8
Pgina 37
9 10 11 12 13 14 15 16 17 18 19 20
public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.mapa); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }
Pgina 38
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 15 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 16 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 17 <uses-feature android:glEsVersion="0x00020000" 18 android:required="true"/> 19 20 <application 21 android:allowBackup="true" 22 android:icon="@drawable/ic_launcher" 23 android:label="@string/app_name" 24 android:theme="@style/AppTheme" > 25 <activity 26 android:name="es.tutorialandroid.mapav2.MainActivity" 27 android:label="@string/app_name" > 28 <intent-filter> 29 <action android:name="android.intent.action.MAIN" /> 30 31 <category android:name="android.intent.category.LAUNCHER" /> 32 </intent-filter> 33 </activity> 34 <meta-data android:name="com.google.android.maps.v2.API_KEY" 35 android:value="AIzaSyAPeOQ07w7_Gaqo-uJddOeQpT8UgLcwwqM"/> 36 </application> 37 38 39</manifest> El activity_main no lo modificamos : 1<?xml version="1.0" encoding="utf-8"?> 2<fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 class="com.google.android.gms.maps.SupportMapFragment"/> 6 Y el MainActivity.java : 1 package es.tutorialandroid.mapav2; 2 3 import com.google.android.gms.maps.GoogleMap; 4 5 import com.google.android.gms.maps.SupportMapFragment; 6 7 8 import android.location.Location; 9 import android.location.LocationListener; 10import android.os.Bundle; 11 12import android.support.v4.app.FragmentActivity; 13import android.view.Menu; 14 15 16 17public class MainActivity extends FragmentActivity implements LocationListener { GoogleMap googlemap; 18 19 20 @Override 21 protected void onCreate(Bundle savedInstanceState) { 22 super.onCreate(savedInstanceState); 23 setContentView(R.layout.activity_main); 24 SupportMapFragment mf = (SupportMapFragment) 25 26getSupportFragmentManager().findFragmentById(R.id.map); googlemap = mf.getMap(); 27 28 googlemap.setMyLocationEnabled(true); 29 30 } 31
Pgina 39
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 }
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. return true; } @Override public void onLocationChanged(Location arg0) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub }
El resultado es el siguiente: Aparece un punto sobre Las Islas Canarias, que es donde estoy.
Y si nos acercamos con el zoom, vemos mi posicin an mas exacta. Estoy en Santa Cruz de Tenerife:
Pgina 40
Ahora en el eclipse empiezo a realizar las modificaciones en el MainActivity.java. Creo un nuevo mtodo que en este caso lo he llamado addMarcador : 1addMarcador(); Y mi addMarcador recin creado le incluyo los siguientes datos: 1private void addMarcador() { 2 LatLng latlng = new LatLng(40.419193,-3.692892); 3 googlemap.addMarker(new MarkerOptions() 4 .title("La Cibeles") .position(latlng) 5 .snippet("Monumento") 6 .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)) 7 ); 8
Pgina 41
Veamos el resultado :
Pgina 42