60
Android 4.0 Platform Android 4.0 es una versión de la plataforma principal que añade una gran variedad de nuevas características para los usuarios y desarrolladores de aplicaciones. Además de todas las nuevas características y APIs más adelante, Android 4.0 es un lanzamiento de una plataforma importante, ya que trae el amplio conjunto de APIs y los temas de Android holográfica 3.x para pantallas más pequeñas. Como desarrollador de la aplicación, ahora tiene una única plataforma y entorno de trabajo unificado de la API que le permite desarrollar y publicar la aplicación con un solo APK que proporciona una experiencia de usuario optimizada para teléfonos, tabletas, y más, cuando se ejecuta la misma versión de Android Android 4.0 (nivel de API 14) o más. La plataforma Android 4.0 está disponible como componente descargable para el SDK de Android para que pueda comenzar a desarrollar y probar sus aplicaciones en Android 4.0 con el emulador de Android. La plataforma descargable incluye una biblioteca de Android y la imagen del sistema, así como un conjunto de aspectos emulador y mucho más. La plataforma de descarga no incluye ninguna biblioteca externa. Para comenzar a desarrollar o pruebas en contra de Android 4.0, utilice el SDK de Android Manager para descargar la plataforma en su SDK. Para más información, consulte Adición de componentes SDK . Si usted es nuevo en Android, descargar el paquete de inicio SDK primero. Recordatorio: Si ya ha publicado una aplicación para Android, por favor, probar la aplicación en Android 4.0, tan pronto como sea posible para asegurarse de que su aplicación ofrece la mejor experiencia posible en el último con Android.

Android 4

Embed Size (px)

Citation preview

Page 1: Android 4

Android 4.0 Platform

Android 4.0 es una versión de la plataforma principal que añade una gran variedad de nuevas características para los usuarios y desarrolladores de aplicaciones. Además de todas las nuevas características y APIs más adelante, Android 4.0 es un lanzamiento de una plataforma importante, ya que trae el amplio conjunto de APIs y los temas de Android holográfica 3.x para pantallas más pequeñas. Como desarrollador de la aplicación, ahora tiene una única plataforma y entorno de trabajo unificado de la API que le permite desarrollar y publicar la aplicación con un solo APK que proporciona una experiencia de usuario optimizada para teléfonos, tabletas, y más, cuando se ejecuta la misma versión de Android Android 4.0 (nivel de API 14) o más.

La plataforma Android 4.0 está disponible como componente descargable para el SDK de Android para que pueda comenzar a desarrollar y probar sus aplicaciones en Android 4.0 con el emulador de Android. La plataforma descargable incluye una biblioteca de Android y la imagen del sistema, así como un conjunto de aspectos emulador y mucho más. La plataforma de descarga no incluye ninguna biblioteca externa.

Para comenzar a desarrollar o pruebas en contra de Android 4.0, utilice el SDK de Android Manager para descargar la plataforma en su SDK. Para más información, consulte Adición de componentes SDK . Si usted es nuevo en Android, descargar el paquete de inicio SDK primero.

Recordatorio: Si ya ha publicado una aplicación para Android, por favor, probar la aplicación en Android 4.0, tan pronto como sea posible para asegurarse de que su aplicación ofrece la mejor experiencia posible en el último con Android.

Para una descripción de alto nivel de las nuevas características del usuario y el desarrollador de Android 4.0, consulte el más destacado de plataforma .

Revisiones

Para determinar qué versión es la plataforma Android 4.0 que tiene instalada, consulte la sección "Paquetes instalados" lista en el Administrador de Android SDK.

Android 4.0, Revisión 1 (octubre de 2011)

Versión inicial. Herramientas SDK r14 o superior es necesario.

Importante: Para descargar el nuevo Android 4.0 los componentes del sistema desde el Administrador de Android SDK, primero debe actualizar las herramientas de SDK para

Page 2: Android 4

revisión 14 o posterior, y reiniciar el Administrador de Android SDK. Si no, los componentes de Android 4.0 el sistema no estará disponible para su descarga.

API general

Las secciones siguientes proporcionan una descripción técnica de las nuevas API de Android 4.0.

Tabla de contenidos

Sociales en las API de proveedor de Contactos

La API de contactos definidos por el ContactsContract proveedor se han ampliado para admitir las nuevas características de orientación social, tales como un perfil personal para el propietario del dispositivo y la capacidad de los usuarios para invitar a contactos individuales con las redes sociales que están instalados en el dispositivo.

Perfil de usuario

Android ahora incluye un perfil personal que representa al dueño del terminal, tal como se define por la ContactsContract.Profile mesa. Aplicaciones sociales que mantienen una identidad de usuario puede contribuir a los datos del perfil del usuario mediante la creación de un nuevo ContactsContract.RawContacts entrada en el ContactsContract.Profile . Es decir, contactos primas que representan al usuario del dispositivo no pertenecen a la tabla tradicional de contactos primas definidas por el ContactsContract.RawContacts Uri, en su lugar, debe agregar un contacto perfil de primas en la tabla de CONTENT_RAW_CONTACTS_URI . Contactos crudo en este cuadro se agregan en el perfil de usuario único visible llamado "Me".

Agregar un nuevo contacto primas para el perfil requiere la WRITE_PROFILE permiso. Del mismo modo, con el fin de leer la tabla de perfiles, debe solicitar la READ_PROFILE permiso. Sin embargo, la mayoría de aplicaciones no es necesario leer el perfil de usuario, incluso cuando se aportan datos para el perfil. La lectura del perfil de usuario es un permiso sensible y se debe esperar que los usuarios se muestran escépticos de las aplicaciones que así lo soliciten.

Invitar a la intención

El INVITE_CONTACT acción intención permite una aplicación para invocar una acción que indica que el usuario quiere añadir un contacto a una red social. La aplicación de recibir la aplicación que utiliza para invitar al contacto especificado a esa red social. La mayoría de aplicaciones estará en el extremo receptor de esta operación. Por ejemplo, el built-in People aplicación invoca la intención de invitar a cuando el usuario selecciona "Agregar conexión" para una aplicación específica social que aparece en la lista de datos de contacto de una persona.

Page 3: Android 4

Para hacer visible su aplicación como en el "Agregar conexión" lista, su aplicación debe proporcionar un adaptador de sincronización para sincronizar información de contactos de su red social. A continuación, debe indicar al sistema que su aplicación responde a la INVITE_CONTACT intención mediante la adición de la inviteContactActivity atributo para presentar su aplicación de sincronización de la configuración, con un nombre completo de la actividad que el sistema debe comenzar a la hora de enviar la intención de invitar. La actividad que comienza a continuación, puede recuperar el URI para el contacto en cuestión a partir de los datos de la intención y realizar el trabajo necesario para invitar a que el contacto con la red o agregar a la persona a las conexiones del usuario.

Ver el ejemplo del adaptador de sincronización de aplicaciones de ejemplo (en concreto, consulte la contacts.xml archivo).

Fotos grandes

Android ahora soporta fotos en alta resolución para los contactos. Ahora, cuando se presiona una foto en un registro de contacto, el sistema que procesa tanto en la miniatura de 96x96 (como lo ha hecho anteriormente) y 256x256 "visualización de fotos" que está almacenada en una tienda de fotos nueva basada en archivos (las dimensiones exactas que el sistema elige puede variar en el futuro). Usted puede agregar una gran foto a un contacto al poner una foto grande en el habitual PHOTO columna de una fila de datos, que el sistema entonces el proceso en la miniatura correspondiente y mostrar registros de fotos.

Contacto Comentarios uso

El nuevo ContactsContract.DataUsageFeedback API permiten para ayudar a rastrear la frecuencia con la que el usuario utiliza los métodos particulares de las personas de contacto, tales como la frecuencia con la que el usuario utilice cada número de teléfono o dirección de correo electrónico. Esta información ayuda a mejorar el ranking para cada método de contacto asociados a cada persona y ofrecer mejores sugerencias para ponerse en contacto con cada persona.

Calendario de Proveedores

La nueva API de calendario le permite leer, agregar, modificar y eliminar calendarios, eventos, los asistentes, recordatorios y alertas, que se almacenan en el proveedor de calendario.

Una gran variedad de aplicaciones y widgets se pueden utilizar estas API para leer y modificar los eventos del calendario. Sin embargo, algunos de los casos de uso más convincentes son los adaptadores de sincronización que sincronizar el calendario del usuario de los servicios de otro calendario con el proveedor de calendario, con el fin de ofrecer una ubicación unificada para todos los eventos del usuario. Google citas del calendario, por ejemplo, se sincronizan con el proveedor de calendario por el Google Calendar Sync adaptador, lo que permite que estos eventos se ve con Android incorporado en la aplicación Calendario.

Page 4: Android 4

El modelo de datos para los calendarios y la información relacionados con el evento en el Calendario del proveedor se define por CalendarContract . Todos los datos de calendario del usuario se almacena en una serie de tablas definidas por diferentes subclases de CalendarContract :

El CalendarContract.Calendars tabla contiene la información del calendario específico. Cada fila de esta tabla contiene los detalles de un calendario único, como el nombre, el color, la información de sincronización, y así sucesivamente.

El CalendarContract.Events tabla contiene información específica del evento. Cada fila de esta tabla contiene la información para un solo evento, como el título del evento, lugar, hora de inicio y final, y así sucesivamente. El evento puede ocurrir una vez o repetirse varias veces. Los asistentes, recordatorios, y las propiedades extendidas se almacenan en tablas separadas y usar el evento de _ID para vincularlos con el evento.

El CalendarContract.Instances tabla contiene el tiempo de inicio y final de las ocurrencias de un evento. Cada fila de esta tabla representa una sola aparición. Para los eventos de una sola vez que hay una asignación uno a uno de los casos a los acontecimientos. Para los eventos recurrentes, varias filas se generan automáticamente para corresponder a las múltiples ocurrencias de ese evento.

El CalendarContract.Attendees tabla contiene el asistente de eventos o información de los invitados. Cada fila representa un invitado de un evento. Se especifica el tipo de cliente es la persona y la respuesta de la persona para el evento.

El CalendarContract.Reminders tabla contiene los datos de alerta / notificación. Cada fila representa una única alerta para un evento. Un evento puede tener varios recordatorios. El número de recordatorios por evento se especifica en MAX_REMINDERS , que es fijado por el adaptador de sincronización que es dueño del calendario. Los recordatorios se especifica en el número de minutos antes del evento está programada y especificar un método de alarma, tales como el uso de un alerta por correo electrónico o SMS para recordar al usuario.

El CalendarContract.ExtendedProperties mesa de mantener los campos de datos opaco utilizado por el adaptador de sincronización. El proveedor no realiza ninguna acción con los elementos de esta tabla, excepto para eliminarlos cuando sus eventos relacionados se eliminan.

Para acceder a los datos de un usuario del calendario con el proveedor de calendario, la aplicación debe solicitar la READ_CALENDAR permiso (para acceso de lectura) y WRITE_CALENDAR (para acceso de escritura).

Caso de la intención

Si todo lo que quiero hacer es agregar un evento al calendario del usuario, puede utilizar un ACTION_INSERT intención con los datos definidos por Events.CONTENT_URI con el fin de iniciar una actividad en la aplicación de calendario que crea nuevos eventos. Utilizando la intención no requiere ningún permiso y se pueden especificar los detalles del evento con los siguientes extras:

Page 5: Android 4

Events.TITLE : Nombre del evento CalendarContract.EXTRA_EVENT_BEGIN_TIME : Evento comenzar el tiempo en

milisegundos desde la época CalendarContract.EXTRA_EVENT_END_TIME : Hora del evento final en

milisegundos desde la época Events.EVENT_LOCATION : Lugar del evento Events.DESCRIPTION : Descripción del evento Intent.EXTRA_EMAIL : direcciones de correo electrónico de aquellos que invite a Events.RRULE : La regla de recurrencia para el evento Events.ACCESS_LEVEL : Si el evento es privado o público Events.AVAILABILITY : Si el periodo de tiempo de este evento permite a otros

eventos que se programará en el mismo tiempo

Correo de voz del proveedor

