Está en la página 1de 30

Cursos de orientación profesional

ACCIONES COFINANCIADAS CON FONDOS COMUNITARIOS DEL FONDO SOCIAL EUROPEO,


A TRAVÉS DEL PROGRAMA OPERATIVO FONDO SOCIAL EUROPEO DE CANARIAS 20072013
CON UN PORCENTAJE DE CONFINANCIACIÓN DEL 85%.
 Día 1
 ¿Qué es Android?
 Actividades e intenciones
 Día 2
 Layouts y controles gráficos
 Recursos, menús y diálogos
 Día 3
 Persistencia de datos y content providers
 Gráficos y animaciones 2D y 3D
 Día 4
 Servicios en segundo plano
 Control del hardware especial
 Día 5
 App Widgets y Live folders
 Publicación de aplicaciones
Creación de aplicaciones móviles en Android

Rayco Araña
rayco.arana@gmail.com
Instituto SIANI
 Cámara de fotos
 Posicionamiento
 Estimado por torres GSM y Wi-Fi
 Preciso por GPS
 Sensores
 Orientación, Acelerómetro…
 Vibración
 Cámara de fotos
 Posicionamiento
 Estimado por torres GSM y Wi-Fi
 Preciso por GPS
 Sensores
 Orientación, Acelerómetro…
 Vibración
 Hoy en día muy común
 Posibilidades extra
▪ Lectura de códigos 2D
▪ Realidad aumentada
 Permisos
 android.permission.CAMERA
 Abrir, configurar y liberar
//Abrir
Camera camera = Camera.open();

//Configurar
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(parameters);

//Liberar
camera.release();
 Previsualizar
camera.setPreviewDisplay(mySurface);

camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] _data, Camera _camera) {
// TODO Do something with the preview image.
}
});

camera.startPreview();

camera.stopPreview();
 Tomar foto
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
// TODO Do something when the shutter closes.
}
};
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
// TODO Do something with the image RAW data.
}
};
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
// TODO Do something with the image JPEG data.
}
};

camera.takePicture(shutterCallback, rawCallback, jpegCallback);


 Cámara de fotos
 Posicionamiento
 Estimado por torres GSM y Wi-Fi
 Preciso por GPS
 Sensores
 Orientación, Acelerómetro…
 Vibración
 Permite determinar donde estamos
 Servicios “geocontextualizados”
 Cámara + Posición = Realidad aumentada
▪ Layar, Wikitude
 Permisos requeridos
▪ android.permission.ACCESS_FINE_LOCATION
▪ android.permission.ACCESS_COARSE_LOCATION
 Clases clave
 LocationManager
▪ Permite acceso al servicio
▪ Dependiente del proveedor
▪ Permite obtener los proveedores disponibles
▪ Se puede seleccionar en función de características
 LocationProvider
▪ LocationManager.GPS_PROVIDER
▪ LocationManager.NETWORK_PROVIDER
 LocationManager
 addGpsStatusListener
▪ Cambios de estado del GPS
 addNmeaListener
▪ Obtener sentencias NMEA desde el GPS
 addProximityAlert
▪ Posición + Radio
 gestLastKnownLocation
▪ No tiene porque ser la actual
 LocationManager
 requestLocationUpdates
▪ Nos avisa cada vez que cambia la posición
▪ Cuatro parámetros normalmente
▪ Proveedor a usar (GPS o NETWORK)
▪ Tiempo mínimo entre actualizaciones (milisegundos)
▪ Movimiento mínimo entre actualizaciones (metros)
▪ LocationListener, donde vamos a recibir las notificaciones
 Geocodificación
 Clase Geocoder
 Directa
▪ Obtener posición desde dirección
▪ Puede estar limitada a una región
▪ getFromLocationName(address, maxResults)
 Inversa
▪ Obtener dirección desde posición
▪ getFromLocation(latitude, longitude, maxResults)
 MapView
 Vista que permite ver un mapa
 MapActivity
 Actividad que muestra un MapView
 Gestiona los servicios implicados
 Overlay
 Pintar sobre el mapa
 MapController
 Controlar el centro del mapa y el nivel de
