Android Developers
Plataforma Android Studio Google Play Jetpack Kotlin Documentos Noticias
  • Documentación
Descripción general Guías Referencia Ejemplos Diseño y calidad
Android Developers
  • Plataforma
  • Android Studio
  • Google Play
  • Jetpack
  • Kotlin
  • Documentos
    • Descripción general
    • Guías
    • Referencia
    • Ejemplos
    • Diseño y calidad
  • Noticias
  • Aspectos básicos de la app
  • Introducción
  • Cómo crear tu primera app
    • Descripción general
    • Cómo crear un proyecto de Android
    • Cómo ejecutar tu app
    • Cómo crear una interfaz de usuario sencilla
    • Cómo iniciar otra actividad
  • Aspectos fundamentales de la app
  • Recursos de la app
    • Descripción general
    • Cómo administrar los cambios en la configuración
    • Localización
      • Cómo localizar tu app
      • Cómo probar tu app con configuraciones regionales simuladas
      • Unicode y compatibilidad internacional
      • Resolución de idioma y configuración regional
    • Recursos XML complejos
    • Tipos de recursos
      • Descripción general
      • Animación
      • Lista de estado de colores
      • Elemento de diseño
      • Diseño
      • Menú
      • String
      • Estilo
      • Fuente
      • Más tipos
  • Archivo de manifiesto de la app
    • Descripción general
    • <action>
    • <activity>
    • <activity-alias>
    • <application>
    • <category>
    • <compatible-screens>
    • <data>
    • <grant-uri-permission>
    • <instrumentation>
    • <intent-filter>
    • <manifest>
    • <meta-data>
    • <path-permission>
    • <permission>
    • <permission-group>
    • <permission-tree>
    • <provider>
    • <receiver>
    • <service>
    • <supports-gl-texture>
    • <supports-screens>
    • <uses-configuration>
    • <uses-feature>
    • <uses-library>
    • <uses-permission>
    • <uses-permission-sdk-23>
    • <uses-sdk>
  • Dispositivos
  • Compatibilidad con dispositivos
    • Descripción general
    • Descripción general de la compatibilidad de pantallas
    • Cómo brindar compatibilidad con diferentes densidades de píxeles
    • Cómo brindar compatibilidad con cortes de pantalla
    • Cómo declarar una compatibilidad de pantalla restringida
    • Compatibilidad con varios APK
      • Descripción general
      • Cómo crear varios APK para diferentes niveles de API
      • Cómo crear varios APK para diferentes tamaños de pantallas
      • Cómo crear varios APK para diferentes texturas GL
      • Cómo crear varios APK con numerosas dimensiones
    • Cómo brindar compatibilidad con diferentes idiomas y culturas
    • Cómo brindar compatibilidad con diferentes versiones de plataformas
    • Filtros en Google Play
  • Tablets, pantallas grandes y dispositivos plegables
    • Diseños receptivos para tablets, pantallas grandes y dispositivos plegables
    • Cómo brindar compatibilidad con diferentes tamaños de pantalla
    • Compatibilidad con el modo Multiventana
    • Cómo crear apps para dispositivos plegables
  • Wear
    • Descripción general
    • Cómo agregar funciones de wearables a las notificaciones
      • Descripción general
      • Cómo crear una notificación
      • Estilos de notificaciones
      • Modo puente para notificaciones
      • Cómo mantener la compatibilidad
    • Cómo crear apps para wearables
      • Descripción general
      • Cómo crear y ejecutar una app para wearables
      • Apps independientes
      • Cómo crear diseños personalizados
      • Cómo mantener tu app visible
      • Autenticación en Wear
      • Entrada de voz
      • Cómo empaquetar y distribuir apps de Wear
      • Cómo depurar una app de Wear
      • Cómo crear capturas de pantalla de IU de Wear
      • Cómo crear apps de Wear para China
    • Cómo crear IU personalizadas
      • Descripción general
      • Cómo definir diseños
      • Cómo crear listas
      • Cómo mostrar confirmaciones
      • Cómo salir de las actividades en pantalla completa
      • Cómo usar la biblioteca de IU de Wear
      • Acciones y navegación de Wear
      • Botones físicos
      • Entrada rotativa
      • Cómo crear editores de método de entrada
      • Cómo usar gestos de muñeca
    • Cómo enviar y sincronizar datos
      • Descripción general
      • Sincronización y acceso a la red
      • Cómo acceder a la capa de datos de wearables
      • Cómo sincronizar elementos de datos
      • Cómo transferir elementos
      • Cómo enviar y recibir mensajes
      • Cómo administrar eventos de la capa de datos
      • Cómo migrar apps de Wear a GoogleApi
    • Cómo crear proveedores de datos
      • Descripción general
      • Cómo exponer datos a complicaciones
    • Cómo crear caras de reloj
      • Descripción general
      • Cómo diseñar caras de reloj
      • Cómo crear un servicio para caras de reloj
      • Cómo dibujar caras de reloj
      • Complicaciones de caras de reloj
      • Cómo exponer datos a complicaciones
      • Cómo agregar complicaciones a una cara de reloj
      • Cómo crear caras de reloj interactivas
      • Cómo brindar actividades de configuración
      • Cómo solucionar problemas comunes
      • Cómo mejorar el rendimiento con la aceleración de hardware
      • Cómo optimizar las caras de reloj
    • Cómo detectar la ubicación
    • Azulejos
    • Solicitud de permisos
    • Cómo usar las bocinas
  • Android TV
    • Descripción general
    • Cómo crear apps para TV
      • Descripción general
      • Cómo comenzar a usar apps para TV
      • Bibliotecas de AndroidX TV
      • Cómo controlar hardware de TV
      • Cómo administrar controladores de TV
      • Cómo crear diseños de TV
      • Teclado en pantalla
      • Cómo desarrollar la navegación para TV
      • Prácticas recomendadas para aumentar las interacciones con Google TV
    • Cómo crear apps de reproducción para TV
      • Descripción general
      • Cómo crear un navegador de catálogos
      • Cómo proporcionar una vista de tarjetas
      • Cómo crear una vista de detalles
      • Cómo usar controles de transporte de Leanback
      • Controles de reproducción en TV
      • Cómo mostrar una tarjeta de Está sonando
      • Cómo agregar un paso guiado
      • Cómo presentar tu app a los usuarios que acceden por primera vez
      • Cómo habilitar la reproducción en segundo plano
    • Cómo ayudar a los usuarios a encontrar contenido en la TV
      • Descripción general
      • Cómo recomendar contenido de TV
        • Descripción general
        • Canales en la pantalla principal
        • Atributos de programación de video
        • Atributos de programación de audio
        • Atributos de programación de juegos
        • Ver siguiente
          • Agregar programas
          • Atributos
          • Lineamientos para desarrolladores de apps
          • Lineamientos para proveedores de TV
        • Cómo obtener vistas previas de videos
        • Recomendaciones para Android N y versiones anteriores
      • Cómo permitir las búsquedas en apps para TV
      • Cómo realizar búsquedas en apps para TV
    • Cómo compilar juegos para TV
    • Cómo compilar servicios de entrada de TV
      • Descripción general
      • Cómo desarrollar un servicio de entrada de TV
      • Cómo trabajar con datos del canal
      • Cómo administrar la interacción del usuario con la TV
      • Compatibilidad con time-shifting
      • Compatibilidad con la grabación de contenido
    • Lista de verificación de apps para TV
    • Accesibilidad en TVs
      • Compatibilidad con accesibilidad en aplicaciones no nativas
      • Prácticas recomendadas sobre accesibilidad de aplicaciones no nativas
      • Ejemplos de evaluación de TalkBack para apps de TV
    • Vista previa para desarrolladores de Android 12 para TV
  • Android para vehículos
    • Descripción general
    • Cómo compilar apps multimedia para vehículos
      • Cómo compilar apps multimedia para vehículos
      • Cómo agregar compatibilidad con Android Auto
      • Cómo agregar compatibilidad con el SO Android Automotive
    • Cómo crear apps de mensajería para Android Auto
    • Cómo compilar apps de carga, navegación y estacionamiento para Android Auto (Beta)
    • Cómo probar apps de Android para vehículos
    • Servicios de Google Play
    • Notificaciones en el SO Android Automotive
  • Android Things
    • Descripción general
    • Diferencias entre plataformas
    • Servicios de Google
    • Hardware compatible
      • Descripción general
      • NXP i.MX7D
      • Raspberry Pi 3
      • Configuración avanzada
        • Descripción general
        • Cómo instalar una imagen manualmente
        • Cómo recuperar un dispositivo
        • Cómo conectarse a una red Wi-Fi con adb
    • Cómo crear apps
      • Cómo crear una app de Things
        • Descripción general
        • Cómo crear un proyecto
        • Cómo conectar el hardware
        • Cómo interactuar con periféricos
        • Cómo integrar controladores periféricos
      • Cómo comunicarse con dispositivos inalámbricos
        • Bluetooth
        • LoWPAN
      • Cómo configurar dispositivos
        • Configuración
        • Actualizaciones
      • Cómo interactuar con periféricos
        • Descripción general
        • GPIO
        • PWM
        • I2C
        • SPI
        • UART
        • PIO nativo
        • Herramienta de CLI
      • Cómo integrar código nativo
      • Cómo crear controladores del espacio del usuario
        • Descripción general
        • Ubicación
        • Entrada
        • Sensores
        • LoWPAN
      • Ejemplos
    • Cómo administrar dispositivos
      • Descripción general
      • Cómo crear un producto
      • Cómo configurar un producto
      • Cómo crear una compilación
        • Descripción general
        • Cómo administrar apps
      • Cómo impulsar una actualización
        • Descripción general
        • Actualizaciones automáticas
      • Cómo supervisar las estadísticas
    • Condiciones
      • Condiciones del Servicio de Console
      • Acuerdo de licencia del SDK
    • Android Things Console
  • Dispositivos con Sistema operativo Chrome
    • Descripción general
    • Cómo compilar apps para el Sistema operativo Chrome
    • Cómo optimizar apps para el Sistema operativo Chrome
    • Cómo preparar tu entorno de desarrollo
    • Compatibilidad con manifiestos de apps para Chromebooks
    • Compatibilidad de dispositivos con el Sistema operativo Chrome y apps
    • Diferencias en el procesamiento de apps en Chromebooks
    • Administración de ventanas
    • Compatibilidad de entrada para Chromebooks
    • Cómo adaptar juegos para el Sistema operativo Chrome
    • Animación fluida en el Sistema operativo Chrome
    • Casos de prueba de apps para Android en el Sistema operativo Chrome
  • Temas principales
  • Actividades
    • Introducción a las actividades
    • Ciclo de vida de la actividad
    • Cambios en el estado de la actividad
    • Cómo probar tus actividades
    • Tareas y pila de actividades
    • Procesos y el ciclo de vida de la app
    • Objetos parcelables y paquetes
    • Fragmentos
      • Descripción general
      • Cómo crear un fragmento
      • Administrador de fragmentos
      • Transacciones de fragmentos
      • Cómo animar transiciones entre fragmentos
      • Ciclo de vida de los fragmentos
      • Cómo guardar un estado con fragmentos
      • Cómo comunicarse con fragmentos
      • Cómo trabajar con la barra de la app
      • Cómo mostrar diálogos con DialogFragment
      • Cómo probar tus fragmentos
    • Cómo interactuar con otras apps
      • Descripción general
      • Cómo enviar al usuario a otra app
      • Cómo obtener un resultado de una actividad
      • Cómo permitir que otras apps inicien tu actividad
      • Cómo administrar la visibilidad de un paquete
      • Cómo configurar la visibilidad de un paquete en función de casos de uso
    • Cómo procesar vínculos de apps
      • Descripción general
      • Cómo habilitar vínculos al contenido de la app
      • Cómo verificar los vínculos de la app
      • Cómo crear vínculos de apps para apps instantáneas
    • Cargadores
    • Pantalla de Recientes
    • Restricciones sobre el inicio de actividades en segundo plano
    • Accesos directos a aplicaciones
      • Descripción general
      • Cómo crear accesos directos
      • Cómo administrar combinaciones de teclas
      • Prácticas recomendadas para accesos directos
    • Widgets de apps
      • Descripción general
      • Cómo crear un widget de la app
      • Cómo crear un host de widgets de la app
  • Compatibilidad con apps
    • Descripción general
    • Herramientas de marco de compatibilidad
    • Restricciones en interfaces que no pertenecen al SDK
  • Componentes de la arquitectura
    • Descripción general
    • Cómo agregar componentes a tu proyecto
    • Inicio de apps
    • DataStore
    • Vinculación de vista
      • Descripción general
      • Cómo migrar de sintéticos de Kotlin para ver los enlaces
    • Biblioteca de vinculación de datos
      • Descripción general
      • Comenzar
      • Diseños y expresiones vinculantes
      • Cómo trabajar con objetos de datos observables
      • Clases de vinculación generadas
      • Adaptadores de vinculación
      • Cómo vincular vistas de diseño con componentes de arquitectura
      • Vinculación de datos en dos direcciones
    • Cómo gestionar los ciclos de vida
    • LiveData
    • Biblioteca de paginación
      • Descripción general
      • Cómo visualizar listas paginadas
      • Cómo cargar datos paginados
      • Paging 3
        • Descripción general
        • Cómo cargar y mostrar datos paginados
        • Página de la red y la base de datos
        • Cómo transformar transmisiones de datos
        • Cómo migrar a Paging 3
    • ViewModel
    • WorkManager
      • Descripción general
      • Cómo comenzar
      • Guías prácticas
        • Cómo definir tus WorkRequests
        • Estados de trabajos
        • Cómo administrar trabajos
        • Cómo observar el progreso intermedio de un trabajador
        • Cómo concatenar el trabajo
        • Cómo probar una implementación de trabajadores
        • Pruebas de integración con WorkManager
        • Cómo depurar WorkManager
      • Conceptos avanzados
        • Inicialización y configuración
        • Cómo ejecutar subprocesos en WorkManager
          • Descripción general
          • Cómo ejecutar subprocesos en Worker
          • Cómo ejecutar subprocesos en CoroutineWorker
          • Cómo ejecutar subprocesos en RxWorker
          • Cómo ejecutar subprocesos en ListenableWorker
        • Asistencia para trabajadores de larga ejecución
      • Cómo migrar desde Firebase JobDispatcher
      • Cómo realizar la migración desde GCMNetworkManager
    • Cómo guardar estados
    • Módulo de estado guardado para ViewModel
    • Cómo usar las corrutinas de Kotlin con componentes de arquitectura
    • Notas de la versión
    • Recursos adicionales
  • Componente de Navigation
    • Descripción general
    • Principios de la navegación
    • Cómo comenzar
    • Cómo crear destinos
    • Cómo diseñar para diferentes factores de forma
    • Cómo diseñar gráficos de navegación
    • Gráficos anidados
    • Acciones generales
    • Cómo navegar a un destino
    • Navegación condicional
    • Cómo pasar datos entre destinos
    • Cómo crear un vínculo directo para un destino
    • Cómo animar las transiciones entre destinos
    • Cómo actualizar los componentes de IU con NavigationUI
    • DSL de Kotlin
    • Cómo crear vistas deslizantes con pestañas mediante ViewPager
    • Cómo crear vistas deslizantes con pestañas mediante ViewPager2
    • Cómo interactuar de manera programática
    • Cómo navegar con módulos de funciones
    • Cómo probar la navegación
    • Cómo controlar cambios de configuración
    • Cómo agregar nuevos tipos de destinos
    • Cómo brindar navegación hacia atrás personalizada
    • Cómo migrar al componente de navegación
  • Intents y filtros de intents
    • Descripción general
    • Intents comunes
  • Interfaz de usuario
    • Descripción general
    • Diseños
      • Descripción general
      • Cómo crear una IU receptiva con ConstraintLayout
      • Cómo agregar movimiento a tu diseño con MotionLayout
        • Descripción general
        • Ejemplos de MotionLayout
        • Referencia XML de MotionLayout
          • Descripción general
          • <MotionScene>
          • <ConstraintSet>
          • <Constraint>
          • <Transition>
          • <onClick>
          • <onSwipe>
          • <KeyFrameSet>
          • <KeyPosition>
          • <KeyAttribute>
      • Cómo crear una lista con RecyclerView
      • Personalización avanzada de RecyclerView
      • Cómo crear un diseño basado en tarjetas
      • Cómo implementar flujos de IU adaptables
      • Cómo mejorar el rendimiento del diseño
        • Descripción general
        • Cómo optimizar las jerarquías de diseño
        • Cómo reutilizar diseños con <include/>
        • Carga de vistas demorada
      • Diseño lineal
      • Vista del adaptador
      • Diseño relativo
      • Componentes de vistas personalizadas
        • Descripción general
        • Cómo crear una clase de vista personalizada
        • Cómo implementar dibujos personalizados
        • Cómo hacer una vista interactiva
        • Cómo optimizar la vista
    • Apariencia y estilo
      • Material design
      • Estilos y temas
      • Tema oscuro
      • Íconos adaptables
      • Cómo agregar un botón de acción flotante
      • Cómo crear vistas de recorte y sombras
      • Texto
        • Ajuste automático de tamaño de TextView
        • Fuentes descargables
        • Fuentes en XML
        • Compatibilidad con emojis
        • Widget de ampliación
        • Intervalos
      • Botones
      • Casillas de verificación
      • Botones de selección
      • Botones de activación
      • Controles de números
      • Selectores
      • Información sobre la herramienta
    • Notificaciones
      • Descripción general
      • Cómo crear una notificación
      • Cómo crear una notificación expandible
      • Cómo mostrar notificaciones sujetas a horarios específicos
      • Cómo iniciar una actividad desde una notificación
      • Cómo crear un grupo de notificaciones
      • Cómo crear y administrar canales de notificaciones
      • Cómo modificar una insignia de notificación
      • Cómo crear una notificación personalizada
    • Conversaciones
    • Burbujas
    • Cómo agregar la barra de apps
      • Descripción general
      • Cómo configurar la barra de la app
      • Cómo agregar y administrar acciones
      • Cómo agregar una acción hacia arriba
      • Cómo usar vistas y proveedores de acciones
    • Cómo controlar el nivel de visibilidad de la IU del sistema
      • Descripción general
      • Cómo atenuar las barras del sistema
      • Cómo ocultar la barra de estado
      • Cómo ocultar la barra de navegación
      • Cómo habilitar el modo de pantalla completa
      • Cómo responder a los cambios en el nivel de visibilidad de la IU
    • Cómo agregar compatibilidad con el gesto de deslizar para actualizar
      • Descripción general
      • Cómo agregar el gesto de deslizar para actualizar a tu app
      • Cómo responder a un gesto para actualizar
    • Descripción general de las notificaciones
    • Descripción general de los mensajes emergentes
      • Descripción general
      • Cómo crear y mostrar un mensaje emergente
      • Cómo agregar una acción a un mensaje
    • Diálogos
    • Menús
    • Configuración
      • Descripción general
      • Cómo organizar tus opciones de configuración
      • Cómo personalizar la configuración
      • Cómo usar valores guardados
      • Cómo crear una jerarquía en código
      • Cómo controlar otros factores de forma
      • Componentes y atributos de preferencias
    • Búsqueda
      • Descripción general
      • Cómo crear una interfaz de búsqueda
      • Cómo agregar sugerencias de consulta reciente
      • Cómo agregar sugerencias personalizadas
      • Configuración que permite búsquedas
      • Cómo agregar la funcionalidad de búsqueda
        • Descripción general
        • Cómo configurar la interfaz de búsqueda
        • Cómo almacenar y buscar datos
        • Cómo mantener la compatibilidad con versiones anteriores
    • Cómo copiar y pegar
    • Cómo arrastrar y soltar
    • Compatibilidad con pantalla en pantalla
    • Cómo crear IU compatibles con versiones anteriores
      • Descripción general
      • Cómo abstraer las nuevas API
      • Cómo crear conexiones proxy con las API nuevas
      • Cómo crear una implementación con API anteriores
      • Cómo usar componentes de compatibilidad de versiones
    • Control de dispositivos
  • Animaciones y transiciones
    • Descripción general
    • Introducción a las animaciones
    • Descripción general de la animación de propiedades
    • Cómo animar gráficos con elementos de diseño
    • Cómo mostrar/ocultar una vista con animación
    • Cómo mover una vista con una animación
    • Cómo mover una vista con una animación de navegación
    • Cómo ampliar una vista con animaciones con zoom
    • Cómo animar movimiento con física de resortes
    • Cómo animar automáticamente las actualizaciones de diseño
    • Cómo animar los cambios de diseño con una transición
    • Cómo crear una animación de transición personalizada
    • Cómo iniciar una actividad con una animación
    • Cómo deslizarse entre fragmentos con ViewPager
    • Cómo deslizarse entre fragmentos con ViewPager2
    • Cómo migrar contenido de ViewPager a ViewPager2
    • Recursos adicionales
  • Imágenes y gráficos
    • Descripción general
    • Descripción general de los elementos de diseño
    • Descripción general de las interfaces de elementos de diseño
    • Cómo gestionar mapas de bits
    • Cómo seleccionar colores con la API de Palette
    • Cómo reducir los tamaños de descarga de imágenes
    • Aceleración de hardware
    • OpenGL ES
    • Cómo mostrar gráficos con OpenGL ES
      • Descripción general
      • Cómo crear un entorno OpenGL ES
      • Cómo definir formas
      • Cómo dibujar formas
      • Cómo aplicar vistas de cámara y proyección
      • Cómo agregar movimiento
      • Cómo responder a eventos táctiles
    • Procesamiento
      • Descripción general
      • Cómo reducir la superposición
      • Jerarquías de vista y rendimiento
      • Cómo hacer un análisis con la representación GPU del perfil
    • Cómo mejorar gráficos con contenido de una amplia gama de colores
  • Audio y video
    • Descripción general de audio y video
    • Controles multimedia
    • Formatos multimedia compatibles
    • Códecs de archivos multimedia
    • Arquitectura de apps multimedia
      • Descripción general de la arquitectura de apps multimedia
      • Cómo usar sesiones multimedia
      • Cómo crear una app de audio
        • Descripción general de las apps de audio
        • Cómo crear servicios para el navegador multimedia
        • Cómo crear actividad de clientes para el navegador multimedia
        • Devoluciones de llamadas de sesiones multimedia
        • Cómo usar la app de prueba del control multimedia
      • Cómo crear una app de video
        • Descripción general de las apps de video
        • Cómo crear una actividad del reproductor de video
        • Devoluciones de llamadas de sesiones multimedia
      • Cómo responder a los botones multimedia
      • Cómo controlar cambios en la salida de audio
      • Cómo administrar el foco de audio
    • Asistente de Google
      • Apps multimedia y de Asistente de Google
      • Apps de contenido multimedia en el modo en automóvil de Asistente de Google
    • Enrutamiento entre dispositivos
      • Descripción general del enrutamiento
      • Descripción general de MediaRouter
      • Descripción general de MediaRouteProvider
    • Cómo controlar la amplitud con VolumeShaper
    • Descripción general de MediaPlayer
    • Descripción general de MediaRecorder
    • ExoPlayer
    • Cómo compartir entradas de audio
    • Cómo realizar capturas de reproducción
    • Velocidad de fotogramas
    • Recursos adicionales para contenido multimedia
  • Servicios
    • Descripción general
    • Servicios en primer plano
    • Servicios vinculados
    • Descripción general de AIDL
  • Tareas en segundo plano
    • Descripción general
    • Subprocesos en segundo plano
    • Optimizaciones en segundo plano
    • Transmisiones
      • Descripción general
      • Excepciones de transmisiones implícitas
    • Cómo administrar el estado activo del dispositivo
      • Descripción general
      • Cómo mantener activo el dispositivo
      • Cómo programar alarmas repetitivas
  • Permisos
    • Descripción general
    • Cómo evaluar si tu app necesita permisos
    • Cómo declarar permisos de la app
    • Cómo solicitar permisos de la app
    • Prácticas recomendadas de permisos de la app
    • Permisos que solo se usan en controladores predeterminados
    • Restringe las interacciones con otras apps
    • Cómo definir permisos personalizados
  • Archivos y datos de la app
    • Descripción general
    • Descripción general del almacenamiento
    • Cómo guardar contenido en el almacenamiento específico de la app
    • Cómo guardar contenido en el almacenamiento compartido
      • Descripción general
      • Multimedia
      • Documentos y otros archivos
      • Conjuntos de datos
    • Cómo administrar todos los archivos de un dispositivo de almacenamiento
    • Cómo guardar datos de pares clave-valor
    • Cómo guardar contenido en una base de datos local
      • Descripción general
      • Cómo definir datos mediante entidades
      • Cómo acceder a datos mediante DAO
      • Cómo definir relaciones entre objetos
      • Escribe consultas DAO asíncronas
      • Cómo implementar vistas en una base de datos
      • Cómo autocompletar el contenido de tu base de datos
      • Cómo migrar tu base de datos
      • Cómo probar y depurar tu base de datos
      • Cómo hacer referencia a datos complejos
      • Cómo migrar de SQLite a Room
      • Cómo guardar datos con SQLite
    • Prácticas recomendadas y casos prácticos de almacenamiento
    • Cómo compartir datos simples
      • Descripción general
      • Cómo enviar datos simples a otras apps
      • Cómo recibir datos simples de otras apps
    • Cómo compartir archivos
      • Descripción general
      • Cómo configurar el uso compartido de archivos
      • Cómo compartir un archivo
      • Cómo solicitar un archivo compartido
      • Cómo recuperar información de archivos
    • Cómo compartir archivos con NFC
      • Descripción general
      • Cómo enviar archivos a otro dispositivo
      • Cómo recibir archivos de otro dispositivo
    • Cómo imprimir archivos
      • Descripción general
      • Cómo imprimir fotos
      • Cómo imprimir documentos HTML
      • Cómo imprimir documentos personalizados
    • Proveedores de contenido
      • Descripción general
      • Conceptos básicos sobre proveedores de contenido
      • Cómo crear un proveedor de contenido
      • Cómo abrir archivos con el marco de trabajo de acceso al almacenamiento
      • Cómo crear un proveedor de documentos personalizado
    • Ubicación de la instalación de la app
  • Identidad y datos del usuario
    • Descripción general
    • Cómo agregar un flujo de trabajo de acceso
    • Cómo mostrar un diálogo de autenticación biométrica
    • Autofill Framework
      • Descripción general
      • Cómo optimizar tu app para el autocompletado
      • Cómo crear servicios de autocompletado
      • Cómo integrar la opción de autocompletado con teclados
    • Cómo auditar el acceso a datos
    • Cómo obtener un ID de publicidad que el usuario puede restablecer
    • Descripción general del proveedor de calendario
    • Proveedor de contactos
      • Descripción general
      • Cómo recuperar una lista de contactos
      • Cómo recuperar los detalles de un contacto
      • Cómo modificar contactos con intents
      • Cómo mostrar la insignia de Contacto rápido
    • Transferencia de cuentas
    • Copia de seguridad de datos
      • Descripción general
      • Cómo crear una copia de seguridad de los datos del usuario
      • Cómo crear copias de seguridad de pares clave-valor
      • Cómo probar copias de seguridad y restablecimiento
    • Prácticas recomendadas para identificadores únicos
    • Cómo recordar y autenticar usuarios
      • Descripción general
      • Cómo recordar a tus usuarios
      • Autenticación en servicios OAuth2
      • Cómo crear un tipo de cuenta personalizado
  • Ubicación del usuario
    • Descripción general
    • Cómo solicitar permisos de ubicación
    • Cómo obtener la última ubicación conocida
    • Cómo cambiar la configuración de la ubicación
    • Cómo solicitar actualizaciones de ubicación
    • Cómo acceder a la ubicación en segundo plano
    • Cómo crear y supervisar el geovallado
    • Cómo detectar cuándo un usuario inicia una actividad
    • Cómo optimizar la ubicación para ahorrar batería
    • Cómo migrar a API de ubicación y contexto
    • Cómo agregar mapas
  • Modo táctil y método de entrada
    • Descripción general
    • Eventos de entrada
    • Uso de gestos táctiles
      • Descripción general
      • Detección de gestos comunes
      • Seguimiento de movimientos táctiles y punteros
      • Cómo animar el gesto para desplazar
      • Gestos de navegación de asistencia
      • Cómo controlar gestos multitáctiles
      • Arrastre y escala
      • Administración de eventos táctiles en ViewGroup
    • Cómo administrar la entrada del teclado
      • Descripción general
      • Cómo especificar el tipo de método de entrada
      • Cómo administrar la visibilidad del método de entrada
      • Cómo brindar compatibilidad con navegación de teclado
      • Cómo administrar las acciones del teclado
    • Cómo brindar compatibilidad con controladores para juegos
      • Descripción general
      • Cómo administrar acciones de los controladores
      • Cómo brindar compatibilidad con controladores en diferentes versiones de Android
      • Cómo brindar compatibilidad con varios controladores para juegos
    • Editores de método de entrada
      • Cómo crear un método de entrada
      • Teclado de imagen
    • Corrector ortográfico
  • CameraX
    • Descripción general
    • Arquitectura de CameraX
    • Configuración
    • Vista previa
    • Análisis de imágenes
    • Captura de imágenes
    • Extensiones de proveedores
    • Resultado de la transformación
    • Rotaciones de casos de uso
    • Dispositivos compatibles con CameraX
  • Camera2
    • Descripción general
    • Solicitudes y sesiones de capturas de la cámara
    • Enumeración de cámaras
    • Cómo usar varias transmisiones de cámara a la vez
    • API de varias cámaras
  • Cámara
    • Descripción general
    • Cómo tomar fotos
    • Cómo grabar videos
    • Cómo controlar la cámara
    • API de cámara
  • Sensores
    • Descripción general
    • Información general de sensores
    • Sensores de movimiento
    • Sensores de posición
    • Sensores de entorno
    • Dimensiones GNSS sin procesar
  • Conectividad
    • Descripción general
    • Cómo llevar a cabo operaciones de red
      • Descripción general
      • Cómo conectarse a la red
      • Cómo administrar el uso de la red
      • Cómo leer el estado de la red
      • Cómo optimizar el uso de datos de red
      • Cómo analizar datos XML
    • Cómo transmitir datos de red mediante Volley
      • Descripción general
      • Cómo enviar una solicitud simple
      • Cómo configurar RequestQueue
      • Cómo realizar una solicitud estándar
      • Cómo implementar una solicitud personalizada
    • Cómo realizar operaciones de red con Cronet
      • Descripción general
      • Cómo enviar una solicitud simple
      • Ciclo de vida de solicitud de Cronet
      • Referencia
        • org.chromium.net
          • Descripción general
          • CallbackException
          • CronetEngine
            • Descripción general
            • CronetEngine.Builder
              • Descripción general
              • LibraryLoader
          • CronetException
          • InlineExecutionProhibitedException
          • NetworkException
          • QuicException
          • UploadDataProvider
          • UploadDataProviders
          • UploadDataSink
          • URLRequest
            • Descripción general
            • Builder
            • Callback
            • Status
            • StatusListener
          • UrlResponseInfo
            • Descripción general
            • HeaderBlock
    • Mejora tus apps con 5G
    • Cómo crear aplicaciones cliente-servidor con gRPC
    • Cómo transferir datos sin consumir la batería
      • Descripción general
      • Cómo optimizar las descargas para lograr un acceso de red eficiente
      • Cómo minimizar el efecto de las actualizaciones regulares
      • Cómo evitar las descargas redundantes
      • Cómo modificar patrones en función del tipo de conectividad
    • Cómo reducir el consumo de batería de la red
      • Descripción general
      • Cómo recopilar datos del tráfico de red
      • Cómo analizar el tráfico de datos
      • Cómo optimizar el uso de redes iniciado por el usuario
      • Cómo optimizar el uso de redes iniciado por apps
      • Cómo optimizar el uso de redes iniciado por el servidor
      • Cómo optimizar el uso general de redes
    • Cómo transferir datos mediante adaptadores de sincronización
      • Descripción general
      • Cómo crear un autenticador auxiliar
      • Cómo crear un proveedor de contenido auxiliar
      • Cómo crear un adaptador de sincronización
      • Cómo ejecutar un adaptador de sincronización
    • Bluetooth
      • Descripción general
      • Descripción general del Bluetooth de bajo consumo
      • Cómo usar Bluetooth de bajo consumo
    • NFC
      • Descripción general
      • Conceptos básicos de NFC
      • NFC avanzadas
      • Descripción general de la emulación de tarjetas basadas en el host
    • Telecomunicaciones
      • Descripción general
      • Cómo crear una app de llamadas
      • Cómo evitar la falsificación de identidad del identificador de llamada
      • ID de telefonía
    • Wi-Fi
      • Descripción general de la búsqueda de Wi-Fi
      • Wi-Fi entre pares
      • Descripción general del reconocimiento de Wi-Fi
      • Ubicación de Wi-Fi con RTT
      • Hotspot solo local
      • Sincronización de dispositivos complementarios
      • Infraestructura de Wi-Fi
        • Descripción general de la infraestructura de Wi-Fi
        • API de sugerencia de Wi-Fi para la conexión a Internet
        • API de solicitud de red Wi-Fi para la conectividad entre pares
        • Passpoint
        • Cómo guardar redes y configuraciones de Passpoint
    • USB
      • Descripción general
      • Descripción general de los accesorios
      • Descripción general del host
    • VPN
    • Descripción general del protocolo de inicio de sesión
    • Detección y conexión
      • Descripción general
      • Cómo usar la detección del servicio de red
      • Cómo crear conexiones P2P con Wi-Fi
      • Cómo usar P2P Wi-Fi para detectar servicios
      • Easy Connect para Wi-Fi
    • Compatibilidad con el lector de la API de Open Mobile
  • RenderScript
    • Descripción general
    • RenderScript avanzado
    • Referencia de API en tiempo de ejecución
      • Descripción general
      • Tipos numéricos
      • Tipos de objetos
      • Funciones de conversión
      • Funciones y constantes matemáticas
      • Funciones matemáticas de vector
      • Funciones de matriz
      • Funciones de cuaternión
      • Funciones de actualizaciones atómicas
      • Tipos y funciones de tiempo
      • Funciones de acceso a datos de asignación
      • Funciones de características de objetos
      • Tipos y funciones de invocación de kernel
      • Funciones de entrada y salida
      • Funciones de depuración
      • Tipos y funciones de gráficos
      • Índice
  • Contenido basado en la Web
    • Descripción general
    • Creación de aplicaciones web en WebView
    • Cómo administrar objetos WebView
    • Oscurecer contenido web
    • Privacidad del usuario en Crash Reporting de WebView
    • Cómo migrar a WebView en Android 4.4
    • Compatibilidad con diferentes pantallas en aplicaciones web
    • Depuración de aplicaciones web
    • Prácticas recomendadas para aplicaciones web
  • Paquetes Android App Bundle
    • Descripción general
    • Play Feature Delivery
      • Descripción general
      • Cómo configurar el módulo base
      • Cómo configurar la entrega durante la instalación
      • Cómo configurar la entrega a pedido
      • Prácticas recomendadas de la entrega on demand
      • Cómo configurar la entrega instantánea
      • Cómo configurar la entrega condicional
    • Play Asset Delivery
      • Descripción general
      • Cómo compilar para Java o código nativo
      • Cómo compilar para Unity
      • Cómo orientar formatos de compresión de texturas
    • Cómo probar tu paquete de aplicación
      • Descripción general
      • Cómo realizar pruebas locales de instalaciones de módulos
  • Google Play
    • Facturación Google Play
    • Biblioteca de Google Play Core
      • Descripción general
      • Play Feature Delivery
      • Play Asset Delivery
        • Descripción general
        • Cómo integrar la entrega de recursos (Java)
        • Cómo integrar la entrega de recursos (nativo)
        • Cómo integrar la entrega de recursos (Unity)
        • Cómo probar la entrega de recursos
      • Opiniones integradas en la app
        • Descripción general
        • Cómo realizar la integración con Kotlin o Java
        • Cómo realizar la integración con código nativo
        • Cómo realizar la integración con Unity
        • Cómo realizar pruebas de opiniones integradas en la app
      • Compatibilidad con actualizaciones dentro de la app
      • Cómo realizar pruebas locales de instalaciones de módulos
      • Condiciones del Servicio
    • Google Play Instant
      • Descripción general de Google Play Instant
      • Cómo comenzar a usar las apps instantáneas
        • Cómo crear un paquete de aplicación instantánea
        • Recomendaciones de UX para apps
      • Cómo comenzar a crear juegos instantáneos
        • Descripción general
        • Complemento para Unity
        • Prácticas recomendadas de UX para juegos
        • Cómo migrar a paquetes Android App Bundle
        • Cómo implementar la entrega de recursos en la nube
        • Asistencia para los Servicios de juego de Google Play
        • Juegos instantáneos de Play
        • Lista de tareas de juegos instantáneos de Play
      • Cómo reducir el tamaño de tu app o juego instantáneo
      • Cómo agregar anuncios en tu app o juego instantáneo
      • Cómo brindar varios puntos de entrada
      • Cómo realizar la integración con Firebase
        • Cómo agregar Google Analytics para Firebase a tu app instantánea
        • Cómo usar Firebase Dynamic Links con apps instantáneas
      • Lista de verificación de requisitos técnicos
      • Política de Google Play Instant
      • Recursos
        • Referencia
        • Ejemplos de código
        • Notas de la versión del SDK
        • Intents de Apps instantáneas
      • Asistencia
        • Errores conocidos
        • StackOverflow
    • API de Google Play Developer
    • Archivos de expansión de APK
    • Servicio de licencias para aplicaciones
      • Descripción general
      • Descripción general sobre las licencias
      • Cómo realizar la configuración para licencias
      • Cómo agregar la verificación del servidor
      • Cómo agregar la verificación del cliente
      • Referencia sobre licencias
    • Referencia de instalación de Google Play
      • Descripción general
      • Biblioteca de referencia de instalación de Play
        • Descripción general
        • Referencia
        • Notas de la versión
      • API de referencia de instalación de Play
  • Acciones en apps
  • Secciones
    • Descripción general
    • Cómo comenzar
    • Plantillas de secciones
  • Juegos
  • Desarrolla
    • Vistas previas para desarrolladores
    • Cómo crear tu juego en Unity
    • Cómo crear tu juego en Unreal
    • Cómo crear una experiencia de acceso optimizada
    • Cómo determinar las necesidades de acceso a datos sensibles
    • Cómo proteger tu juego
    • Cómo desarrollar juegos para todas las pantallas
    • Más información sobre cómo renderizar durante bucles de juego
  • Optimización
    • Herramientas para optimizar tu juego
    • Compatibilidad con arquitecturas de 64 bits
    • Cómo mejorar el rendimiento de tu juego
    • Cómo administrar de manera eficaz la memoria en juegos
    • Cómo detectar y diagnosticar fallas
    • Cómo identificar los hotspots de la CPU
    • Cómo implementar el SDK de juegos de Android
      • Descripción general
      • Notas de la versión
      • Cómo lograr una alternación de fotogramas correcta
        • Descripción general
        • Procesadores de OpenGL
          • Cómo integrar
          • Cómo actualizar tu configuración de compilación
          • Cómo agregar funciones de ritmo de fotogramas
          • Cómo verificar la mejora del ritmo de fotogramas
        • Procesadores de Vulkan
          • Cómo integrar
          • Cómo actualizar tu configuración de compilación
          • Cómo agregar funciones de ritmo de fotogramas
          • Cómo verificar la mejora del ritmo de fotogramas
      • Cómo optimizar la velocidad de fotogramas
        • Descripción general
        • Integración con motores personalizados
          • Descripción general
          • Cómo ejecutar la app de demostración
          • Cómo habilitar la API
          • Cómo actualizar tu configuración de compilación
          • Cómo definir anotaciones, parámetros de fidelidad y opciones de configuración
          • Cómo agregar funciones de latencia de fotogramas
          • Cómo agregar funciones de grabación durante el tiempo de carga
          • Cómo validar, empaquetar y publicar el APK
          • Cómo solucionar los problemas comunes
          • Uso avanzado
        • Integración de Unity
          • Descripción general
          • Cómo habilitar la API
          • Cómo integrar el complemento
          • Cómo inicializar la biblioteca y verificar la operación
          • Cómo definir anotaciones, parámetros de fidelidad y niveles de calidad
          • Cómo agregar funciones de grabación durante el tiempo de carga
          • Cómo ejecutar la app de supervisión
          • Revisar y publicar
          • Cómo solucionar problemas comunes
      • Cómo incorporar audio de alto rendimiento
        • Descripción general
        • Cómo actualizar tu configuración de compilación
        • Cómo usar Oboe
        • Muestras de código
        • Guía completa de Oboe
      • Referencia
        • Biblioteca de Frame Pacing
          • Descripción general
          • Módulos
          • Herramientas comunes de Swappy
          • Swappy para OpenGL
          • Swappy para extras de OpenGL
          • Swappy para Vulkan
          • Structs
          • SwappyStats
          • SwappyThreadFunctions
          • SwappyTracer
          • SwappyVkFunctionProvider
        • Biblioteca de Performance Tuner
          • Motor personalizado
            • Descripción general
            • Módulos
            • Utilidades de caché de Tuning Fork
            • Utilidades adicionales de Tuning Fork
            • Interfaz principal de Tuning Fork
            • Structs
            • TuningFork_CProtobufSerialization
            • TuningFork_Cache
            • TuningFork_LoadingTimeMetadata
            • TuningFork_MetricLimits
            • TuningFork_Settings
          • Unity
            • Descripción general
            • Clases
            • AndroidPerformanceTuner< TFidelity, TAnnotation >
            • LoadingTimeMetadata
            • Result< T >
            • Structs
            • MetricLimits
            • Espacios de nombres
            • Google
            • Google.Android
            • Google.Android.PerformanceTuner
    • Cómo reducir el tamaño de un juego
    • Gráficos de perfiles
    • Cómo depurar el uso de la memoria nativa
  • Cómo lanzar y, luego, iterar
    • Cómo lanzar tu juego en Google Play
    • Cómo crear un Android App Bundle en Unity
    • Cómo agregar compatibilidad con el acceso instantáneo
    • Cómo mantenerse conectado con la base de usuarios
  • Prácticas recomendadas
  • Inyección de dependencias
    • Descripción general
    • Inserción manual de dependencias
    • Inserción de dependencias con Hilt
    • Hilt en apps con varios módulos
    • Hilt y las integraciones de Jetpack
    • Guía de prueba de Hilt
    • Hoja de referencia de anotaciones de Hilt y Dagger
    • Dagger
      • Conceptos básicos de Dagger
      • Cómo usar Dagger en apps para Android
      • Cómo usar Dagger en apps de varios módulos
  • Pruebas
    • Descripción general
    • Conceptos básicos de las pruebas
    • Cómo configurar un proyecto
    • Cómo crear pruebas de unidades efectivas
      • Descripción general
      • Cómo crear pruebas de unidades locales
      • Cómo crear pruebas de unidades instrumentadas
    • Cómo automatizar las pruebas de IU
      • Descripción general
      • Cómo probar la IU de una sola app
      • Cómo probar la IU en varias apps
    • Cómo probar las integraciones de los componentes de la app
      • Descripción general
      • Cómo probar tu servicio
      • Cómo realizar pruebas en tu proveedor de contenido
    • Cómo realizar pruebas de rendimiento de la IU
    • Espresso
      • Descripción general
      • Instrucciones de configuración
      • Conceptos básicos
      • Recetas
      • Multiproceso
      • Comprobación de accesibilidad
      • Listas
      • Intents
      • Web
      • Recurso inactivo
      • Hoja de referencia
      • Recursos adicionales
    • UI Automator
    • App Crawler
    • Reglas de JUnit4
    • AndroidJUnitRunner
    • Notas de la versión
    • Recursos adicionales
  • Rendimiento
    • Descripción general
    • Android vitals
      • Descripción general
      • Bloqueos de activación parciales sostenidos
      • Demasiadas activaciones
      • Búsqueda excesiva de redes Wi-Fi en segundo plano
      • Uso excesivo de redes en segundo plano
      • ANR
      • Fallas
      • Procesamiento lento
      • Marcos congelados
      • Denegaciones de permisos
      • Tiempo de inicio de la app
    • Intervalos de App Standby
    • Descripción general de procesos y subprocesos
    • Mejor rendimiento mediante subprocesos
    • Cómo optimizar la duración de batería
      • Descripción general
      • Cómo optimizar tu app para Descanso y App Standby
      • Cómo supervisar el nivel de batería y el estado de carga
      • Cómo supervisar el estado de conectividad y la medición de la conexión
      • Cómo determinar y supervisar el tipo y el estado de conexión
      • Restricciones para la administración de batería
      • Cómo generar perfiles del uso de la batería con Batterystats y Battery Historian
      • Cómo analizar el uso de batería con Battery Historian
      • Problemas con las pruebas de energía
    • Cómo reducir el tamaño de tu app
    • Cómo administrar la memoria
      • Descripción general de la administración de memoria
      • Asignación de memoria entre procesos
      • Cómo administrar la memoria de tu app
    • Registro del sistema
      • Descripción general
      • Cómo capturar un registro de línea de comandos
      • Cómo capturar un registro en un dispositivo
      • Cómo navegar por un informe
      • Cómo definir eventos personalizados
    • Cómo inspeccionar el procesamiento de GPU
    • Diseño sin interrupciones
    • Cómo mantener la capacidad de respuesta de tu app
    • Aspectos básicos de SMP para Android
    • Cómo verificar el comportamiento de la app en el tiempo de ejecución de Android (ART)
  • Accesibilidad
    • Descripción general
    • Cómo crear y probar apps para accesibilidad
      • Cómo mejorar la accesibilidad de las apps
      • Principios para mejorar la accesibilidad de la app
      • Prueba la accesibilidad de tu app
    • Temas avanzados
      • Mejora la accesibilidad de las vistas personalizadas
      • Cómo crear tu propio servicio de accesibilidad
    • Recursos adicionales
  • Privacidad
    • Prácticas recomendadas sobre privacidad
  • Seguridad
    • Recomendaciones sobre seguridad de apps
    • Sugerencias de seguridad
    • Seguridad con datos
    • Seguridad con datos en versiones adicionales de Android
    • Seguridad con HTTPS y SSL
    • Configuración de seguridad de la red
    • Cómo actualizar tu proveedor de seguridad para protegerte contra vulnerabilidades de SSL
    • Protección contra amenazas de seguridad con SafetyNet
      • Descripción general
      • API de certificación de SafetyNet
      • API de navegación segura de SafetyNet
      • API de reCAPTCHA de SafetyNet
      • API de Verificar aplicaciones de SafetyNet
    • Criptografía
    • Sistema Android Keystore
    • Verificación de la copia de seguridad en hardware de pares de claves con certificación de claves
    • Confirmación de protección de Android
    • Cómo brindar compatibilidad con inicio directo
    • Cómo ejecutar código DEX incorporado
    • Programa de mejora de la seguridad de las apps
  • Crea contenido para millones de usuarios
    • Descripción general
    • Conectividad
    • Capacidad del dispositivo
    • Costo de los datos
    • Consumo de la batería
    • IU y contenido
  • Cómo crear contenido para empresas
    • Descripción general
    • Guía para desarrolladores
    • Perfiles de trabajo
    • Cómo establecer configuraciones administradas
    • Comentarios sobre la app
      • Cómo enviar comentarios sobre la app a EMM
      • Cómo probar los comentarios sobre la app
    • Contactos laborales
    • Políticas de administración de dispositivos
    • Administración del dispositivo
      • Descripción general
      • Cómo compilar un controlador de política de dispositivo
      • Dispositivos exclusivos
        • Descripción general
        • Modo de tareas bloqueadas
        • Varios usuarios
        • Guía de soluciones
      • Control de dispositivos
      • Redes y telefonía
      • Seguridad
      • Actualizaciones del sistema
      • Registro de actividad de red
    • Versiones de Android
      • Descripción general
      • Android 11
      • Android 10
      • Android 9
      • Android 8.0
      • Android 7.0
    • Administración del dispositivo
  • Desarrolladores de Android
  • Documentos
  • Guías