El proveedor de correo de voz permite a las aplicaciones nuevas para agregar mensajes de voz al dispositivo, a fin de presentar todos los mensajes de voz del usuario en una presentación visual única. Por ejemplo, es posible que un usuario tiene varias fuentes de buzón de voz, como un proveedor de servicios de teléfono y otros de VoIP y otros servicios de voz alternativa. Estas aplicaciones pueden utilizar las API de proveedor de correo de voz para añadir sus mensajes de voz en el dispositivo. La aplicación Teléfono incorporado a continuación, presenta todos los mensajes de voz al usuario en una presentación unificada. A pesar de la aplicación del sistema de teléfono es la única aplicación que puede leer todos los mensajes de voz, cada aplicación que proporciona mensajes de voz pueden leer los que se ha añadido al sistema (pero no pueden leer mensajes de voz de otros servicios).

Debido a que el API en la actualidad no permiten aplicaciones de terceros para leer todos los mensajes de voz del sistema, la única aplicaciones de terceros que se deben utilizar las API de correo de voz son los que tienen correo de voz para ofrecer al usuario.

El VoicemailContract clase define el proveedor de contenidos para la Provder correo de voz. Las subclases VoicemailContract.Voicemails y VoicemailContract.Status ofrecer tablas en las que las aplicaciones se pueden insertar los datos de correo de voz para el almacenamiento en el dispositivo. Para un ejemplo de una aplicación de proveedor de correo de voz, ver el demo del proveedor de correo de voz .

Multimedia

Android 4.0 añade varias APIs nuevas aplicaciones que interactúan con los medios de comunicación, como fotos, videos y música.

Efectos de los medios de comunicación

Un nuevo marco de los medios de comunicación de efectos le permite aplicar una gran variedad de efectos visuales a las imágenes y videos. Por ejemplo, efectos de imagen le permiten fijar fácilmente los ojos rojos, convertir una imagen a escala de grises, ajustar el

Page 6: Android 4

brillo, ajustar la saturación, rotar una imagen, aplicar un efecto de ojo de pez, y mucho más. El sistema realiza todos los efectos de procesamiento en la GPU para obtener el máximo rendimiento.

Para un máximo rendimiento, los efectos se aplican directamente a las texturas OpenGL, por lo que su aplicación debe tener una validez contexto OpenGL antes de que pueda utilizar las API de los efectos. Las texturas a las que se aplican efectos pueden ser a partir de mapas de bits, videos o incluso la cámara. Sin embargo, hay ciertas restricciones que deben cumplir con las texturas:

1. Se debe estar enlazado a un GL_TEXTURE_2D imagen de la textura 2. Que debe contener al menos un nivel de mipmap

Un Effect objeto define un efecto de los medios de comunicación único que se puede aplicar a un cuadro de imagen. El flujo de trabajo básico para crear un Effect es el siguiente:

1. Llame EffectContext.createWithCurrentGlContext() de su contexto OpenGL ES 2.0.

2. Utilice la volvió EffectContext llamar EffectContext.getFactory() , que devuelve una instancia de EffectFactory .

3. Llame createEffect() , pasándole el nombre a partir del enlace @ android.media.effect.EffectFactory}, como EFFECT_FISHEYE o EFFECT_VIGNETTE .

Puede ajustar los parámetros de un efecto llamando setParameter() y pasar un nombre de parámetro y el valor del parámetro. Cada tipo de efecto acepta parámetros diferentes, las cuales están documentadas con el nombre del efecto. Por ejemplo, EFFECT_FISHEYE tiene un parámetro de la scale de la distorsión.

Para aplicar un efecto de una textura, llamada apply() sobre el Effect y pasar en la textura de entrada, que es ancho y alto, y la textura de salida. La textura de entrada debe estar ligado a un GL_TEXTURE_2D imagen de la textura (generalmente se hace llamando a la glTexImage2D() la función). Usted puede proporcionar múltiples niveles mipmap. Si la textura de salida no se ha vinculado a una imagen de la textura, que quedará obligado automáticamente por el efecto como GL_TEXTURE_2D y con un nivel de mipmap uno (0), que tendrá el mismo tamaño que el de entrada.

Todos los efectos que figuran en EffectFactory están garantizados para ser admitidos. Sin embargo, algunos efectos adicionales disponibles en las bibliotecas externas no son compatibles con todos los dispositivos, por lo que primero debe comprobar si el efecto deseado de la biblioteca externa con el apoyo de llamar isEffectSupported() .

Cliente de control remoto

El nuevo RemoteControlClient permite a los jugadores los medios de comunicación para permitir que los controles de reproducción de los clientes del mando a distancia, tales como

Page 7: Android 4

la pantalla de bloqueo del dispositivo. Reproductores de medios también puede exponer a información acerca de los medios de comunicación actualmente juega en el display del mando a distancia, tales como información de la pista y del álbum.

Para permitir a los clientes de control remoto para el reproductor de medios de comunicación, crear una instancia de RemoteControlClient con su constructor, pasándole una PendingIntent que transmite ACTION_MEDIA_BUTTON . La intención también debe declarar explícitamente el BroadcastReceiver componente en su aplicación que se encarga de la ACTION_MEDIA_BUTTON evento.

Para declarar que los medios de comunicación controlan el desarrollo de su reproductor puede manejar, usted debe llamar setTransportControlFlags() en su RemoteControlClient , pasando de un conjunto de FLAG_KEY_MEDIA_* banderas, como FLAG_KEY_MEDIA_PREVIOUS y FLAG_KEY_MEDIA_NEXT .

A continuación, debe registrar su RemoteControlClient pasándolo a MediaManager.registerRemoteControlClient() . Una vez registrado, el receptor de radiodifusión ha declarado que cuando una instancia del RemoteControlClient recibirá ACTION_MEDIA_BUTTON eventos cuando se pulsa un botón de un mando a distancia. La intención que recibe incluye el KeyEvent para el prensado principales medios de comunicación, que se puede recuperar a partir de la intención con la getParcelableExtra(Intent.EXTRA_KEY_EVENT) .

Para mostrar la información en el control remoto sobre la reproducción de archivos multimedia, llame editMetaData() y añadir metadatos a los volvió RemoteControlClient.MetadataEditor . Puede proporcionar un mapa de bits para la obra de arte los medios de comunicación, la información numérica, tales como el tiempo transcurrido, y la información de texto, como el título de la pista. Para obtener información sobre las claves disponibles ver el METADATA_KEY_* banderas en MediaMetadataRetriever .

Para una implementación de ejemplo, vea el reproductor de música aleatoria , que proporciona compatibilidad con la lógica de tal manera que permite que el cliente de control remoto de dispositivos Android 4.0, mientras que sigue prestando apoyo a los dispositivos de nuevo a Android 2.1.

Reproductor de medios

Medios de transmisión en línea de MediaPlayer ahora requiere que el INTERNET permiso. Si usted usa MediaPlayer para reproducir contenidos de Internet, asegúrese de agregar la INTERNET permiso para su manifiesto o bien la reproducción de los medios de comunicación no va a funcionar a partir de Android 4.0.

setSurface() le permite definir una Surface que se comporten como el disipador de video.

setDataSource() le permite enviar cabeceras HTTP adicionales con su solicitud, que puede ser útil para HTTP (S) en vivo

Page 8: Android 4

HTTP (S) en vivo ahora respeta las cookies HTTP a través de peticiones

Los tipos de medios

Android 4.0 añade soporte para:

HTTP / HTTPS en vivo Protocol version 3 ADTS primas codificación AAC de audio WEBP imágenes Matroska vídeo

Para más información, consulte Formatos de los medios de comunicación .

Cámara

La Camera de clase ahora incluye las API de detección de rostros y el control de áreas de enfoque y de medición.

Detección de rostros

Aplicaciones de la cámara ahora puede mejorar sus habilidades con las API de Android de detección de rostros, que no sólo detecta el rostro de un sujeto, sino también rasgos faciales específicos, tales como los ojos y la boca.

Para detectar los rostros en la aplicación de la cámara, debe registrar un Camera.FaceDetectionListener llamando setFaceDetectionListener() . A continuación, puede empezar su superficie de la cámara y empezar a detectar las caras llamando startFaceDetection() .

Cuando el sistema detecta una o más caras en la escena de la cámara, que llama a la onFaceDetection() de devolución de llamada en su implementación de Camera.FaceDetectionListener , incluyendo una gran variedad de Camera.Face objetos.

Una instancia de la Camera.Face clase proporciona diversa información sobre la cara detectada, incluyendo:

A Rect que especifica los límites de la cara, en relación con el campo actual de la cámara de vista

Transcurrirá un entero 1 y 100 que indica la confianza que el sistema es que el objeto es un rostro humano

Un identificador único para que pueda controlar múltiples caras Varios Point que indican que los objetos a los ojos y la boca se encuentran

Nota: La detección de caras puede no ser compatible con algunos dispositivos, por lo que debe comprobar llamando getMaxNumDetectedFaces() y asegurar el valor de retorno es

Page 9: Android 4

mayor que cero. Además, algunos dispositivos no sean compatibles con la identificación de los ojos y la boca, en cuyo caso, los campos de la Camera.Face objeto será nulo.

El enfoque y la medición de las áreas

Aplicaciones de la cámara ahora puede controlar las áreas que utiliza la cámara para enfocar y para mantener el equilibrio de medición de blancos y compensación de exposición. Ambas funciones utilizan el nuevo Camera.Area clase para especificar la región de la vista actual de la cámara que debe ser enfocado o medido. Una instancia de la Camera.Area clase define los límites de la zona con un Rect y el peso que representa el área es el nivel de importancia de esa área, en relación con otras áreas en consideración-con un número entero.

Antes de configurar ya sea un área de interés o área de medición, primero debe llamar a getMaxNumFocusAreas() o getMaxNumMeteringAreas() , respectivamente. Si estos devuelven cero, entonces el dispositivo no es compatible con la función correspondiente.

Para especificar las áreas de enfoque o de medición de usar, basta con llamar setFocusAreas() o setMeteringAreas() . Cada uno toma una List de Camera.Area objetos que indican las áreas a considerar para el foco o la medición. Por ejemplo, se podría implementar una función que permite al usuario establecer el área de enfoque al tocar un área de la vista previa, que luego se traducen en una Camera.Area objeto y solicitar que la cámara se centran en el área de la escena. El enfoque o la exposición en esa zona continuamente se actualizará la escena en la zona de cambios.

Enfoque automático continuo para las fotos

Ahora puede activar automático continuo de enfoque (CAF) al tomar las fotos. Para activar la CAF en su aplicación de la cámara, pase FOCUS_MODE_CONTINUOUS_PICTURE a setFocusMode() . Cuando esté listo para capturar una foto, llame al autoFocus() . Su Camera.AutoFocusCallback inmediatamente recibe una devolución de llamada para indicar si el foco se ha logrado. Para reanudar la CAF después de recibir la devolución de llamada, debe llamar a cancelAutoFocus() .

Nota: enfoque automático continuo también se apoya en la captura de vídeo, utilizando FOCUS_MODE_CONTINUOUS_VIDEO , que se añadió en el nivel de API 9.

Otras características de la cámara

Durante la grabación de vídeo, puede llamar a takePicture() para guardar una foto sin interrumpir la sesión de vídeo. Antes de hacerlo, usted debe llamar a isVideoSnapshotSupported() para comprobar que el hardware lo soporta.

Ahora puede bloquear la exposición automática y balance de blancos con setAutoExposureLock() y setAutoWhiteBalanceLock() para evitar que estas propiedades cambien.

Page 10: Android 4

Ahora puede llamar a setDisplayOrientation() mientras que la previa de la cámara está en funcionamiento. Anteriormente, se podía llamar a esto sólo antes de comenzar la vista previa, pero ahora se puede cambiar la orientación en cualquier momento.

Intentos cámara de difusión

Camera.ACTION_NEW_PICTURE : Esto indica que el usuario ha capturado una nueva foto. La función de cámara de aplicación invoca esta emisión después de la foto es capturada y aplicaciones de terceros cámara también debe transmitir esta intención después de capturar una foto.

Camera.ACTION_NEW_VIDEO : Esto indica que el usuario ha capturado un nuevo video. La función de cámara de aplicación invoca esta emisión después de que un vídeo está grabado y aplicaciones de terceros cámara también debe transmitir esta intención después de grabar un vídeo.

Android Manga (NDEF Push con NFC)