zoom
 Cámara de fotos
 Posicionamiento
 Estimado por torres GSM y Wi-Fi
 Preciso por GPS
 Sensores
 Orientación, Acelerómetro…
 Vibración
 Múltiples sensores en los teléfonos
 Acelerómetro, orientación, luz, campo
magnético, proximidad o temperatura
 SensorManager
 Servicio del sistema
▪ getSystemService(Context.SENSOR_SERVICE);
 Permite el control de todos ellos de forma
homogénea
 SensorEventListener
 Permite recibir eventos de:
▪ Valor del sensor
▪ Presición del sensor

SensorEventListener mySensorListener = new SensorEventListener() {


public void onSensorChanged(SensorEvent event) {
// TODO Deal with sensor value changes
}

public void onAccuracyChanged(Sensor sensor, int accuracy) {


// TODO Auto-generated method stub
}
};
 SensorEvent
 int acurracy
▪ SensorManager.SENSOR_STATUS_ACCURACY_HIGH
▪ SensorManager.SENSOR_STATUS_ACCURACY_LOW
▪ SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM
▪ SensorManager.SENSOR_STATUS_UNRELIABLE
 Sensor sensor
 long timestamp
▪ Tiempo en nanosegundos cuando se produjo el
evento
 SensorEvent
 final float[] values
▪ Contiene los valores de la lectura del sensor
▪ Dependiente del sensor, 1 o 3 valores
 Constantes identificadores de sensores
 Sensor.TYPE_ACCELEROMETER
▪ 3 valores (Gx, Gy, Gz) en m/s2
▪ Hay que tener en cuenta la gravedad
 Sensor.TYPE_ORIENTATION
▪ 3 valores (Azimuth, Pitch, Roll) en grados
▪ Preferible usar con getRotationMatrix(),
remapCoordinateSystem() y getOrientation() para obtener
valores más ajustados (más computo)
 Constantes identificadores de sensores
 Sensor.TYPE_LIGHT
▪ 1 valor en lux
 Sensor.TYPE_MAGNETIC_FIELD
▪ 3 valores (x, y, z) en microteslas (µT)
 Sensor.TYPE_PROXIMITY
▪ 1 valor en centimetros
 Constantes identificadores de sensores
 Sensor.TYPE_GYROSCOPE
 Sensor.TYPE_PRESSURE
 Sensor.TYPE_TEMPERATURE
 Sensor Delay (rate)
 SensorManager.SENSOR_DELAY_FASTEST
▪ El más rápido posible
 SensorManager.SENSOR_DELAY_GAME
▪ Ideal para controlar juegos
 SensorManager.SENSOR_DELAY_NORMAL
▪ Valor por defecto
 SensorManager.SENSOR_UI
▪ Ideal para actualizar UI
 Uso:
String sn = Context.SENSOR_SERVICE;
SensorManager sensorManager = (SensorManager)getSystemService(sn);

sensorManager.registerListener(mySensorEventListener,
mySensor,
rate);
 Cámara de fotos
 Posicionamiento
 Estimado por torres GSM y Wi-Fi
 Preciso por GPS
 Sensores
 Orientación, Acelerómetro…
 Vibración
 Controlado por el servicio Vibrator
Service
String vs = Context.VIBRATOR_SERVICE;
Vibrator vibrator = (Vibrator)getSystemService(vs);

long[] pattern = {1000, 2000, 4000, 8000, 16000 };


vibrator.vibrate(pattern, 0);
vibrator.vibrate(1000); // Vibrate for 1 second
Creación de aplicaciones móviles en Android

Usar los servicios de


localización
 Control del hardware especial
 Android Developer Reference
▪ http://developer.android.com/guide/topics/location/index.html

 Android Application Development


▪ Reto Meier, Editorial Wrox

 Pro Android
▪ Sayed Y. Hashimi y Satya Komatineni, Editorial Apress

También podría gustarte