Cámara

Android proporciona acceso completo al hardware de la cámara del dispositivo para que puedas crear una amplia gama de apps basadas en la cámara o en la visión. O, si solo necesitas una manera de permitir que el usuario capture una foto, simplemente puedes realizar una solicitud a una app de cámara existente para que capture una foto y te la muestre.

Documentación

  • Toma fotos
  • Graba videos
  • Controla la cámara
  • API de cámara

Videos

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2020-06-03 UTC.

  • WeChat WeChat
    Sigue a Google Developers en WeChat
  • Twitter Twitter
    Sigue a @AndroidDev en Twitter
  • YouTube YouTube
    Busca Android Developers en YouTube
  • Más Android

    • Android
    • Enterprise
    • Seguridad
    • Código abierto
  • Asistencia

    • Informar sobre un error en la plataforma
    • Informar sobre un error en la documentación
    • Google Play support
    • Participar en los estudios de investigación
  • Documentación

    • Guías para desarrolladores
    • Guías de diseño
    • Referencia de API
    • Muestras
    • Android Studio
Google Developers
  • Android
  • Chrome
  • Firebase
  • Google Cloud Platform
  • Todos los productos
  • Privacidad
  • Licencia
  • Lineamientos de marca
  • ICP证合字B2-20070004号
  • Recibe noticias y sugerencias por correo electrónico Suscribirse