Android Beam es una nueva característica de la NFC que te permite enviar mensajes NDEF de un dispositivo a otro (un proceso conocido también como "Push NDEF"). La transferencia de datos se inicia cuando dos dispositivos con Android que soportan Android haz están muy cerca (alrededor de 4 cm), por lo general con la espalda tocando. Los datos contenidos en el mensaje NDEF puede contener cualquier información que desea compartir entre los dispositivos. Por ejemplo, la gente comparte aplicación de contactos, las acciones de vídeos de YouTube, y las direcciones URL Browser acciones con Android Manga .

Para transmitir datos entre dispositivos que utilizan Android Beam, es necesario crear una NdefMessage que contiene la información que desee compartir, mientras que su actividad está en primer plano. A continuación, debe pasar el NdefMessage al sistema en una de dos maneras:

Definir una sola NdefMessage para empujar mientras que en la actividad:

Llame setNdefPushMessage() en cualquier momento para configurar el mensaje que desea enviar. Por ejemplo, usted podría llamar a este método y pasar su NdefMessage durante su actividad de onCreate() método. Entonces, cada vez Android haz se activa con otro dispositivo, mientras que la actividad está en primer plano, el sistema envía el NdefMessage con el otro dispositivo.

Definir el NdefMessage para empujar a la vez que se inicia haz Android:

Implementar NfcAdapter.CreateNdefMessageCallback , en el que la implementación de la createNdefMessage() método devuelve el NdefMessage que desea enviar. A continuación, pasar el NfcAdapter.CreateNdefMessageCallback implementación de setNdefPushMessageCallback() .

Page 11: Android 4

En este caso, cuando Android haz se activa con otro dispositivo, mientras que su actividad está en primer plano, el sistema llama createNdefMessage() para recuperar el NdefMessage que desea enviar. Esto le permite definir el NdefMessage para entregar una sola vez para Android viga se inicia, en caso de que el contenido del mensaje puede variar a lo largo de la vida de la actividad.

En el caso de que desee ejecutar algún código específico una vez que el sistema se ha entregado con éxito su mensaje NDEF al otro dispositivo, se puede implementar NfcAdapter.OnNdefPushCompleteCallback y lo puso con setNdefPushCompleteCallback() . Entonces, el sistema llamará onNdefPushComplete() cuando el mensaje se entrega.

En el dispositivo receptor, los cables del sistema NDEF mensajes Push de una manera similares a los de las etiquetas NFC. El sistema llama a una intención con el ACTION_NDEF_DISCOVERED de acción para iniciar una actividad, ya sea con una URL o un tipo MIME establecidos de acuerdo con la primera NdefRecord en el NdefMessage . Para la actividad que desea responder, puede declarar la intención de filtros para las direcciones URL o los tipos MIME de su aplicación se preocupa. Para más información sobre la etiqueta de envío ver la NFC guía para desarrolladores.

Si quieres que tu NdefMessage para llevar a un URI, ahora puede usar el método de conveniencia createUri para construir un nuevo NdefRecord sobre la base de una cadena o un Uri objeto. Si el URI es un formato especial que desea que su solicitud para recibir también durante un evento haz Android, se debe crear un filtro de intención para su actividad mediante el esquema de URI mismo con el fin de recibir el mensaje NDEF entrante.

Usted también debe pasar un "registro de aplicaciones Android" con su NdefMessage con el fin de garantizar que su aplicación se encarga de la NDEF mensaje entrante, incluso si otras aplicaciones de filtro para la acción misma intención. Usted puede crear un registro de la aplicación Android llamando createApplicationRecord() , que pasa que el nombre de la aplicación del paquete. Cuando el dispositivo recibe el mensaje NDEF con el registro de aplicaciones y múltiples aplicaciones contienen actividades que se encargan de la intención especifica, el sistema siempre entrega el mensaje a la actividad de su aplicación (con base en el registro de la aplicación correspondiente) . Si el dispositivo de destino no tiene actualmente su aplicación instalada, el sistema utiliza el registro de aplicación de Android para lanzar Android Market y llevar al usuario a la aplicación con el fin de instalarlo.

Si su aplicación no utiliza las API de la NFC para realizar NDEF mensajería push, entonces Android proporciona un comportamiento por defecto: Cuando la aplicación está en primer plano en un dispositivo Android y haz que se invoca con otro dispositivo con Android, el dispositivo recibe una NDEF mensaje con un registro de aplicaciones Android que identifica a su aplicación. Si el dispositivo receptor tiene instalada la aplicación, el sistema se pone en marcha, si no está instalado, Android Market se abre y permite al usuario acceder a su solicitud con el fin de instalarlo.

Page 12: Android 4

Usted puede leer más acerca de Android de vigas y otros elementos de la NFC en los Fundamentos de la NFC guía para desarrolladores. De un código de ejemplo con Android Beam, ver la demo haz Android .

Wi-Fi Direct

Android ahora es compatible con Wi-Fi Direct para (P2P) peer-to-peer conexiones entre los dispositivos con Android y otros tipos de dispositivos, sin un punto de acceso o conexión a Internet. El marco de Android proporciona un conjunto de API de Wi-Fi P2P que permiten descubrir y conectarse a otros dispositivos en que cada dispositivo es compatible con Wi-Fi Direct, y luego comunican a través de una conexión rápida a través de distancias mucho más largas que una conexión Bluetooth.

Un nuevo paquete, android.net.wifi.p2p , contiene todas las API para la realización de peer-to-peer con conexiones Wi-Fi. La clase principal que necesita para trabajar es WifiP2pManager , que se pueden adquirir llamando al getSystemService(WIFI_P2P_SERVICE) . El WifiP2pManager incluye API que le permiten:

Inicializar la aplicación de las conexiones P2P llamando initialize() Descubrir dispositivos cercanos llamando discoverPeers() Iniciar una conexión P2P llamando a connect() Y más

Varias otras interfaces y las clases son necesarias, así, como por ejemplo:

El WifiP2pManager.ActionListener interfaz le permite recibir devoluciones de llamada cuando una operación como la de descubrir los pares o la conexión a ellos tiene éxito o fracasa.

WifiP2pManager.PeerListListener interfaz le permite recibir información acerca de sus compañeros descubrieron. La devolución de llamada proporciona una WifiP2pDeviceList , desde donde se puede recuperar un WifiP2pDevice objeto para cada dispositivo dentro del rango y obtener información como el nombre del dispositivo, dirección, tipo de dispositivo, la configuración WPS compatible con el dispositivo, y mucho más.

El WifiP2pManager.GroupInfoListener interfaz le permite recibir información sobre un grupo de P2P. La devolución de llamada proporciona una WifiP2pGroup objeto, que ofrece información del grupo, como el propietario, el nombre de red y contraseña.

WifiP2pManager.ConnectionInfoListener interfaz le permite recibir información sobre la conexión actual. La devolución de llamada proporciona una WifiP2pInfo objeto, que tiene información sobre si un grupo se ha formado y que es el propietario del grupo.

Con el fin de utilizar las API de Wi-Fi P2P, su aplicación debe solicitar los permisos siguientes:

Page 13: Android 4

ACCESS_WIFI_STATE CHANGE_WIFI_STATE INTERNET (aunque su aplicación no técnicamente la conexión a Internet,

comunicarse con Wi-Fi con el estándar de los compañeros directos java sockets requiere de permisos de Internet).

El sistema Android también difunde diversas acciones durante ciertos eventos Wi-Fi P2P:

WIFI_P2P_CONNECTION_CHANGED_ACTION : El estado de la conexión P2P ha cambiado. Esto lleva a EXTRA_WIFI_P2P_INFO con un WifiP2pInfo objeto y EXTRA_NETWORK_INFO con un NetworkInfo objeto.

WIFI_P2P_STATE_CHANGED_ACTION : El estado P2P ha cambiado entre activar y desactivar. Lleva EXTRA_WIFI_STATE , ya sea con WIFI_P2P_STATE_DISABLED o WIFI_P2P_STATE_ENABLED

WIFI_P2P_PEERS_CHANGED_ACTION : La lista de dispositivos de pares ha cambiado. WIFI_P2P_THIS_DEVICE_CHANGED_ACTION : Los detalles de este dispositivo ha

cambiado.

Ver el WifiP2pManager documentación para más información. También mirar el Wi-Fi Direct demostración aplicación de ejemplo.

Dispositivos Bluetooth de la Salud

Android ahora es compatible con dispositivos Bluetooth Perfil de Salud, para que pueda crear aplicaciones que utilizan Bluetooth para comunicarse con los dispositivos Bluetooth que la salud de apoyo, tales como monitores de ritmo cardíaco, medidores de sangre, termómetros y escalas.

Similares a los auriculares regulares y los dispositivos de perfil A2DP, usted debe llamar getProfileProxy() con un BluetoothProfile.ServiceListener y la HEALTH tipo de perfil para establecer una conexión con el objeto de proxy de perfil.

Una vez que haya adquirido el proxy Perfil de Salud (el BluetoothHealth objeto), conectar y comunicar con los dispositivos de salud vinculados implica las siguientes clases nuevas Bluetooth:

BluetoothHealthCallback : Usted debe extender esta clase y poner en práctica los métodos de devolución de llamada para recibir actualizaciones sobre los cambios en el estado de registro de la aplicación y el estado del canal Bluetooth.

BluetoothHealthAppConfiguration : Durante las devoluciones de llamada a su BluetoothHealthCallback , usted recibirá una instancia de este objeto, el cual proporciona información de configuración sobre el dispositivo Bluetooth de salud disponibles, que debe utilizar para realizar diversas operaciones, tales como iniciar y terminar las conexiones con el BluetoothHealth API.

Page 14: Android 4

Para más información sobre el uso del Perfil de Salud de Bluetooth, consulte la documentación de BluetoothHealth .

Accesibilidad

Android 4.0 mejora la accesibilidad para usuarios con discapacidad visual con nuevos explorar por tocar el modo y las API extendidas que le permiten dar más información sobre el contenido del punto de vista o el desarrollo de servicios avanzados de accesibilidad.

Explore por el modo de contacto

Los usuarios con pérdida de la visión pueden ahora explorar la pantalla al tocar y arrastrar el dedo por la pantalla para escuchar las descripciones de la voz de su contenido. Debido a que el modo de explorar por táctil funciona como un cursor virtual, que permite a los lectores de pantalla para identificar el texto descriptivo de la misma manera que los lectores de pantalla se puede cuando el usuario navega con un d-pad o trackball, mediante la lectura de la información proporcionada por android:contentDescription y setContentDescription() en una simulación de "flotar" del evento. Por lo tanto, consideran que es un recordatorio de que debe proporcionar un texto descriptivo de las opiniones en su aplicación, especialmente para ImageButton , EditText , ImageView y otros widgets que, naturalmente, no puede contener un texto descriptivo.

Accesibilidad para las vistas

Para mejorar la información a disposición de los servicios de accesibilidad como lectores de pantalla, se puede implementar nuevos métodos de devolución de llamada para los eventos de la accesibilidad en su encargo View componentes.

Es importante tener en cuenta primero que el comportamiento de la sendAccessibilityEvent() método ha cambiado en Android 4.0. Al igual que con la versión anterior de Android, cuando el usuario permite a los servicios de accesibilidad en el dispositivo y un evento de entrada como un click o hover ocurre, el punto de vista respectivos se notifica con una llamada a sendAccessibilityEvent() . Anteriormente, la aplicación de la sendAccessibilityEvent() se inicializa un AccessibilityEvent y enviarlo a AccessibilityManager . El nuevo comportamiento involucra algunos de los métodos de devolución de llamada adicionales que permiten la vista y sus padres a añadir más información contextual para el evento:

1. Cuando se invoca, el sendAccessibilityEvent() y sendAccessibilityEventUnchecked() los métodos de aplazar hasta onInitializeAccessibilityEvent() .

Implementaciones personalizadas de View que desee implementar onInitializeAccessibilityEvent() para adjuntar información de accesibilidad a la AccessibilityEvent , sino que también debe llamar a la implementación súper para proporcionar información predeterminada como la descripción del

Page 15: Android 4

contenido estándar, índice de elemento, y mucho más. Sin embargo, no debe agregar el contenido de texto adicional en esta devolución de llamada-que sucede a continuación.

2. Una vez inicializado, si el evento es uno de varios tipos que se debe rellenar con información de texto, el punto de vista entonces recibe una llamada a dispatchPopulateAccessibilityEvent() , que se remite a la onPopulateAccessibilityEvent() de devolución de llamada.

Implementaciones personalizadas de View por lo general debe aplicar onPopulateAccessibilityEvent() para agregar el contenido de texto adicional a la AccessibilityEvent si el android:contentDescription texto es que falta o insuficiente. Para añadir más texto descriptivo para el AccessibilityEvent , llame getText() . add() .

3. En este punto, el View pasa el evento hasta la jerarquía de la vista llamando requestSendAccessibilityEvent() en la opinión de los padres. Cada vista padre tiene entonces la oportunidad de aumentar la información sobre la accesibilidad mediante la adición de un AccessibilityRecord , hasta que finalmente alcanza la vista raíz, que envía el caso a la AccessibilityManager con sendAccessibilityEvent() .

Además de los nuevos métodos de arriba, que son útiles cuando se extiende la View de clases, también se puede interceptar estas devoluciones de llamada en cualquier evento View extendiendo AccessibilityDelegate y se establece en el punto de vista con setAccessibilityDelegate() . Cuando lo haga, cada método de acceso en el punto de vista difiere de la llamada al método correspondiente en el delegado. Por ejemplo, cuando el punto de vista recibe una llamada a onPopulateAccessibilityEvent() , lo que pasa con el mismo método en el View.AccessibilityDelegate . Los métodos no son manejados por el delegado se les da el derecho de nuevo a la vista del comportamiento por defecto. Esto le permite reemplazar sólo los métodos necesarios para cualquier punto de vista determinado, sin ampliar la View de clases.

Si desea mantener la compatibilidad con las versiones de Android anteriores a 4.0, mientras que también soporta las nuevas API de la accesibilidad, puede hacerlo con la última versión de la biblioteca de compatibilidad v4 (en el paquete de compatibilidad, r4 ) usando un conjunto de clases de utilidad que proporcionan la API de accesibilidad de nuevo en un diseño compatible con versiones anteriores.

Servicios de accesibilidad

Si está desarrollando un servicio de la accesibilidad, la información sobre los eventos de accesibilidad diversas se ha ampliado considerablemente para activar la respuesta a la accesibilidad para los usuarios más avanzados. En particular, los eventos se genera en base a la composición de vista, proporcionando una mejor información de contexto y permite

Page 16: Android 4

que los servicios de accesibilidad para atravesar las jerarquías para obtener información adicional de ver y tratar los casos especiales.

Si está desarrollando un servicio de accesibilidad (como un lector de pantalla), puede acceder a la información de contenido adicional y recorrer transversalmente jerarquías de vista con el siguiente procedimiento:

1. Al recibir una AccessibilityEvent de una solicitud, llame al AccessibilityEvent.getRecord() para recuperar un determinado AccessibilityRecord (puede haber varios registros asociados al evento).

2. Desde cualquiera de AccessibilityEvent o un individuo AccessibilityRecord , puede llamar a getSource() para recuperar un AccessibilityNodeInfo objeto.

Un AccessibilityNodeInfo representa un único nodo del contenido de la ventana en un formato que permite consultar la información de accesibilidad de dicho nodo. El AccessibilityNodeInfo objeto devuelto por AccessibilityEvent describe el origen del evento, mientras que la fuente de un AccessibilityRecord describe el predecesor de la fuente del evento.

3. Con la AccessibilityNodeInfo , se puede consultar información al respecto, llame a getParent() o getChild() para recorrer la jerarquía de la vista, e incluso añadir puntos de vista del niño en el nodo.

Con el fin de que su solicitud se publicará en el sistema como un servicio de accesibilidad, se debe declarar un archivo de configuración XML que corresponde a AccessibilityServiceInfo . Para más información sobre cómo crear un servicio de accesibilidad, consulte AccessibilityService y SERVICE_META_DATA para obtener información sobre la configuración de XML.

APIs de accesibilidad

Si estás interesado en el estado de la accesibilidad del dispositivo, el AccessibilityManager tiene algunas nuevas API como:

AccessibilityManager.AccessibilityStateChangeListener es una interfaz que le permite recibir una devolución de llamada cuando la accesibilidad está activada o desactivada.

getEnabledAccessibilityServiceList() proporciona información sobre los servicios de acceso están habilitadas.

isTouchExplorationEnabled() le indica si el modo de explorar por contacto es permitido.

Corrector ortográfico Servicios

Un nuevo corrector ortográfico marco permite crear aplicaciones de correctores ortográficos de una manera similar a la estructura de métodos de entrada (por IME). Para

Page 17: Android 4

crear un nuevo corrector ortográfico, debe implementar un servicio que se extiende SpellCheckerService y ampliar la SpellCheckerService.Session clase para proporcionar sugerencias de ortografía basada en el texto proporcionado por los métodos de devolución de llamada de la interfaz. En el SpellCheckerService.Session métodos de devolución de llamada, deberá devolver las sugerencias de ortografía como SuggestionsInfo objetos.

Aplicaciones con un servicio de corrección ortográfica debe declarar la BIND_TEXT_SERVICE permiso como lo requiere el servicio. El servicio también debe declarar un filtro de intención con <action android:name="android.service.textservice.SpellCheckerService" /> como la acción de la intención y debe incluir una <meta-data> elemento que declara la información de configuración para el corrector ortográfico.

Vea el ejemplo del corrector ortográfico de servicios de aplicaciones y muestra hechizos cliente Checker aplicación de código de ejemplo.

Texto a voz Motores

De texto a voz de Android (TTS) API se han ampliado considerablemente para que las aplicaciones para implementar más fácilmente los motores de TTS costumbre, mientras que las aplicaciones que quieran utilizar un motor TTS tiene una API nueva pareja para la selección de un motor.

El uso de texto a voz motores

En las versiones anteriores de Android, se puede utilizar el TextToSpeech clase para llevar a cabo de texto a voz (TTS) las operaciones con el motor de TTS que proporciona el sistema o conjunto de un motor personalizado con setEngineByPackageName() . En Android 4.0, el setEngineByPackageName() método ha quedado obsoleto y ahora se puede especificar el motor para su uso con un nuevo TextToSpeech constructor que acepta el nombre del paquete de un motor TTS.

También puede consultar los motores TTS disponibles con getEngines() . Este método devuelve una lista de TextToSpeech.EngineInfo objetos, que incluyen metadatos, como el icono del motor, la etiqueta y el nombre del paquete.

La construcción de texto a voz motores

Anteriormente, los motores de la costumbre exigía que el motor se construirá utilizando un archivo de cabecera de indocumentados de origen. En Android 4.0, hay un conjunto completo de APIs marco para la construcción de motores de TTS.

La configuración básica requiere de una implementación de TextToSpeechService que responda a las INTENT_ACTION_TTS_SERVICE intención. El trabajo principal de un motor TTS que sucede durante el onSynthesizeText() de devolución de llamada en un servicio

Page 18: Android 4

que se extiende TextToSpeechService . El sistema proporciona este método de dos objetos:

SynthesisRequest : contiene diversos datos que incluye el texto de síntesis, la configuración regional, la velocidad de la voz y el tono de voz.

SynthesisCallback : Esta es la interfaz por la cual el motor TTS ofrece los datos de expresión resultante como el streaming de audio. En primer lugar, el motor debe llamar a start() para indicar que el motor está listo para entregar el audio, y luego llamar a audioAvailable() , pasándole los datos de audio en un búfer de bytes. Una vez que el motor ha pasado todo el audio a través del buffer, llame a done() .

Ahora que el marco es compatible con una API para la creación de verdaderos motores de TTS, el apoyo a la implementación del código nativo ha sido eliminado. Busque una entrada de blog sobre una capa de compatibilidad que se puede utilizar para convertir los motores TTS antiguo al nuevo marco.

Por ejemplo, un motor TTS con las nuevas API, consulte el motor de texto a voz aplicación de ejemplo.

Uso de la red

Android 4.0 ofrece a los usuarios una visibilidad precisa de la cantidad de datos de la red de sus aplicaciones están utilizando. La aplicación de configuración proporciona controles que permiten a los usuarios para gestionar los límites establecidos para el uso de la red de datos e incluso desactivar el uso de los datos de base para las aplicaciones individuales. Con el fin de evitar que los usuarios deshabilitar el acceso de su aplicación a los datos desde el fondo, usted debe desarrollar estrategias para usar usar la conexión de datos de manera eficiente y ajustar su uso en función del tipo de conexión disponible.

Si la aplicación realiza una gran cantidad de transacciones en la red, debe proporcionar una configuración de usuario que permiten a los usuarios controlar sus hábitos de aplicación de datos, tales como la frecuencia con la aplicación de datos se sincroniza, ya sea para realizar cargas / descargas sólo cuando el Wi-Fi, ya sea para uso de datos en roaming, etc Con estos controles a su disposición, los usuarios tienen muchas menos probabilidades de desactivar el acceso de su aplicación a los datos cuando se acercan a sus límites, ya que en lugar se puede controlar con precisión la cantidad de datos que su aplicación utiliza. Si usted proporciona una actividad de preferencia con esta configuración, usted debe incluir en su declaración manifiesta un filtro de intención para la ACTION_MANAGE_NETWORK_USAGE acción. Por ejemplo:

<activity android:name="DataPreferences" android:label="@string/title_preferences">    <intent-filter>        <accion android:name="android.intent.action.MANAGE_NETWORK_USAGE" />        <category android:name="android.intent.category.DEFAULT" />    </ Intención de filtro> </ Actividad>

Page 19: Android 4

Este filtro intención indica al sistema que esta es la actividad que controla el uso de la aplicación de datos. Por lo tanto, cuando el usuario examina la cantidad de datos que su aplicación es el uso de la aplicación Ajustes, una "Ver configuración de la aplicación" botón está disponible que inicia su actividad de preferencia para que el usuario puede refinar la cantidad de datos que su aplicación utiliza.

También ten en cuenta que getBackgroundDataSetting() está obsoleto y siempre devuelve verdadero uso getActiveNetworkInfo() en su lugar. Antes de intentar cualquier operación de la red, siempre debe llamar a getActiveNetworkInfo() para obtener el NetworkInfo que representa la red actual y consulta isConnected() para comprobar si el dispositivo tiene una conexión. A continuación, puede comprobar las propiedades de otro tipo de conexión, como si el dispositivo está conectado al móvil o Wi-Fi.

RenderScript

Tres características principales se han añadido a renderScript:

Fuera de la pantalla la representación de un objeto framebuffer Prestación dentro de una vista RS para cada uno de las API de marco

La Allocation clase ahora es compatible con una USAGE_GRAPHICS_RENDER_TARGET espacio de memoria, que le permite hacer cosas directamente en la Allocation y el uso como un objeto de uso de este dispositivo.

RSTextureView proporciona un medio para mostrar gráficos renderScript en el interior de un View , a diferencia de RSSurfaceView , que crea una ventana independiente. Esta diferencia clave te permite hacer cosas, como mover, transformar, o animar un RSTextureView , así como dibujar gráficos renderScript dentro de una vista que se encuentra dentro de un diseño de la actividad.

El Script.forEach() método le permite llamar a renderScript scripts calcular el nivel de VM y que automáticamente delega a los núcleos disponibles en el dispositivo. Usted no debe utilizar este método directamente, pero cualquier renderScript calcular que escriba tendrá un forEach() método que se puede llamar a la clase renderScript reflejada. Usted puede llamar a la reflejada forEach() método por el que pasa en una entrada Allocation de proceso, una salida de Allocation para escribir el resultado, y un FieldPacker estructura de datos en caso de que el renderScript necesita más información. Sólo uno de los Allocation s es necesaria y la estructura de datos es opcional.

Empresa

Android 4.0 amplía las capacidades de las aplicaciones empresariales con las siguientes características.

Servicios VPN

Page 20: Android 4

El nuevo VpnService permite que las aplicaciones para construir su propia VPN (Virtual Private Network), se ejecuta como un Service . Un servicio de VPN crea una interfaz para una red virtual con su propia dirección y las reglas de enrutamiento y realiza toda la lectura y la escritura con un descriptor de archivo.

Para crear un servicio de VPN, utilice VpnService.Builder , que le permite especificar la dirección de red, servidor DNS, ruta de red y más. Cuando se haya completado, se puede establecer la interfaz llamando al establish() , que devuelve un ParcelFileDescriptor .

Debido a que un servicio de VPN puede interceptar los paquetes, hay implicaciones de seguridad. Por lo tanto, si se implementa VpnService , su servicio debe exigir que el BIND_VPN_SERVICE para asegurarse de que sólo el sistema se puede unir a él (sólo el sistema se concede este permiso aplicaciones-no se puede pedir). A continuación, utilizar el servicio de VPN, los usuarios de forma manual debe habilitarlo en la configuración del sistema.

De políticas de dispositivos

Aplicaciones que gestionan las restricciones dispositivo ahora puede desactivar la cámara utilizando setCameraDisabled() y el USES_POLICY_DISABLE_CAMERA propiedad (que se aplica con un <disable-camera /> elemento en el archivo de configuración de la política).

Certificado de gestión

El nuevo KeyChain clase proporciona APIs que permiten acceder a los certificados de importación y en el almacén de claves del sistema. Certificados de simplificar la instalación de dos certificados de cliente (para validar la identidad del usuario) y los certificados de autoridad de certificación (para verificar la identidad del servidor). Aplicaciones como navegadores web o clientes de correo electrónico pueden acceder a los certificados instalados para autenticar a los usuarios a los servidores. Ver el KeyChain de documentación para más información.

Los sensores del dispositivo

Dos tipos de sensores nuevos se han añadido en Android 4.0:

TYPE_AMBIENT_TEMPERATURE : Un sensor de temperatura que proporciona el ambiente (habitación) la temperatura en grados Celsius.

TYPE_RELATIVE_HUMIDITY : Un sensor de humedad que proporciona la relativa ambiente (habitación) como un porcentaje de humedad.

Si un dispositivo tiene dos TYPE_AMBIENT_TEMPERATURE y TYPE_RELATIVE_HUMIDITY sensores, se pueden utilizar para calcular el punto de rocío y la humedad absoluta.

Page 21: Android 4

El sensor de temperatura anterior, TYPE_TEMPERATURE , ha quedado obsoleto. Se debe utilizar la TYPE_AMBIENT_TEMPERATURE sensor en su lugar.

Además, tres sensores de síntesis de Android se han mejorado mucho por lo que ahora tienen menos latencia y más suave de salida. Estos sensores son el sensor de gravedad ( TYPE_GRAVITY ), sensor de rotación vectorial ( TYPE_ROTATION_VECTOR ), y un sensor de aceleración lineal ( TYPE_LINEAR_ACCELERATION ). Los sensores se basan en la mejora del sensor de giroscopio para mejorar su producción, por lo que los sensores sólo aparecen en los dispositivos que tienen un giroscopio.

Barra de acción

El ActionBar ha sido actualizado para apoyar a varios nuevos comportamientos. Lo más importante es el sistema de forma logra el tamaño de la barra de acción y de la configuración cuando se ejecuta en pantallas más pequeñas con el fin de proporcionar una experiencia de usuario óptima en todos los tamaños de pantalla. Por ejemplo, cuando la pantalla está limitado (por ejemplo, cuando un teléfono está en la orientación vertical), las pestañas de la barra de acciones de navegación aparecen en una "barra apilada", que aparece justo debajo de la barra de acción principales. También pueden optar a una "split barra de acción", que coloca todos los elementos de acción en un bar separado en la parte inferior de la pantalla cuando la pantalla es estrecho.

Dividir la barra de acciones

Si tu barra de acción incluye varios elementos de acción, no todos ellos caben en la barra de acciones en una pantalla estrecha, por lo que el sistema coloca más de ellos en el menú de desbordamiento. Sin embargo, Android 4.0 le permite activar "barra de acción de división" para que más elementos de acción pueden aparecer en la pantalla en un bar por separado en la parte inferior de la pantalla para activar barra de división acción, añade. android:uiOptions con "splitActionBarWhenNarrow" a cualquiera su <application> etiqueta o individuo <activity> etiquetas en el archivo de manifiesto. Cuando está activado, el sistema añade una barra adicional en la parte inferior de la pantalla para todos los puntos de acción cuando la pantalla está limitado (no los puntos de acción aparecerá en la primaria barra de acciones).

Si desea utilizar las fichas de navegación proporcionada por el ActionBar.Tab API, pero no necesitan la barra de acción principal en la parte superior (sólo desea que las pestañas aparezcan en la parte superior), a continuación, active la barra de acción dividido como se describe anteriormente y También llamada setDisplayShowHomeEnabled(false) para desactivar el icono de la aplicación en la barra de acción. Sin nada en la barra de acción principal, desaparece, todo lo que queda son las fichas de navegación en la parte superior y los puntos de acción en la parte inferior de la pantalla.

Estilos de barra de acción

Page 22: Android 4

Si desea aplicar un estilo personalizado a la barra de acción, puede utilizar las propiedades nuevo estilo backgroundStacked y backgroundSplit aplicar un dibujable fondo o el color de la barra apilada y barra de división, respectivamente. También puede establecer estos estilos en tiempo de ejecución con setStackedBackgroundDrawable() y setSplitBackgroundDrawable() .

Acción proveedor

El nuevo ActionProvider clase le permite crear un controlador especializado para puntos de acción. Un proveedor de acción se puede definir una visión de acción, un comportamiento por omisión de acción, y un submenú para cada elemento de acción para la que está asociada. Cuando se desea crear un elemento de acción que tiene comportamientos dinámicos (como un punto de vista de acción variable, la acción por defecto, o submenú), que se extiende ActionProvider es una buena solución para crear un componente reutilizable, en lugar de manejar las transformaciones distintas acciones en el tema el fragmento o la actividad.

Por ejemplo, el ShareActionProvider es una extensión de ActionProvider que facilita una "parte" la acción de la barra de acción. En lugar de utilizar el punto de acción tradicional que invoca la ACTION_SEND intención, puede utilizar este proveedor de la acción de presentar una visión de acción con un desplegable- lista de aplicaciones que se encargan de la ACTION_SEND intención. Cuando el usuario selecciona una aplicación que se utilizará para la acción, ShareActionProvider recuerda que la selección y le proporciona en el punto de vista de acción para un acceso más rápido a compartir con esa aplicación.

Para declarar un proveedor de acción para un elemento de acción, incluyen el android:actionProviderClass atributo en el <item> elemento de menú de las opciones de su actividad, con el nombre de la clase del proveedor de la acción como el valor. Por ejemplo:

<Elemento android: id = "@ + id / menu_share"      android: title = "Compartir"      android: showAsAction = "ifRoom"      android: actionProviderClass = "android.widget.ShareActionProvider" />

En su actividad de onCreateOptionsMenu() el método de devolución de llamada, recuperar una instancia del proveedor de la acción del elemento de menú y poner la intención de:

pública onCreateOptionsMenu booleano (menú Menú) {    . getMenuInflater () inflar (R.menu.options, menú);    ShareActionProvider shareActionProvider =          . (ShareActionProvider) menu.findItem (R.id.menu_share) getActionProvider ();    / / Establecer la intención de parte del proveedor de la acción social.    shareActionProvider.setShareIntent (createShareIntent ());    ...

Page 23: Android 4

    volver super.onCreateOptionsMenu (menú); }

Para ver un ejemplo usando el ShareActionProvider , consulte la ActionBarActionProviderActivity clase en ApiDemos.

Puntos de vista plegables acción

Los elementos de acción que proporcionan una visión de acción pueden ahora cambiar entre el estado de vista de su acción y la acción del elemento tradicional del Estado. Anteriormente, sólo los SearchView apoyado colapso cuando se utiliza como un punto de vista la acción, pero ahora usted puede agregar un punto de vista de acción para cualquier elemento de acción y cambiar entre el estado expandido (ver acción es visible) y el Estado se derrumbó (punto de acción es visible).

Para declarar que un elemento de acción que contiene una visión de la acción ser plegable, incluye el “collapseActionView" bandera en el android:showAsAction de atributos para el <item> elemento en el archivo XML del menú.

Para recibir devoluciones de llamada cuando se cambia un punto de vista de acción entre expandido y contraído, registrar una instancia de MenuItem.OnActionExpandListener con los respectivos MenuItem llamando setOnActionExpandListener() . Normalmente, debe hacerlo durante el onCreateOptionsMenu() de devolución de llamada.

Para el control de un punto de vista la acción plegable, puede llamar a collapseActionView() y expandActionView() en los respectivos MenuItem .

Al crear una vista personalizada de acción, también se puede aplicar la nueva CollapsibleActionView interfaz para recibir devoluciones de llamada cuando la vista se expande y se derrumbó.

Otras API para la barra de acción

setHomeButtonEnabled() le permite especificar si el icono / logo se comporta como un botón para navegar en casa o de "arriba" (pass "verdad" para que se comporte como un botón).

setIcon() y setLogo() permiten definir el icono de la barra de acción o el logotipo en tiempo de ejecución.

Fragment.setMenuVisibility() le permite activar o desactivar la visibilidad de los elementos del menú las opciones declaradas por el fragmento. Esto es útil si el fragmento ha sido añadido a la actividad, pero no es visible, por lo que los elementos del menú se debe ocultar.

FragmentManager.invalidateOptionsMenu() le permite invalidar el menú de opciones de la actividad en varios estados del ciclo de vida del fragmento en el que utilizando el método equivalente de Activity podría no estar disponible.

Page 24: Android 4

Interfaz de usuario y Vistas

Android 4.0 presenta una variedad de puntos de vista nuevos y otros componentes de la interfaz de usuario.

GridLayout

GridLayout es un grupo nuevo punto de vista que coloca puntos de vista del niño en una rejilla rectangular. A diferencia de TableLayout , GridLayout se basa en una jerarquía plana y no hacer uso de puntos de vista intermedios, tales como una tabla para proporcionar la estructura. En cambio, los niños especificar la fila (s) y la columna (s) que debe ocupar (las células pueden abarcar varias filas y / o columnas), y por defecto se establecen en forma secuencial a través de las filas de la cuadrícula y las columnas. El GridLayout orientación determina si los niños son secuenciales por defecto establecidos en horizontal o vertical. Espacio entre los niños puede ser especificado por el uso de instancias de la nueva Space vista o mediante el establecimiento de los parámetros de margen pertinentes sobre los niños.

Ver ApiDemos para muestras con GridLayout .

TextureView

TextureView es una nueva visión que le permite mostrar una secuencia de contenido, como por ejemplo un vídeo o una escena de OpenGL. Aunque es similar a SurfaceView , TextureView es único en que se comporta como una vista normal, en lugar de crear una ventana independiente, lo que se puede tratar como cualquier otro View objeto. Por ejemplo, puede aplicar transformaciones, animarlo con ViewPropertyAnimator o ajustar su opacidad con setAlpha() .

Tenga en cuenta que TextureView sólo funciona dentro de una ventana con aceleración de hardware.

Para más información, consulte la TextureView documentación.

Interruptor de flash

El nuevo Switch flash es un estado de dos de alternancia que los usuarios pueden arrastrar a un lado u otro (o simplemente del grifo) para alternar una opción entre dos estados.

Usted puede utilizar el android:textOn y android:textOff atributos para especificar el texto que aparecerá en el interruptor, cuando en la configuración de encendido y apagado. El android:text atributo también le permite colocar una etiqueta al lado del interruptor.

Para ver un ejemplo usando conmutadores, consulte la switches.xml archivo de diseño y los respectivos interruptores de la actividad.

Page 25: Android 4

Menús emergentes

Android 3.0 introdujo PopupMenu para crear cortos menús contextuales que aparecen en un punto de anclaje que especifique (por lo general en el punto del elemento seleccionado). Android 4.0 amplía el PopupMenu con un par de características útiles:

Ahora puedes inflar el contenido de un menú emergente desde un XML recurso de menú con inflate() , pasándole el identificador de recurso de menú.

Ahora también puede crear un PopupMenu.OnDismissListener que recibe una devolución de llamada cuando el menú se cierra.

Preferencias

Un nuevo TwoStatePreference clase abstracta sirve de base a las preferencias que proporcionan una opción de selección de dos estados. El nuevo SwitchPreference es una extensión de TwoStatePreference que proporciona un Switch flash en la vista de la preferencia que los usuarios puedan cambiar una configuración de encendido o apagado, sin la necesidad de abrir una pantalla de preferencias adicionales o el diálogo. Por ejemplo, la aplicación utiliza una configuración de SwitchPreference para la configuración Wi-Fi y Bluetooth.

Temas del sistema

El tema por defecto para todas las aplicaciones que se dirigen a Android 4.0 (ya sea mediante el establecimiento de targetSdkVersion o minSdkVersion a “14" o superior) es ahora el "dispositivo predeterminado" tema: Theme.DeviceDefault . Este puede ser el tema de Holo oscuro o un tema diferente oscuro definido por el dispositivo específico.

El Theme.Holo familia de los temas están garantizados para no cambiar de un dispositivo a otro cuando se ejecuta la misma versión de Android. Si se aplican explícitamente ninguna de las Theme.Holo temas de sus actividades, usted puede estar seguro de que estos temas no va a cambiar de carácter en diferentes dispositivos dentro de la versión de la plataforma misma.

Si usted desea para su aplicación para combinar con el tema general del dispositivo (por ejemplo, cuando los fabricantes de equipos diferentes que proporcionan diferentes temas por defecto para el sistema), debe aplicarse de forma explícita los temas de la Theme.DeviceDefault familia.

Botón Opciones de menú

A partir de Android 4.0, te darás cuenta de que los teléfonos ya no requieren de un botón de hardware del menú. Sin embargo, no hay necesidad de que te preocupes por esto si la aplicación existente proporciona un menú de opciones y espera que haya un botón de Menú. Para asegurar que las aplicaciones existentes seguirán funcionando como se espera,

Page 26: Android 4

el sistema proporciona un botón de Menú en pantalla para las aplicaciones que fueron diseñadas para versiones anteriores de Android.

Para una mejor experiencia de usuario, aplicaciones nuevas y actualizadas debería usar el ActionBar para proporcionar acceso a los elementos de menú y establecer targetSdkVersion a "14" para tomar ventaja de los comportamientos más por defecto marco.

Controles para el sistema de visibilidad de la interfaz de usuario

Desde los primeros días de Android, el sistema ha logrado un componente de interfaz de usuario conocida como la barra de estado, que se encuentra en la parte superior de los dispositivos de teléfono para ofrecer información, como la señal de la portadora, tiempo, notificaciones, etc. Android 3.0 añade la barra de sistema para dispositivos tablet, que se encuentra en la parte inferior de la pantalla para proporcionar sistema de controles de navegación (Inicio, de nuevo, y así sucesivamente) y también una interfaz de los elementos tradicionalmente a cargo de la barra de estado. En Android 4.0, el sistema proporciona un nuevo tipo de sistema de interfaz de usuario llamada la barra de navegación. Usted podría considerar la barra de navegación una versión re-sintonía de la barra de sistema diseñado para teléfonos móviles, que proporciona controles de navegación para dispositivos que no tienen homólogos de hardware para navegar por el sistema, pero deja de lado la interfaz de usuario de la barra de sistema de notificación y los controles de ajuste. Por lo tanto, un dispositivo que ofrece la barra de navegación también tiene la barra de estado en la parte superior.

A día de hoy, puede ocultar la barra de estado en los teléfonos usando el FLAG_FULLSCREEN bandera. En Android 4.0, el API que controlar la visibilidad de la barra de sistema han sido actualizados para reflejar mejor el comportamiento tanto de la barra de sistema y la barra de navegación:

El SYSTEM_UI_FLAG_LOW_PROFILE bandera reemplaza la STATUS_BAR_HIDDEN bandera. Cuando se establece, este indicador permite "perfil bajo" modo de la barra de sistema o barra de navegación. Botones de navegación tenue y otros elementos en la barra de sistema también se esconden. Habilitar esta es útil para crear más juegos de inmersión sin la distracción de los botones del sistema de navegación.

El SYSTEM_UI_FLAG_VISIBLE bandera reemplaza la STATUS_BAR_VISIBLE bandera para solicitar la barra de sistema o barra de navegación de ser visibles.

El SYSTEM_UI_FLAG_HIDE_NAVIGATION es una nueva bandera que pide a la barra de navegación de ocultar por completo. Tenga en cuenta que esto sólo funciona para la barra de navegación utilizados por algunos equipos (no ocultar la barra de sistema en tablas). La barra de navegación vuelve a la vista tan pronto como el sistema recibe la entrada del usuario. Como tal, este modo es útil principalmente para la reproducción de vídeo o en otros casos en los que se necesita toda la pantalla, pero la entrada del usuario no es necesario.

Page 27: Android 4

Puede configurar cada una de estas banderas de la barra del sistema y la barra de navegación llamando setSystemUiVisibility() en cualquier punto de vista de su actividad. El gestor de ventanas combina (O-juntos) todas las banderas de todos los puntos de vista en la ventana y los aplican a la interfaz de usuario del sistema, siempre y cuando la ventana tiene el foco de entrada. Cuando la ventana pierde el foco de entrada (el usuario se desplaza fuera de su aplicación, o aparece un cuadro de diálogo), sus banderas dejará de tener efecto. Del mismo modo, si se quita los puntos de vista de la jerarquía de la vista de sus banderas ya no se aplican.

Para sincronizar otros eventos en su actividad con los cambios de visibilidad de la interfaz de usuario del sistema (por ejemplo, ocultar la barra de acciones u otros controles de interfaz de usuario cuando se oculta la interfaz de usuario del sistema), debe registrar un View.OnSystemUiVisibilityChangeListener para ser notificado cuando la visibilidad de la barra del sistema la navegación o la barra de cambios.

Ver el OverscanActivity clase para una demostración de las diferentes opciones de sistema de interfaz de usuario.

Entrada de Marco

Android 4.0 añade soporte para eventos hover cursor y el lápiz nuevo y los eventos de ratón.

Pase el ratón eventos

El View ahora es compatible con la clase "hover" eventos que permitan interacciones más ricas a través del uso de dispositivos de puntero (como un ratón u otros dispositivos que conducen a un cursor en la pantalla).

Para recibir los eventos hover en un punto de vista, poner en práctica la View.OnHoverListener y registrarlo con setOnHoverListener() . Cuando un evento hover se produce en el punto de vista, el detector recibe una llamada a onHover() , siempre que el View que recibió el evento y un MotionEvent que describe el tipo de evento hover que se produjo. El evento hover puede ser uno de los siguientes:

ACTION_HOVER_ENTER ACTION_HOVER_EXIT ACTION_HOVER_MOVE

Su View.OnHoverListener debe devolver true de onHover() si se controla el evento hover. Si su oyente devuelve false, el evento hover se enviará a la vista de los padres como de costumbre.

Si su aplicación utiliza botones o de otros controles que cambian de aspecto según el estado actual, puede utilizar el android:state_hovered atributo en una lista del estado dibujable

Page 28: Android 4

para proporcionar un dibujable fondo diferente cuando el cursor pasa sobre el punto de vista.

Para una demostración de los nuevos eventos de vuelo estacionario, ver el Pase de clase en ApiDemos.

Stylus y los eventos de ratón

Android ahora ofrece APIs para recibir información de un dispositivo de entrada de lápiz óptico como un periférico tableta digitalizadora o una pantalla táctil lápiz habilitado.

Un lápiz funciona de manera similar al tacto o el mouse. Cuando el lápiz está en contacto con el digitalizador, las aplicaciones reciben eventos de toque al igual que lo haría cuando un dedo se usa para tocar la pantalla. Cuando el lápiz está encima de la digitalización, las aplicaciones reciben eventos hover al igual que lo haría cuando el puntero del ratón se está moviendo a través de la pantalla cuando no se pulsan los botones.

Su aplicación puede distinguir entre un dedo, el ratón, el lápiz y goma de borrar de entrada al consultar el "tipo de herramienta" asociada a cada puntero en un MotionEvent con getToolType() Los tipos de herramientas que actualmente definidos son los siguientes:. TOOL_TYPE_UNKNOWN , TOOL_TYPE_FINGER , TOOL_TYPE_MOUSE , TOOL_TYPE_STYLUS y TOOL_TYPE_ERASER . Al consultar el tipo de herramienta, la aplicación puede elegir manejar un lápiz de manera diferente a dedo o el mouse.

Su aplicación también se puede consultar que el ratón o los botones se presionan lápiz al consultar el "estado de los botones" de un MotionEvent con getButtonState() Los estados de los botones definidos actualmente son:. BUTTON_PRIMARY , BUTTON_SECONDARY , BUTTON_TERTIARY , BUTTON_BACK y BUTTON_FORWARD . Para mayor comodidad, la parte de atrás y hacia adelante botones del ratón se asignan automáticamente a la KEYCODE_BACK y KEYCODE_FORWARD llaves. La aplicación puede controlar estas teclas para apoyar botón del ratón basado en la navegación hacia atrás y adelante.

Además de medir con precisión la posición y la presión de un contacto, algunos dispositivos de entrada de lápiz también el informe de la distancia entre la punta del lápiz y el digitalizador, el ángulo de inclinación stylus, y el ángulo de orientación lápiz. Su aplicación puede consultar esta información con getAxisValue() con el eje de los códigos de AXIS_DISTANCE , AXIS_TILT y AXIS_ORIENTATION .

Para una demostración de los tipos de herramientas, estados de los botones y los códigos de un nuevo eje, ver el TouchPaint clase en ApiDemos.

Propiedades

La nueva Property de clase proporciona una manera rápida, eficiente y fácil de especificar una propiedad de cualquier objeto que permite a quienes llaman para establecer de forma genérica / obtener los valores de los objetos de destino. También permite la funcionalidad

Page 29: Android 4

de pasar alrededor del campo / método de referencia y permite que el código para obtener / establecer valores de la propiedad sin conocer los detalles de lo que los campos / métodos.

Por ejemplo, si desea establecer el valor del campo de bar en el objeto foo , que ya podría hacer esto:

foo.bar = valor;

Si usted desea llamar a la incubadora de un campo privado subyacente bar , que ya podría hacer esto:

foo.setBar (valor);

Sin embargo, si usted desea pasar todo el foo de la instancia y tener algún otro tipo de código establece la bar valor, en realidad no hay manera de hacerlo antes de que Android 4.0.

Uso de la Property de clase, se puede declarar una Property objeto BAR en la clase Foo para que pueda establecer el campo de la instancia foo de la clase Foo de esta manera:

BAR.set (foo, valor);

La View de clases ahora aprovecha la Property de clase que le permiten establecer diferentes campos, tales como propiedades de transformación que se agregaron en Android 3.0 ( ROTATION , ROTATION_X , TRANSLATION_X , etc.)

El ObjectAnimator clase también utiliza la Property de clase, para que pueda crear un ObjectAnimator con una Property , que es más rápido, más eficiente y mayor seguridad de tipos que el enfoque basado en cadenas.

Aceleración por hardware

A partir de Android 4.0, la aceleración de hardware para todas las ventanas está activado por defecto, si su aplicación ha establecido ya sea targetSdkVersion o minSdkVersion a “14" o superior. La aceleración por hardware en general, los resultados en animaciones más suaves, más suave desplazamiento y mejor rendimiento general y la respuesta a la interacción del usuario .

Si es necesario, puede deshabilitar manualmente la aceleración de hardware con el hardwareAccelerated de atributos para cada <activity> elementos o la <application> elemento. También puede optar por desactivar la aceleración por hardware para puntos de vista individuales llamando setLayerType(LAYER_TYPE_SOFTWARE) .

Para más información sobre la aceleración de hardware, incluyendo una lista de las operaciones de dibujo no admitidas, vea la aceleración de hardware documento.

Page 30: Android 4

JNI cambios

En las versiones anteriores de Android, las referencias JNI local no se maneja indirectos; Android utiliza punteros directos. Este no era un problema, siempre y cuando el recolector de basura no se mueven los objetos, sino que parecía funcionar, ya que hizo posible la escritura de código erróneo. En Android 4.0, el sistema utiliza ahora las referencias indirectas a fin de detectar estos errores.

Los pormenores de las referencias JNI local se describe en "Referencias Locales y Globales", en consejos JNI . En Android 4.0, CheckJNI se ha mejorado para detectar estos errores. Ver el blog de desarrolladores de Android para un puesto próximo acerca de los errores comunes con referencias JNI y cómo se puede arreglar.

Este cambio en la implementación de JNI sólo afecta a las aplicaciones que se dirigen a Android 4.0 ya sea mediante el establecimiento de la targetSdkVersion o minSdkVersion a “14" o superior. Si ha establecido estos atributos en un valor inferior, las referencias JNI locales se comportan igual que en versiones anteriores .

WebKit

WebKit actualizado a la versión 534.30 Soporte para fuentes índicas (devanagari, bengalí, tamil y, entre ellos el soporte de

caracteres complejos que son necesarios para la combinación de glifos) en WebView y el navegador integrado

Soporte para fuentes etíope, Georgia, Armenia y en WebView y el navegador integrado

Apoyo a WebDriver hace más fácil para usted para poner a prueba las aplicaciones que utilizan WebView

Android Browser

El navegador incorpora las siguientes características para soportar aplicaciones web:

Actualizado V8 JavaScript compilador para un rendimiento más rápido Además de otras mejoras notables prorrogados de Android 3.0 ya están disponibles

para los teléfonos: o Soporte para colocar los elementos fijos en todas las páginas o HTML medio de captura o Los eventos del dispositivo de orientación o CSS 3D transformaciones

Permisos

Los siguientes son los nuevos permisos:

Page 31: Android 4

ADD_VOICEMAIL : Permite a un servicio de correo de voz para agregar mensajes de voz en el dispositivo.

BIND_TEXT_SERVICE : Es un servicio que implementa SpellCheckerService que requieren este permiso por sí mismo.

BIND_VPN_SERVICE : Es un servicio que implementa VpnService que requieren este permiso por sí mismo.

READ_PROFILE : Proporciona acceso de lectura a la ContactsContract.Profile proveedor.

WRITE_PROFILE : Proporciona acceso de escritura al ContactsContract.Profile proveedor.

Características del dispositivo

Las siguientes son las nuevas características del dispositivo:

FEATURE_WIFI_DIRECT : Declara que la aplicación utiliza Wi-Fi para comunicaciones peer-to-peer.

Para obtener una vista detallada de todos los cambios en la API de Android 4.0 (nivel de API 14), ver el informe de API diferencias .

Anterior API

Además de todo lo anterior, Android 4.0, naturalmente, apoya todas las API de versiones anteriores. Dado que la plataforma Android 3.x está disponible sólo para dispositivos de pantalla grande, si usted ha estado desarrollando principalmente para los teléfonos, entonces no podría estar al tanto de todas las API añadido a Android en estos últimos lanzamientos.

He aquí un vistazo a algunas de las APIs más notable que haya pasado por alto que ahora están disponibles en los teléfonos, así:

Android 3.0

Fragment : Un componente de marco de referencia que le permite separar los distintos elementos de una actividad en módulos autónomos que definen su propia interfaz de usuario y ciclo de vida. Ver el Fragmentos guía para desarrolladores.

ActionBar : Un reemplazo para la barra de título tradicional en la parte superior de la ventana de la actividad. Incluye el logotipo de la aplicación en la esquina izquierda, y ofrece una nueva interfaz para los elementos del menú. Ver la barra de acción guía para desarrolladores.

Loader : Un componente de marco de referencia que facilita la carga asíncrona de datos en combinación con componentes de interfaz de usuario para cargar dinámicamente datos sin bloquear el subproceso principal. Ver la Cargadores guía para desarrolladores.

Page 32: Android 4

Portapapeles del sistema: Las solicitudes se pueden copiar y pegar datos (más allá del texto simple) desde y hacia el portapapeles del sistema. Datos recortado puede ser texto plano, URI, o una intención. Ver el copiar y pegar guía para desarrolladores.

Arrastrar y soltar: Un conjunto de APIs integradas en el marco de visión que facilita las operaciones de arrastrar y soltar. Ver el Drag and Drop guía para desarrolladores.

Un todo nuevo marco flexible que permite la animación para animar las propiedades arbitrarias de cualquier objeto (Ver Disponibles, fragmento, objeto, o cualquier otra cosa) y definir aspectos como la duración de la animación, la interpolación, la repetición y más. El nuevo marco de animaciones en Android más sencillo que nunca. Vea la animación de Propiedad guía para desarrolladores.

RenderScript gráficos y calcular motor: renderScript ofrece un alto rendimiento de procesamiento de gráficos 3D y calcular API a nivel nativo, que se escribe en el C (C99 estándar), proporcionando el tipo de rendimiento que espera de un ambiente natural sin dejar de ser portable a través de varias CPUs y GPUs. Ver el renderScript guía para desarrolladores.

Aceleración por hardware de gráficos 2D: Ahora se puede permitir que el procesador OpenGL para su aplicación mediante el establecimiento de {android: hardwareAccelerated = "true"} en el elemento de manifestar la propia <application> elemento o persona <activity> elementos. Esto da lugar a animaciones más suaves, más suave desplazamiento y mejor rendimiento general y la respuesta a la interacción del usuario.

Nota: Si se establece la aplicación minSdkVersion o targetSdkVersion a "14" o superior, la aceleración por hardware está activada por defecto.

Y mucho, mucho más. Ver el Android 3.0 Plataforma notas para más información.

Android 3.1

USB API: API para la integración de nuevos y potentes periféricos conectados con las aplicaciones de Android. El API se basa en una pila USB y los servicios que se incorporan a la plataforma, incluyendo soporte para host USB y las interacciones dispositivo. Ver el host USB y accesorios de guía para el desarrollador.

MTP / PTP API: Las aplicaciones pueden interactuar directamente con las cámaras conectadas y otros dispositivos PTP para recibir notificaciones cuando los dispositivos están conectados y se retira, gestión de archivos y almacenamiento en estos dispositivos y transferir archivos y metadatos desde y hacia ellos. El MTP API implementa el PTP (Picture Transfer Protocol) subconjunto de la MTP (Media Transfer Protocol) especificación. Ver el android.mtp documentación.

Page 33: Android 4

RTP API: Android expone una API para su base de RTP (Real-time Transport Protocol) de pila, que las aplicaciones pueden utilizar para gestionar on-demand o streaming de datos interactivos. En aplicaciones particulares, que ofrecen VoIP, push-to-talk, conferencia y streaming de audio se puede utilizar la API para iniciar sesiones y transmitir o recibir secuencias de datos a través de cualquier red disponible. Ver el android.net.rtp documentación.

Soporte para los joysticks y otros insumos de movimiento genérico. Ver el Android 3.1 Plataforma de notas para las API de muchos más nuevos.

Android 3.2

Nuevas pantallas admite las API que le dará más control sobre cómo sus aplicaciones se muestran a través de diferentes tamaños de pantalla. El API se extiende el modelo de pantalla de apoyo existentes con la capacidad para orientar con precisión el tamaño de pantalla específico varía según las dimensiones, medidas en unidades de densidad de píxeles independientes (como 600dp o 720dp de ancho), más que por su tamaño de pantalla generalizada (por ejemplo, grandes o xlarge ). Por ejemplo, esto es importante para ayudar a distinguir entre un 5 "y un dispositivo de 7", el cual sería tanto tradicionalmente se bucketed como "grandes" pantallas. Ver la entrada del blog, nuevas herramientas para administrar tamaños de pantalla .

Nuevas constantes de <uses-feature> para declarar paisaje o retrato de los requisitos de orientación de la pantalla.

El dispositivo de "tamaño de la pantalla" Configuración de ahora los cambios durante un cambio de orientación de la pantalla. Si su aplicación los objetivos de nivel API 13 o superior, debe controlar el "screenSize" cambio de configuración, si usted también quiere manejar la "orientation" cambio de configuración. Ver android:configChanges para más información.

Ver el Android 3.2 Plataforma de notas para las nuevas API de otros.

API de nivel

El Android 4.0 API se le asigna un identificador entero-14-que se almacena en el propio sistema. Este identificador, llamado "API de nivel", permite al sistema determinar correctamente si una aplicación es compatible con el sistema, antes de instalar la aplicación.

Para utilizar las API de Android introducido en 4.0 en su aplicación, es necesario compilar la aplicación en contra de una plataforma Android que soporta el nivel API 14 o superior. Dependiendo de sus necesidades, también puede ser necesario agregar un nuevo android:minSdkVersion="14" atribuir a la <uses-sdk> elemento.

Para más información, consulte la API niveles documento.

Page 34: Android 4

Aplicaciones incorporadas

La imagen del sistema incluido en la plataforma descargable ofrece estas aplicaciones incorporadas:

Demos de la API Navegador Calculadora Calendario Cámara Reloj Personalizadas de configuración regional Dev Herramientas Descargas E-mail Galería

Gestos Builder Mensajería Música Personas Teléfono Búsqueda Configuración Grabadores de Voz Grabadores de Voz Widget previa

Locales

La imagen del sistema incluido en el SDK de la plataforma descargable ofrece una variedad de lugares incorporados. En algunos casos, la región cadenas específicas están disponibles para los locales. En otros casos, una versión por defecto de la lengua se utiliza. Los idiomas que están disponibles en la imagen del sistema Android 3.0 se enumeran a continuación (con el idioma _ país / región de descriptor local).

Árabe, Egipto (ar_EG) Árabe, Israel (ar_IL) Bulgaria Bulgaria, (bg_BG) Catalán, España (ca_ES) Checa, República Checa (cs_CZ) Danés, Dinamarca (es_ES) Alemania, Austria (de_AT) Alemania, Suiza (de_CH) Alemania, Alemania (de_DE) Alemania, Liechtenstein (de_LI) Griego, Grecia (el_GR) Inglés, Australia (en_AU) Inglés, Canadá (en_CA) Inglés, Gran Bretaña (es_ES) Inglés, Irlanda (en_IE) Inglés, India (en_IN) Inglés, Nueva Zelanda (en_NZ) Inglés, Singapur (en_SG) Inglés, EE.UU. (en_US) Inglés, Zimbabwe (en_ZA)

Croacia, Croacia (hr_HR) Hungría, Hungría (hu_HU) Indonesia, Indonesia (id_ID) Italia, Suiza (it_CH) En italiano (it_IT) Japonés (ja_JP) Corea (ko_KR) Lituania, Lituania (lt_LT) Letonia, Letonia (lv_LV) Noruega Noruega bokmål (nb_NO) Holanda, Bélgica (nl_BE) Holanda, Países Bajos (nl_NL) Polaco (pl_PL) Portugal, Brasil (pt_BR) Portugal, Portugal (pt_PT) Rumania, Rumania (ro_RO) Rusia (ru_RU) Eslovaquia, Eslovaquia (sk_SK) Eslovenia Eslovenia, (sl_SI) Serbia (sr_RS)

Page 35: Android 4

Español (es_ES) Español, EE.UU. (es_US) Finlandia, Finlandia (fi_FI) Francés, Bélgica (fr_BE) Francés, Canadá (fr_CA) Francés, Suiza (fr_CH) Francés, Francia (fr_FR) Hebreo, Israel (he_IL) Hindi, India (hi_IN)

Suecia, Suecia (sv_SE) Tailandia, Tailandia (th_TH) Tagalog, Filipinas (tl_PH) De Turquía, Turquía (tr_TR) Ucrania, Ucrania (uk_UA) Vietnamita, Vietnam (vi_VN) China, República Popular China (zh_CN) China, Taiwán (zh_TW)

Nota: La plataforma Android puede soportar más locales que se incluyen en la imagen del sistema de SDK. Todos los locales soportados están disponibles en el proyecto de código abierto Android .

Skins emulador

La plataforma de descarga incluye las pieles emulador siguiente:

QVGA (240x320, de baja densidad, la pequeña pantalla) WQVGA400 (240x400, de baja densidad, la pantalla normal) WQVGA432 (240x432, de baja densidad, la pantalla normal) HVGA (320x480, de densidad media, pantalla normal) WVGA800 (480x800, de alta densidad, pantalla normal) WVGA854 (480x854 de alta densidad, pantalla normal) WXGA720 (1280x720, extra-alta densidad, pantalla normal) nuevo WSVGA (1024x600, de densidad media, la gran pantalla) nuevo WXGA (1280x800, de densidad media, xlarge pantalla)

Para probar la aplicación en un emulador que representa el más reciente dispositivo Android, puede crear una AVD con el nuevo WXGA720 la piel (es un dispositivo xhdpi, pantalla normal). Tenga en cuenta que el emulador en la actualidad no es compatible con el nuevo en la pantalla barra de navegación para dispositivos sin botones de navegación de hardware, por lo que cuando se utiliza este aspecto, es preciso utilizar el teclado Inicio claves para el botón Inicio, ESC para el botón Atrás y F2 o página -para el botón del menú.

Sin embargo, debido a problemas de rendimiento en el emulador cuando se ejecuta pantallas de alta resolución como la de la piel WXGA720, le recomendamos que utilizan principalmente el tradicional WVGA800 piel (IPAP, pantalla normal) para probar la aplicación.

Page 36: Android 4

Herramientas de desarrollo de Android (ADT) es un plugin para el IDE de Eclipse que está diseñado para darle un ambiente potente, integrado en el que la creación de aplicaciones para Android.

ADT amplía las capacidades de Eclipse para que pueda configurar rápidamente nuevos proyectos de Android, crear una interfaz de usuario de la aplicación, añadir componentes basados en la API de Android Framework, depurar sus aplicaciones utilizando las herramientas de SDK de Android, e incluso firmó la exportación (con o sin signo) .apk archivos con el fin de distribuir la aplicación.

En desarrollo en Eclipse con ADT es muy recomendable y es la manera más rápida para empezar. Con la configuración de un proyecto guiado que ofrece, así como la integración de herramientas, editores XML personalizado, y el panel de salida de la señal de depuración, ADT le da un impulso increíble en el desarrollo de aplicaciones de Android.

Este documento proporciona instrucciones paso a paso las instrucciones sobre cómo descargar el plugin ADT e instalarlo en su entorno de desarrollo Eclipse. Tenga en cuenta que para poder instalar o utilizar ADT, usted debe tener las versiones compatibles de ambos el IDE de Eclipse y el SDK de Android instalado. Para obtener más información, asegúrese de leer instalar el plugin ADT , por debajo.

Si usted ya está usando ADT, este documento también contiene instrucciones sobre cómo actualizar ADT a la última versión o la forma de desinstalar, si es necesario.

Para obtener información sobre las características proporcionadas por el plugin ADT, tales como las características del editor de código, la integración de la herramienta SDK, y el editor de diseño gráfico (diseño para la edición de arrastrar y soltar), ver el Android Developer Herramientas de documentos.

Revisiones

Las secciones siguientes proporcionan notas acerca de las sucesivas versiones del plugin de ADT, como lo indica el número de revisión.

Para un resumen de todos los problemas conocidos en el ADT, ver http://tools.android.com/knownissues .

ADT 15.0.0 (octubre de 2011) Dependencias:

ADT 15.0.0 está diseñado para su uso con herramientas de SDK r15 . Si usted no ha instalado el SDK Herramientas r15 en su SDK, utilice el SDK de Android y AVD Manager para hacerlo.

Corrección de errores:

Page 37: Android 4

Fija construir problema cuando se utiliza renderScript en proyectos destinados a los niveles de API 11-13 ( Edición 21006 ).

Solucionado el problema al crear proyectos de código fuente existente. Corregidos problemas en el Manager SDK ( número 20.939 , número 20.607

). Tema de desplazamiento fijo en el panel logcat nuevo DDMS.

ADT 14.0.0 (octubre de 2011) ADT 12.0.0 (julio de 2011) ADT 11.0.0 (junio de 2011) ADT 10.0.1 (marzo de 2011) ADT 10.0.0 (febrero de 2011) ADT 9.0.0 (enero de 2011) ADT 8.0.1 (Diciembre 2010) ADT 8.0.0 (Diciembre 2010) ADT 0.9.9 (Septiembre 2010) ADT 0.9.8 (Septiembre 2010) ADT 0.9.7 (mayo de 2010) ADT 0.9.6 (Marzo 2010) ADT 0.9.5 (Diciembre 2009) ADT 0.9.4 (Octubre 2009)

Instalar el plugin de ADT

Las secciones siguientes proporcionan instrucciones sobre cómo descargar e instalar el ADT en el entorno de Eclipse. Si tiene problemas, consulte la solución de problemas sección.

Cómo preparar a su equipo de desarrollo

ADT es un plugin para el IDE de Eclipse. Antes de poder instalar o utilizar ADT, usted debe tener una versión compatible de Eclipse instalado en su equipo de desarrollo. Compruebe el sistema Requisitos de documentos para obtener una lista de las versiones de Eclipse que son compatibles con el SDK de Android.

Si Eclipse ya está instalado en su computadora, asegúrese de que se trata de una versión que sea compatible con el ADT y el SDK de Android.

Si usted necesita para instalar o actualizar Eclipse, se puede descargar desde esta ubicación:

http://www.eclipse.org/downloads/

El "Eclipse Classic" se recomienda la versión. De lo contrario, una versión de Java o RCP de Eclipse se recomienda.

Page 38: Android 4

Además, antes de poder configurar o utilizar ADT, debe instalar el SDK de Android paquete de inicio, como se describe en la descarga del paquete de inicio SDK . En concreto, es necesario instalar una versión compatible de las herramientas de Android SDK y al menos una plataforma de desarrollo. Para simplificar la configuración de ADT, se recomienda instalar el SDK de Android antes de instalar el ADT.

Cuando el Eclipse y entornos Android SDK está listo, continuar con la instalación ADT como se describe en los pasos siguientes.

Descargar el plugin ADT

Utilice la función de Administrador de actualización de la instalación de Eclipse para instalar la última versión de ADT en el equipo de desarrollo. <>

Asumiendo que usted tiene una versión compatible de la IDE de Eclipse instalado, como se describe en Preparación para la instalación , por encima, siga estos pasos para descargar el plugin ADT e instalarlo en el entorno de Eclipse.

1. Inicio Eclipse, a continuación, seleccione Ayuda> Instalar nuevo software .... 2. Haga clic en Agregar, en la esquina superior derecha. 3. En el cuadro de diálogo Agregar repositorio que aparece, escriba "ADT plugin"

para el nombre y la siguiente URL para la ubicación de:

  https://dl-ssl.google.com/android/eclipse/

4. Haga clic en Aceptar

Nota: Si usted tiene problemas para adquirir el plugin, trate de usar "http" en la URL de ubicación, en vez de "https" (https es preferible por razones de seguridad).

5. En el cuadro de diálogo de software disponibles, seleccione la casilla junto a las herramientas de desarrollo y haga clic en Siguiente.

6. En la siguiente ventana, verá una lista de las herramientas para ser descargado. Haga clic en Siguiente.

7. Lea y acepte los acuerdos de licencia, haga clic en Finalizar.

Nota: Si usted recibe un aviso de seguridad diciendo que la autenticidad o validez del software no se puede establecer, haga clic en Aceptar.

8. Cuando finalice la instalación, reinicie Eclipse.

Configurar el plugin ADT

Una vez que haya descargado el ADT como se describió anteriormente, el siguiente paso es modificar sus preferencias de ADT en Eclipse para que apunte al directorio de Android SDK:

Page 39: Android 4

1. Seleccione Ventana> Preferencias ... para abrir el panel de Preferencias (Mac OS X: Eclipse> Preferencias).

2. Seleccione Android desde el panel de la izquierda.

Es posible que vea un cuadro de diálogo que le pregunta si desea enviar estadísticas de uso de Google. Si es así, hacer su elección y haga clic en Continuar. No se puede continuar con este procedimiento hasta que haga clic en Continuar.

3. Para la ubicación de SDK en el panel principal, haga clic en Examinar ... y localice el directorio de descarga del SDK.

4. Haga clic en Aplicar y luego Aceptar.

¡Hecho! Si usted no ha tenido ningún problema, la instalación se ha completado. Si va a instalar el SDK de Android, por primera vez, volver a instalar el SDK para completar la configuración.

Solución de problemas de instalación ADT

Si usted está teniendo problemas para descargar el plugin ADT después de seguir los pasos anteriores, he aquí algunas sugerencias:

Si Eclipse no puede encontrar el sitio de actualización a distancia que contiene el plugin ADT, intente cambiar la URL del sitio remoto para que utilice http, https en lugar de. Es decir, establecer la ubicación del sitio remoto en:

  http://dl-ssl.google.com/android/eclipse/

Si estás detrás de un firewall (como un firewall de la empresa), asegúrese de que ha configurado correctamente la configuración del proxy en Eclipse. En Eclipse, puede configurar la información del proxy en el menú principal de Eclipse en la ventana (en Mac OS X, Eclipse)> Preferencias> General> Conexiones de red.

Si usted todavía no puede utilizar Eclipse para descargar el plugin ADT como un sitio de actualización a distancia, puede descargar el archivo zip ADT para el equipo local y instalarlo manualmente:

1. Descargar el plugin actual ADT archivo zip de la tabla de abajo (no lo unpack).

Nombre Paquete Tamaño MD5 ChecksumADT 15.0.0 ADT-15.0.0.zip 6750682 bytes 264f40a89a1107b0c422adae4e1ce0d1

2. Siga los pasos 1 y 2 en la instrucciones de instalación por defecto (ver arriba). 3. En el cuadro de diálogo Agregar sitio, haga clic en Archivo. 4. Buscar y seleccionar el archivo zip descargado. 5. Escriba un nombre para el sitio de actualización local (por ejemplo, "Android

Plugin") en el campo "Nombre".

Page 40: Android 4

6. Haga clic en Aceptar. 7. Siga el resto de procedimientos que se enumeran para la instalación por defecto

arriba, comenzando desde el paso 4.

Para actualizar el plug-in, una vez que haya instalado utilizando el archivo zip, tendrás que seguir estos pasos de nuevo en lugar de las instrucciones de actualización predeterminadas.

Otros errores de instalación

Tenga en cuenta que hay características de ADT que requieren algunos componentes opcionales de Eclipse (por ejemplo, WST). Si se produce un error durante la instalación ADT, su installion Eclipse podría no incluir estos componentes. Para obtener información sobre cómo agregar rápidamente los componentes necesarios para la instalación de Eclipse, consulte Resolución de problemas ADT Error de instalación: "requiere plug-in org.eclipse.wst.sse.ui" .

Para los usuarios de Linux

Si te aparece este error al instalar el plugin de ADT para Eclipse:

Se produjo un error durante el aprovisionamiento. No se puede conectar al keystore. JKS

... Entonces el equipo de desarrollo carece de una adecuada máquina virtual de Java. Instalación de Sun Java 6 se resolver este problema y, a continuación, puede volver a instalar el plugin de ADT.

Actualización del Plugin ADT

De vez en cuando, una nueva revisión de la ADT plugin esté disponible, con nuevas características y correcciones de errores. Generalmente, cuando una nueva revisión del ADT está disponible, debe actualizar a él tan pronto como sea conveniente.

En algunos casos, una nueva revisión de ADT tienen una dependencia en una revisión específica de las herramientas de Android SDK. Si existen tales dependencias, será necesario actualizar el componente SDK herramientas del SDK después de instalar la nueva revisión de la ADT. Para actualizar el componente SDK Tools, utilice el SDK de Android y AVD Manager, como se describe en Agregar componentes de SDK .

Para aprender sobre las nuevas características de cada revisión ADT y también las dependencias de las herramientas de SDK, vea la lista en la revisiones sección. Para determinar la versión instalada, abra la ventana de Eclipse instalado software de uso de la Ayuda> Actualizaciones de software y se refieren a la versión que aparece en "Herramientas de desarrollo de Android".

Page 41: Android 4

Siga los siguientes pasos para comprobar si hay una actualización disponible y, si es así, que lo instale.

1. Seleccione Ayuda> Buscar actualizaciones.

Si no hay actualizaciones disponibles, aparecerá un diálogo lo diga y ya está.

2. Si hay actualizaciones disponibles, seleccione Android DDMS, Herramientas de Desarrollo de Android, Android y el Visor de la Jerarquía, a continuación, haga clic en Siguiente.

3. En el cuadro de diálogo Detalles de la actualización, haga clic en Siguiente. 4. Lea y acepte el acuerdo de licencia y haga clic en Finalizar. Esto descargar e

instalar la última versión de Android DDMS y herramientas de desarrollo para Android.

5. Reiniciar Eclipse.

Si se producen problemas durante la actualización, quite el plugin ADT existentes de Eclipse, a continuación, realizar una nueva instalación, siguiendo las instrucciones para instalar el plugin ADT .

http://www.androidda.com/2011/03/como-obtener-la-resolucion-de-pantalla-y-densidad-en-aplicaciones-android/

http://sudokill.blogspot.com/2010/05/programar-en-android-con-netbeans-68.html