const dfd = require("danfojs-node") const tf = require("@tensorflow/tfjs-node") let data = tf.tensor2d([[20,30,40], [23,90, 28]]) let df = new dfd.DataFrame(data) let tf_tensor = df.tensor console.log(tf_tensor); tf_tensor.print()
Tensor { kept: false, isDisposedInternal: false, shape: [ 2, 3 ], dtype: 'float32', size: 6, strides: [ 3 ], dataId: {}, id: 3, rankType: '2' } Tensor [[20, 30, 40], [23, 90, 28]]
const dfd = require("danfojs-node") json_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 }, { A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 }, { A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 }, { A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }] df = new dfd.DataFrame(json_data) df.print()
const dfd = require("danfojs-node") obj_data = {'A': [“A1”, “A2”, “A3”, “A4”], 'B': ["bval1", "bval2", "bval3", "bval4"], 'C': [10, 20, 30, 40], 'D': [1.2, 3.45, 60.1, 45], 'E': ["test", "train", "test", "train"] } df = new dfd.DataFrame(obj_data) df.print()
const dfd = require("danfojs-node") let data = {"Name":["Apples", "Mango", "Banana", undefined], "Count": [NaN, 5, NaN, 10], "Price": [200, 300, 40, 250]} let df = new dfd.DataFrame(data) let df_filled = df.fillna({columns: ["Name", "Count"], values: ["Apples", df["Count"].mean()]}) df_filled.print()
const dfd = require("danfojs-node") let data = { "Name": ["Apples", "Mango", "Banana", "Pear"] , "Count": [21, 5, 30, 10], "Price": [200, 300, 40, 250] } let df = new dfd.DataFrame(data) let sub_df = df.loc({ rows: ["0:2"], columns: ["Name", "Price"] }) sub_df.print()
const dfd = require("danfojs-node") //read the first 10000 rows dfd.read_csv("file:///home/Desktop/bigdata.csv", chunk=10000) .then(df => { df.tail().print() }).catch(err=>{ console.log(err); })
const dfd = require("danfojs-node") let data = ["dog","cat","man","dog","cat","man","man","cat"] let series = new dfd.Series(data) let encode = new dfd.LabelEncoder() encode.fit(series) let sf_enc = encode.transform(series) let new_sf = encode.transform(["dog","man"])
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://cdn.jsdelivr.net/npm/danfojs@0.1.1/dist/index.min.js"></script> <title>Document</title> </head> <body> <div id="plot_div"></div> <script> dfd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv") .then(df => { var layout = { title: 'A financial charts', xaxis: {title: 'Date'}, yaxis: {title: 'Count'} } new_df = df.set_index({ key: "Date" }) new_df.plot("plot_div").line({ columns: ["AAPL.Open", "AAPL.High"], layout: layout }) }).catch(err => { console.log(err); }) </script> </body> </html>
const dfd = require("danfojs-node") const tf = require("@tensorflow/tfjs-node") async function load_process_data() { let df = await dfd.read_csv("https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv") //A feature engineering: Extract all titles from names columns let title = df['Name'].apply((x) => { return x.split(".")[0] }).values //replace in df df.addColumn({ column: "Name", value: title }) //label Encode Name feature let encoder = new dfd.LabelEncoder() let cols = ["Sex", "Name"] cols.forEach(col => { encoder.fit(df[col]) enc_val = encoder.transform(df[col]) df.addColumn({ column: col, value: enc_val }) }) let Xtrain,ytrain; Xtrain = df.iloc({ columns: [`1:`] }) ytrain = df['Survived'] // Standardize the data with MinMaxScaler let scaler = new dfd.MinMaxScaler() scaler.fit(Xtrain) Xtrain = scaler.transform(Xtrain) return [Xtrain.tensor, ytrain.tensor] //return the data as tensors }
function get_model() { const model = tf.sequential(); model.add(tf.layers.dense({ inputShape: [7], units: 124, activation: 'relu', kernelInitializer: 'leCunNormal' })); model.add(tf.layers.dense({ units: 64, activation: 'relu' })); model.add(tf.layers.dense({ units: 32, activation: 'relu' })); model.add(tf.layers.dense({ units: 1, activation: "sigmoid" })) model.summary(); return model }
async function train() { const model = await get_model() const data = await load_process_data() const Xtrain = data[0] const ytrain = data[1] model.compile({ optimizer: "rmsprop", loss: 'binaryCrossentropy', metrics: ['accuracy'], }); console.log("Training started....") await model.fit(Xtrain, ytrain,{ batchSize: 32, epochs: 15, validationSplit: 0.2, callbacks:{ onEpochEnd: async(epoch, logs)=>{ console.log(`EPOCH (${epoch + 1}): Train Accuracy: ${(logs.acc * 100).toFixed(2)}, Val Accuracy: ${(logs.val_acc * 100).toFixed(2)}\n`); } } }); }; train()
Akua Prempeh, Marketing de desarrolladores
Nada arruina más un juego que las fallas, y la mayoría de nosotros las experimentamos alguna vez: estás a punto de resolver el rompecabezas, derrotar al jefe final o cruzar la línea de meta cuando de repente… falla.
Para Tapps Games, un desarrollador de juegos de Brasil, era especialmente importante que los jugadores tuvieran una experiencia de juego estable y de alto rendimiento durante un lanzamiento de funciones para su popular título Vlogger Go Viral. Con más de 11 millones de usuarios activos, el equipo de Trapps no tenía tiempo para investigar cada opinión negativa manualmente, ya que les llevaría días y dejaría a muchos usuarios esperando una solución.
Para resolver el problema, Trapp Games habilitó las alertas de velocidad de Firebase Crashlytics, lo que permitió detectar al instante el aumento en la gravedad de las fallas que ocurrían en el juego Vlogger Go Viral. claveCrahslytics también ayudó a priorizar, identificar y realizar el seguimiento del estado y las secuencias de eventos que provocaban la falla mediante claves personalizadas y registros personalizados. El equipo de Vlogger Go Viral también usó Remote Config para detener el área problemática por partes e implementó el lanzamiento por etapas en Google Play Console a fin de lanzar progresivamente la nueva versión a un subconjunto de jugadores antes de realizar el lanzamiento completo.
Lee el caso de éxito completo y descubre cómo Trapps Games usó Crashlytics y Remote Config para reducir la cantidad de usuarios que experimentan fallas y mejorar su calificación, y obtén más información sobre cómo Firebase puede ayudarte a compilar y expandir tu juego.
Publicado por Dan Galpin, representante de desarrolladores
Esta entrada de blog es parte de una serie semanal de #11WeeksOfAndroid. En cada edición de #11WeeksOfAndroid, trataremos un área clave para que no te pierdas nada. El tema de esta edición son los juegos, el contenido multimedia y el 5G. Esto es lo que deberías saber al respecto.
Hemos cubierto cómo aprovechar los nuevos controles multimedia de Android 11 asegurándonos de que tu app use MediaStyle con un token válido de MediaSession. Mostramos cómo admitir la reanudación de contenido multimedia haciendo que tu app sea detectable con un MediaBrowserServiceCompat, usando la sugerencia de EXTRA_RECENT para ayudar a reanudar el contenido y procesar las devoluciones de llamada de onPlay y onGetRoot. Finalmente, te mostramos cómo aprovechar la biblioteca MediaRouter de Jetpack para admitir la transferencia fluida de contenido multimedia entre dispositivos. Consulta la versión actualizada de la muestra de UAMP, que contiene una implementación de referencia para los controles multimedia y la reanudación de reproducción.
MediaStyle
MediaSession
MediaBrowserServiceCompat
EXTRA_RECENT
onPlay
onGetRoot
Hemos cubierto algunas de las principales formas en que las apps pueden beneficiarse de 5G, entre las que se incluyen:
Android 11 agrega nuevas API y actualiza las existentes para garantizar que dispongas de todas las herramientas necesarias para aprovechar las capacidades de 5G, como una API de estimación de ancho de banda mejorada, funciones de detección de 5G y una nueva marca de medición de proveedores de telefonía celular. Android Emulator ahora te permite desarrollar y probar esas API sin necesidad de tener un dispositivo 5G o una conexión de red. Todo esto (y más) está disponible en nuestra página exclusiva sobre 5G.
Presentamos un episodio especial de "11 semanas" de The Android Game Developer Show, que ofrece una actualización de las herramientas, los servicios y las tecnologías que traemos para ayudarte a diseñar, optimizar y distribuir juegos increíbles.
Consulta d.android.com/games para aprender sobre todo lo que hemos cubierto esta semana y mucho más, y mantente al día inscribiéndote para recibir el boletín informativo trimestral sobre juegos.
En Android Studio 4.1, mejoramos la vista System Trace de CPU Profiler y agregamos Native Memory Profiler, y ahora ambas funciones pueden lanzarse de forma independiente de Android Studio. Las entradas de blog de System Trace y Native Memory tienen más detalles sobre cómo usar esas funciones con tu juego o app.
Puedes registrarte a fin de recibir las vistas previas para desarrolladores de la Android Game Development Extension y Android GPU Inspector. La Android Game Development Extension ayuda a diseñar juegos multiplataforma en C/C++, mientras que GPU Inspector se utiliza para perfilar y depurar gráficos. Estate atento a la versión Beta abierta de Android GPU Inspector.
Nos enfocamos profundamente en Android Performance Tuner y explicamos anotaciones, niveles de calidad y parámetros de fidelidad, además de algunas prácticas recomendadas para utilizar esos recursos. Una vez que hayas implementado eso, también cubrimos cómo usar las nuevas estadísticas y datos de análisis que obtendrás dentro de Android Vitals.
Mostramos cómo Google Play Asset Delivery lleva los beneficios de los paquetes de apps a juegos con tamaños de activos más grandes, modos de entrega flexibles, actualizaciones automáticas, compresión y parches delta. El formato de compresión de texturas de destino estará disponible muy pronto y te permitirá aprovechar la compresión de texturas moderna como ASTC (ahora compatible en más del 50% de los dispositivos) para que puedas reducir considerablemente el tamaño de tu juego y la huella en la memoria.
Publicamos codelabs nuevos para ayudarte a integrar Android Performance Tuner y Google Play Asset Delivery en tu juego de Unity o C/C++ nativo.
Te explicamos cómo podemos ayudar a proteger tu juego, los jugadores y tu negocio luchando contra el abuso de distribución y monetización.
Lanzamos la versión Beta abierta de Play Games Services - Friends para ayudarte a crear y mejorar tus redes de amigos dentro de juegos mientras tus títulos aparecen en nuevos clústeres de la app de Play Games.
Demostramos la experiencia de administración de versiones nuevas en Google Play Console Beta e indicamos cómo puede contribuir a tu flujo de trabajo de prueba y publicación.
La instalación automática en el primer día es una nueva función de Google Play que permite a los usuarios solicitar la instalación automática de tu juego durante el período de prerregistro. Los primeros experimentos muestran un aumento de más del 20% en las instalaciones del día uno cuando se usa esta función. El nuevo menú de prerregistro de Google Play Console Beta facilita más que nunca el acceso a esta función.
Mostramos cómo optimizar la página de la ficha de tienda para aprovechar la experiencia visual mejorada de juegos dentro de Google Play mediante gráficos de juegos y videos atractivos.
La nueva API de opiniones integradas en la app te permite elegir cuándo pedir a los usuarios que escriban opiniones desde tu juego, sin necesidad de que regresen a la página de detalles de la app. La API admite opiniones públicas y privadas para la fase Beta de tu app.
Si estás buscando una manera fácil de conocer lo más destacado de esta semana, echa un vistazo a la vía de aprendizaje de juegos, contenido multimedia y 5G. Una vía de aprendizaje es un instructivo ordenado que permite a los usuarios completar un módulo predefinido que culmina en un examen. Incluye videos y entradas de blog. Se otorga una insignia virtual a cada usuario que aprueba el examen. Pon a prueba tus conocimientos sobre las conclusiones clave del desarrollo de juegos para Android, contenido multimedia y 5G a fin de ganar una insignia de edición limitada.
Gracias por mantenerte al tanto y enterarte de lo último en el desarrollo de juegos para Android, contenido multimedia y 5G.
Transferencias fluidas y reanudación de contenido multimedia
API de MediaRouter (muestra de UAMP)
5G
API de estimación de ancho de banda
Detección de 5G (Android Emulator)
Marca de medición
Funciones disponibles en Android Studio 4.1 (canal Beta)
System Trace en CPU Profiler de Android Studio
Native Memory Profiler de Android Studio
Herramientas independientes previas al lanzamiento
Android Game Development Extension
Android GPU Inspector.
Funciones de Android Game SDK
Android Frame Pacing Library
Android Performance Tuner (codelab de C/C++) (codelab de Unity)
Funciones de Google Play
Play Asset Delivery (codelab de C/C++) (codelab de Unity)
API de opiniones integradas en la app
Licencia de apps
API de Attestation de SafetyNet
Prerregistro
Google Play Games Services
Play Games Services Friends Beta
Puedes encontrar la lista de reproducción completa del contenido de video de #11WeeksOfAndroid aquí y obtener más información sobre cada semana aquí. Seguiremos hablando sobre nuevas áreas destacadas cada semana, así que mantente al tanto y síguenos en Twitter y YouTube. Muchas gracias por dejarnos ser parte de esta experiencia contigo.
Hay decenas de millones de conjuntos de datos en la Web, con contenidos que van desde datos de sensores y registros gubernamentales hasta resultados de experimentos científicos e informes comerciales. De hecho, hay conjuntos de datos para casi cualquier cosa que uno pueda imaginar, ya sea la dieta de un pingüino emperador o dónde viven los trabajadores remotos. Hace más de dos años, emprendimos un esfuerzo para diseñar un motor de búsqueda que proporcionara un único punto de entrada a esos millones de conjuntos de datos y miles de repositorios. El resultado es Dataset Search, que lanzamos en versión Beta en 2018 y de forma completa en enero de 2020. Además de facilitar el acceso a datos, Dataset Search recopila e indexa conjuntos de datos utilizando descripciones de metadatos que provienen directamente de las páginas web de los conjuntos de datos mediante la estructura schema.org.
Hasta el día de hoy, el corpus completo de Dataset Search contiene más de 31 millones de conjuntos de datos de más de 4600 dominios de Internet. Aproximadamente la mitad de esos conjuntos de datos provienen de dominios .com, pero los dominios .org y gubernamentales también están bien representados. El siguiente gráfico muestra el crecimiento del corpus en los últimos dos años y, aunque todavía no sabemos qué fracción de los conjuntos de datos de la Web están actualmente en Dataset Search, el número sigue creciendo de forma constante.
Para comprender mejor la amplitud y la utilidad de los conjuntos de datos disponibles a través de Dataset Search, publicamos Google Dataset Search by the Numbers, una investigación aceptada en la 2020 International Semantic Web Conference. En ese documento, proporcionamos una descripción general de los conjuntos de datos disponibles, las métricas presentes y las estadísticas derivadas de su análisis, y sugerimos las prácticas recomendadas para la publicación de futuros conjuntos de datos científicos. A fin de que otros investigadores puedan elaborar análisis y herramientas utilizando los metadatos, también estamos poniendo a disposición del público un subconjunto de datos.
Una gama de temas de conjuntos de datos Para determinar la distribución de los temas cubiertos por los conjuntos de datos, inferimos la categoría de investigación a partir de los títulos y las descripciones de los conjuntos de datos, así como de otros textos en las páginas web de los conjuntos de datos. Los dos temas más comunes son las geociencias y las ciencias sociales, que representan aproximadamente el 45% de los conjuntos de datos. La biología se acerca como tercera opción, con aproximadamente el 15%, seguida por una distribución más o menos pareja de otros temas, como la informática, la agricultura y la química, entre otros.
En nuestros esfuerzos iniciales por lanzar Dataset Search, llegamos a comunidades específicas, lo que fue clave para impulsar el uso generalizado del corpus. Inicialmente, nos centramos en las geociencias y las ciencias sociales, pero desde entonces hemos permitido que el corpus crezca orgánicamente. Nos sorprendió ver que los campos asociados a las comunidades a las que llegamos desde el principio siguen dominando el corpus. Si bien no hay duda de que su participación temprana contribuye a su prevalencia, puede haber otros factores en juego, como las diferencias culturales entre las comunidades. Por ejemplo, las geociencias han contribuido considerablemente a que sus datos sean fáciles de localizar, accesibles, interoperables y reutilizables (FAIR), un componente esencial para reducir las barreras de acceso.
Cómo hacer que los datos sean fácilmente citables y reutilizables Entre los investigadores de todas las disciplinas científicas, cada vez es más frecuente el consenso de que es importante poner a disposición los conjuntos de datos, publicar los detalles pertinentes para su utilización y citarlos cuando se utilicen. Muchos organismos de financiación y publicaciones académicas exigen que los datos se publiquen y se citen de forma correcta.
Revistas revisadas por expertos, como Nature Scientific Data, se dedican a publicar valiosos conjuntos de datos y esfuerzos como DataCite proporcionan identificadores de objetos digitales (DOI) para ellos. Los servicios de resolución (p. ej., identifiers.org) también proporcionan identificadores persistentes y sin referencias para citarlos de forma sencilla, lo que es fundamental para que los conjuntos de datos estén ampliamente disponibles en el discurso científico. Por desgracia, descubrimos que solo alrededor del 11% de los conjuntos de datos del corpus (aproximadamente 3M) tienen DOI. Elegimos este subconjunto del corpus de datos para incluirlo en nuestra versión de código abierto. De esta colección, unos 2,3M de conjuntos de datos provienen de dos sitios: datacite.org y figshare.com:
Los publicadores pueden especificar los requisitos de acceso para un conjunto de datos mediante las propiedades de los metadatos de schema.org, incluidos los detalles de licencia e información que indique si el conjunto de datos es accesible de forma gratuita. Solo el 34% de los conjuntos de datos especifican la información de la licencia; pero, cuando no se especifica ninguna licencia, los usuarios no pueden hacer ninguna suposición sobre si se les permite o no reutilizar los datos. Por lo tanto, agregar información sobre licencias, e, idealmente, agregar una licencia lo más abierta posible, mejorará en gran medida la reutilización de los datos.
Entre los conjuntos de datos que sí especificaron una licencia, pudimos reconocer una licencia conocida en el 72% de los casos. Entre esas licencias, se incluyen licencias Open Government para el Reino Unido y Canadá, licencias de Creative Commons y varias licencias de dominio público (p. ej., Public Domain Mark 1.0). Descubrimos que el 89,5% de esos conjuntos de datos son accesibles gratuitamente o utilizan una licencia que permite su redistribución, o bien ambas cosas. Y, de esos conjuntos de datos abiertos, 5,6M (el 91%) permiten la reutilización comercial.
Otro componente crítico de la reutilización de los datos es proporcionar datos descargables, pero solo el 44% de los conjuntos de datos especifican información de descarga en sus metadatos. Una posible explicación de este valor sorprendentemente bajo es que los webmasters (o las plataformas de hosting de datos) temen que, al exponer el vínculo de descarga de datos a través de los metadatos de schema.org, los motores de búsqueda u otras aplicaciones den a sus usuarios acceso directo para que descarguen los datos y, así, "roben" el tráfico de su sitio web. Otra preocupación puede ser que los datos necesiten el contexto adecuado para ser utilizados apropiadamente (p. ej., la metodología, las notas a pie de página y la información sobre licencias), y que los proveedores consideren que solo sus páginas web pueden brindar el panorama completo. En la búsqueda de conjuntos de datos, no mostramos los vínculos de descarga como parte de los metadatos, de modo que los usuarios deben ir al sitio web del publicador para descargar los datos, donde verán el contexto completo del conjunto de datos.
¿A qué acceden los usuarios? Por último, examinamos cómo se utiliza Dataset Search. En términos generales, 2,1M de conjuntos de datos únicos de dominios de 2,6K aparecieron en los 100 principales resultados de Dataset Search durante 14 días en mayo de 2020. Descubrimos que la distribución de los temas que se cuestionan es diferente a la del conjunto del corpus. Por ejemplo, las geociencias ocupan una fracción mucho menor y, a la inversa, la biología y la medicina representan una fracción mayor en relación con su participación en el corpus. Es posible que este resultado se deba al momento en que se llevó a cabo nuestro análisis, ya que se realizó durante las primeras semanas de la pandemia de COVID-19.
Prácticas recomendadas para la publicación de conjuntos de datos científicos Basándonos en nuestro análisis, hemos identificado un conjunto de prácticas recomendadas que pueden mejorar la forma en que se descubren, reutilizan y citan los conjuntos de datos.
Visibilidad Los metadatos de los conjuntos de datos deben estar en páginas que sean accesibles para los rastreadores web y que proporcionen metadatos en formatos legibles por máquina a fin de mejorar la capacidad de visibilidad.
Persistencia La publicación de metadatos en sitios que probablemente sean más persistentes que las páginas web personales facilitará la reutilización y la citación de datos. De hecho, durante nuestro análisis de Dataset Search, observamos una tasa de rotación muy alta: muchas URL que albergaban un conjunto de datos un día no lo tenían unas semanas o meses después. Los repositorios de datos, como Figshare, Zenodo, DataDryad, Kaggle Datasets y muchos otros, son una buena manera de garantizar la persistencia del conjunto de datos. Muchos de esos repositorios tienen acuerdos con bibliotecas para preservar los datos a perpetuidad.
Procedencia Dado que los conjuntos de datos suelen publicarse en varios repositorios, sería útil que estos describieran la información sobre la procedencia de manera más explícita en los metadatos. La información sobre la procedencia ayuda a los usuarios a comprender quién recopiló los datos, dónde se encuentra la fuente principal del conjunto de datos o cómo puede haber cambiado.
Licencias Los conjuntos de datos deben incluir información sobre la licencia, idealmente en un formato legible por máquina. Nuestro análisis indica que, cuando los proveedores de conjuntos de datos seleccionan una licencia, tienden a elegir una bastante abierta. Por lo tanto, alentar y permitir a los científicos elegir las licencias para sus datos dará lugar a que muchos más conjuntos de datos estén disponibles abiertamente.
Cómo asignar identificadores persistentes (como los DOI) Los DOI son fundamentales para el seguimiento y la utilización a largo plazo. Esos identificadores no solo permiten una citación mucho más fácil de los conjuntos de datos y el seguimiento de las versiones, sino que también son indeferenciables: si se mueve un conjunto de datos, el identificador puede dirigir a una ubicación diferente.
Cómo lanzar metadatos para conjuntos de datos con identificadores persistentes Como parte del anuncio de hoy, también lanzamos un subconjunto de nuestro corpus para que otros lo usen. Contiene los metadatos de más de tres millones de conjuntos de datos que tienen DOI y otros tipos de identificadores persistentes, que son los conjuntos de datos más fácilmente citables. Los investigadores pueden utilizar esos metadatos para realizar análisis más profundos o diseñar sus propias aplicaciones utilizando esos datos. Por ejemplo, gran parte del crecimiento del uso de DOI parece haber ocurrido en la última década. ¿Cómo se relaciona este marco temporal con los conjuntos de datos cubiertos en el corpus? ¿La distribución del uso de DOI es uniforme en todos los conjuntos de datos? ¿O hay diferencias significativas entre las comunidades de investigación?
Actualizaremos el conjunto de datos de forma regular. Por último, esperamos que el hecho de centrar este lanzamiento en conjuntos de datos con identificadores citables y persistentes anime a más proveedores a describir sus conjuntos de datos con más detalle y a hacerlos más fácilmente citables.
En conclusión, esperamos que el hecho de tener datos más visibles a través de herramientas como Dataset Search de Google anime a los científicos a compartir sus datos más ampliamente y hacerlo de manera que los datos cumplan con las cualidades de FAIR.
Agradecimientos. Esta publicación refleja el trabajo de todo el equipo de Dataset Search. Agradecemos a Shiyu Chen, Dimitris Paparas, Katrina Sostek, Yale Cong, Marc Najork, y Chris Gorgolewski por sus contribuciones. También queremos agradecer a Hal Varian por sugerir este análisis y por brindar muchas ideas útiles.
Publicado por Stephanie Cuthbertson, directora de Administración de Productos
¡Ya llegó Android 11! Hoy mismo incorporaremos la fuente del Proyecto de código abierto de Android (AOSP) y publicaremos oficialmente la versión más reciente de Android. Desarrollamos Android 11 en torno a tres temas: un enfoque de comunicación centrado en las personas, controles que permiten a los usuarios acceder rápidamente a sus dispositivos inteligentes y controlarlos, y privacidad para que los usuarios tengan más formas de administrar el intercambio de datos en los dispositivos. Puedes obtener más información en nuestra entrada de Keyword.
Android 11 ofrece un sinfín de capacidades nuevas para los desarrolladores. Te recomendamos echar un vistazo a las notificaciones de conversaciones, los controles multimedia y del dispositivo, los permisos por única vez, la compatibilidad mejorada con 5G, las transiciones del IME y mucho más. Para ayudarte a trabajar y desarrollar más rápido, también agregamos herramientas nuevas, como las funciones de compatibilidad que se pueden activar o desactivar, las instalaciones incrementales de ADB, la API de motivos de cierre de la app, la API de auditoría de acceso a datos, las anotaciones de nulabilidad de Kotlin y muchas otras. Trabajamos duro para que Android 11 sea una gran versión y estamos ansiosos por ver las compilaciones que realizarás.
La versión oficial de Android 11 ya está disponible en dispositivos Pixel 2, 3, 3a, 4 y 4a, y llegará a más dispositivos próximamente. Para empezar, visita el sitio para desarrolladores de Android 11.
Android 11 nos permite centrarnos en las personas y ser expresivos, ya sea renovando la forma en que tenemos conversaciones en nuestros teléfonos o creando un SO que pueda reconocer y priorizar a las personas más importantes de nuestras vidas. Para los desarrolladores, Android 11 permite crear interacciones conversacionales y personales más profundas en las apps.
Cuadros y conversaciones centradas en las personas.
Android 11 permite a los usuarios acceder rápidamente a sus dispositivos inteligentes y controlarlos en un solo lugar. Los desarrolladores pueden usar las API nuevas para ayudar a los usuarios a tener acceso a los dispositivos inteligentes y controlar el contenido multimedia:
Controles multimedia y del dispositivo.
Con Android 11, queremos aportar a los usuarios más control y transparencia respecto de los permisos sensibles. Además, estamos trabajando para aumentar la seguridad de los dispositivos mediante actualizaciones más rápidas.
Permisos por única vez: ahora, los usuarios pueden otorgar a una app acceso al micrófono, a la cámara o a la ubicación del dispositivo por única vez. La app deberá pedir permiso de nuevo la próxima vez que se use. Obtén más información aquí.
Subtítulo: Diálogo del permiso por única vez en Android 11.
Ubicación en segundo plano: a partir de ahora, no basta con que el usuario otorgue un permiso de tiempo de ejecución, sino que debe realizar otros pasos. Si tu app necesita una ubicación en segundo plano, el sistema se asegurará de que tú preguntes primero por la ubicación en primer plano. Luego, podrás ampliar el acceso a la ubicación en segundo plano mediante otra solicitud de permiso y el sistema mostrará al usuario la configuración para que otorgue dicha solicitud.
También es importante recordar que, en febrero, anunciamos que los desarrolladores de Google Play necesitarán obtener la aprobación de los usuarios a fin de que su app acceda a la ubicación en segundo plano y evitar el mal uso de ese servicio. Los desarrolladores tendrán más tiempo para hacer cambios y no haremos cumplir la política para las apps existentes hasta 2021. Obtén más información aquí.
Restablecimiento automático de permisos: si los usuarios no utilizan una app durante un período prolongado, Android 11 “restablecerá automáticamente” todos los permisos de tiempo de ejecución asociados a la app y notificará al usuario. La app deberá pedir permiso de nuevo la próxima vez que se use. Obtén más información aquí.
Almacenamiento definido: seguimos trabajando para mejorar la protección de los datos de apps y usuarios en el almacenamiento externo; además, implementamos mejoras adicionales para ayudar a los desarrolladores a realizar la migración más fácilmente. Obtén más información aquí.
Actualizaciones del sistema de Google Play: estas actualizaciones, lanzadas el año pasado, nos ayudan a agilizar las actualizaciones de los componentes centrales del SO para los dispositivos del ecosistema Android. En Android 11, hemos aumentado a más del doble la cantidad de módulos actualizables, lo que incluye doce nuevos módulos que ayudarán a los usuarios y a los desarrolladores a tener más privacidad, seguridad y coherencia.
API de BiometricPrompt: ahora, los desarrolladores pueden usar la API de BiometricPrompt a fin de especificar el nivel de autenticación biométrica que requiere su app para desbloquear partes sensibles o acceder a ellas. En cuanto a la compatibilidad con versiones anteriores, agregamos estas capacidades a la biblioteca Jetpack Biometric. Publicaremos más novedades a medida que avancemos.
API de Identity Credential: esta API admitirá nuevos casos de uso, como licencias de conducir o documentos de identidad nacionales o digitales para dispositivos móviles. Estamos trabajando con varias agencias gubernamentales y socios de la industria a fin de asegurarnos de que Android 11 esté listo para experiencias de identidad digital.
Obtén aquí toda la información que necesites sobre las funciones de privacidad de Android 11.
Compatibilidad mejorada con 5G: Android 11 incluye compatibilidad actualizada para que los desarrolladores aprovechen la mayor velocidad y el menor nivel de latencia de las redes 5G. Puedes saber cuándo el usuario se conecta a una red 5G, verificar si la conexión es de uso medido y obtener un valor estimado del ancho de banda. A fin de ayudarte a desarrollar experiencias para 5G, también agregamos compatibilidad con 5G en Android Emulator. Si deseas empezar a usar 5G en Android, visita la página para desarrolladores de 5G.
Subtítulo: fuera de casa, la tecnología 5G puede permitirte mejorar tu experiencia, por ejemplo, mediante interacciones fluidas con el mundo que te rodea, desde amigos y familiares hasta negocios.
Nuevos tipos de pantallas: los fabricantes de dispositivos siguen innovando con la introducción al mercado de nuevas pantallas, como las perforadas y en cascada. Android 11 incorpora compatibilidad con estas novedades en la plataforma mediante API que te permiten optimizar tus apps. Puedes usar las API de corte de pantalla actuales para estos dos tipos de pantallas. Puedes definir un nuevo atributo de diseño de ventana para usar toda la pantalla en cascada y la nueva API de inserciones en cascada te ayuda con las interacciones cerca de los bordes.
Compatibilidad con filtración de llamadas: Android 11 permite que las apps de filtración de llamadas hagan algo más que administrar llamadas automáticas. Las apps pueden verificar el estado STIR/SHAKEN de una llamada entrante (estándares que protegen contra el spoofing de ID de llamadas) como parte de los detalles de la llamada y, además, pueden informar el motivo del rechazo de una llamada. También pueden personalizar una pantalla posterior a la llamada que proporciona el sistema, la cual permite a los usuarios realizar acciones; por ejemplo, identificar llamadas como spam o agregar el número a los contactos.
Resiliencia del SO: el SO Android 11 es más dinámico y resiliente en su conjunto gracias a la optimización de los procesos de recuperación de memoria, como la ejecución forzosa de reinicios imperceptibles para el usuario de procesos basados en umbrales HWM de RSS. Además, para aumentar el rendimiento y la memoria, Android 11 incorpora el almacenamiento en caché de Binder, que optimiza las llamadas más frecuentes de IPC a los servicios del sistema. Para hacerlo, almacena en caché la información de aquellas llamadas que recuperan datos relativamente estáticos. El almacenamiento en caché de Binder también reduce el tiempo de CPU, lo que aumenta la duración de la batería.
Transiciones sincronizadas del IME: Las nuevas API permiten sincronizar el contenido de tu app con el IME (editor de método de entrada, también conocido como teclado en pantalla) y las barras del sistema mientras aparecen y desaparecen animadas en la pantalla. Esto facilita mucho la creación de transiciones del IME intuitivas y fluidas. Para lograr transiciones perfectas de fotogramas, una nueva API WindowInsetsAnimation.Callback informa a las apps sobre cambios de las inserciones por fotograma mientras las barras del sistema o el IME se animan. Además, puedes usar la nueva API WindowInsetsAnimationController para controlar los tipos de IU del sistema, como las barras del sistema, el IME, el modo envolvente y muchos más. Obtén más información aquí.
Transición sincronizada del IME a través del receptor de animación de inserciones.
Experiencia del IME controlado por la app a través de WindowInsetsAnimationController.
Elementos de diseño HEIF animados: La API ImageDecoder ahora permite decodificar y reproducir secuencias de imágenes animadas almacenadas en archivos HEIF de modo que puedas aprovechar activos de alta calidad mientras minimizas el impacto en los datos de red y el tamaño del APK. Las secuencias de imágenes HEIF pueden reducir drásticamente el tamaño de los archivos de secuencias de imágenes en comparación con los GIF animados.
Decodificador nativo de imágenes: Las nuevas API de NDK permiten que las apps decodifiquen y codifiquen imágenes (como JPEG, PNG o WebP) a partir de código nativo para los gráficos o el posprocesamiento. Como no hace falta agrupar una biblioteca externa, se mantiene un tamaño de APK más pequeño. El decodificador nativo también saca provecho del proceso de Android relativo a las actualizaciones de seguridad continuas de la plataforma. Consulta el ejemplo de código de NDK para conocer cómo se usan las API.
Decodificación de video con nivel bajo de latencia en MediaCodec: El video con nivel bajo de latencia es esencial para las apps de transmisión de video por Internet en tiempo real y para servicios como Stadia. Los códecs de video compatibles con el nivel bajo de latencia en la reproducción devuelven el primer marco de la transmisión lo más rápido posible después de que se inicia la decodificación. Las apps pueden usar las API nuevas para comprobar y configurar el nivel bajo de latencia en la reproducción de un códec específico.
Frecuencia de actualización variable: Las apps y los juegos ahora pueden usar una API nueva a fin de establecer una velocidad de fotogramas preferida para sus ventanas. Casi todos los dispositivos Android actualizan la pantalla a una frecuencia de actualización de 60 Hz, pero algunos admiten varias frecuencias de actualización con el cambio de entornos de ejecución, como 90 Hz y 60 Hz. En estos dispositivos, el sistema usa la velocidad de fotogramas preferida de la app para elegir la mejor frecuencia de actualización. La API está disponible en el SDK y el NDK. Obtén información más detallada aquí.
Cargador de recursos dinámicos: Android 11 incluye una nueva API pública que permite a las apps cargar recursos y activos de forma dinámica durante el tiempo de ejecución. Con el marco de trabajo del cargador de recursos, puedes incluir un conjunto básico de recursos en tu app o juego y, después, cargar otros recursos o modificar los que cargaste (si hace falta) durante el tiempo de ejecución.
API de Neural Networks (NNAPI) 1.3: Seguimos agregando operaciones y controles relativos al aprendizaje automático en dispositivos Android. Para optimizar los casos de uso comunes, NNAPI 1.3 agrega una serie de API para la prioridad y el tiempo de espera, los dominios de memoria y la fila de comandos asíncronos. Las nuevas operaciones para modelos avanzados incluyen la cuantización asimétrica de valores enteros firmados, las ramificaciones y los bucles, y la función hard-swish op que ayuda a acelerar los modelos visuales de última generación en los dispositivos, como MobileNetV3.
Motivos de cierre de apps: En los diferentes tipos de dispositivos, configuraciones de memoria y situaciones de los usuarios en los que se ejecuta tu app, es importante entender por qué se cerró y cuál era el estado en ese momento. Android 11 permite descubrir esto más fácilmente gracias a la API de motivos de cierre, que puedes usar para solicitar detalles de los cierres recientes de tu app.
Auditoría de acceso a datos: La auditoría de acceso a datos te permite instrumentar tu app para comprender mejor cómo accede a los datos de los usuarios y desde qué flujos. Por ejemplo, puede ayudarte a identificar cualquier acceso inadvertido a datos privados de tu propio código o dentro de cualquier SDK que puedas estar utilizando. Obtén más información aquí.
ADB incremental: Instalar APK muy grandes con ADB (Android Debug Bridge) durante el desarrollo puede ser un proceso lento y afectar la productividad, especialmente la de aquellos desarrolladores que trabajan en juegos para Android. Con ADB incremental en Android 11, instalar APK grandes (de más de 2 GB) desde una computadora de desarrollo en un dispositivo con Android 11 es hasta 10 veces más rápido. Obtén más información aquí.
Anotaciones de nulabilidad de Kotlin: Android 11 agrega anotaciones de nulabilidad a más métodos en la API pública. Además, cambia de advertencias a errores algunas de las anotaciones actuales. Gracias a esto, puedes detectar problemas de nulabilidad en el momento de compilar en vez de hacerlo durante el tiempo de ejecución. Obtén más información aquí.
Ahora que Android 11 está llegando a los dispositivos, es momento de que termines tus pruebas de compatibilidad y publiques las actualizaciones.
Estos son algunos de los cambios en el comportamiento a los que debes prestar atención (independientemente de la targetSdkVersion de tu app):
Android 11 también incluye cambios de comportamiento opcionales que afectarán tu app una vez que la actualices a la nueva plataforma. Te recomendamos evaluar estos cambios apenas publiques la versión compatible de tu app. Para obtener más información sobre pruebas y herramientas de compatibilidad, consulta estos recursos que compartimos durante la semana de compatibilidad con Android 11 y visita el sitio para desarrolladores de Android 11 a fin de conocer los detalles técnicos.
Cuando tengas todo listo, explora Android 11 y obtén información sobre las nuevas funciones y API que puedes usar. Veamos algunas de las funciones principales con las que puedes comenzar.
Recomendamos las siguientes funciones para todas las apps:
Recomendamos las siguientes funciones si son relevantes para tu app:
Obtén más información sobre todas las funciones de Android 11 en developer.android.com/11.
Android 11 comenzará a implementarse hoy mismo en teléfonos Pixel, OnePlus, Xiaomi, OPPO y realme seleccionados. En los próximos meses, más socios lanzarán y actualizarán sus dispositivos. Si tienes un teléfono Pixel 2, 3, 3a, 4 o 4a, incluso aquellos inscritos en el programa beta de este año, pronto podrás acceder a una actualización inalámbrica.
Las imágenes de fábrica del sistema Android 11 para dispositivos Pixel también están disponibles en Android Flash Tool o puedes descargarlas desde aquí. Como siempre, puedes conseguir las imágenes del sistema Android Emulator más actualizadas mediante el administrador de SDK en Android Studio. Si quieres hacer más pruebas en otros dispositivos compatibles con Treble, puedes obtener aquí imágenes genéricas del sistema (GSI).
Si buscas el código fuente de Android 11, lo encontrarás aquí en el repositorio del Proyecto de código abierto de Android, en las ramas de Android 11.
Pronto cerraremos el seguimiento de problemas de versiones preliminares y retiraremos los errores pendientes relativos a las versiones beta o de vista previa para desarrolladores, pero es importante que sigas enviando tus comentarios. Si continúas observando un problema que registraste en el seguimiento de versiones preliminares, simplemente registra un nuevo problema para Android 11 en el seguimiento de problemas del AOSP.
Les damos las gracias nuevamente a todos los desarrolladores y usuarios pioneros que formaron parte del programa de vista previa este año. Sus comentarios fueron muy importantes para dar forma a esta versión y los miles de problemas registrados sirvieron para que Android 11 sea una mejor plataforma para todos.
¡Esperamos ver tus apps en Android 11!
Te damos la bienvenida a Now in Android, una guía que actualizamos constantemente con las novedades más importantes sobre el desarrollo de Android.
Esta edición de Now in Android también se ofrece en formato de video y podcast. El mismo contenido, pero menos lectura. En el formato de artículo (¡continúa leyendo!), seguirás encontrando los vínculos de todo el contenido que se trata.
Haz clic en el vínculo de abajo o suscríbete al podcast en tu app cliente favorita.
Dave Burke anunció el lanzamiento beta 3 en el blog para desarrolladores de Android. Esta versión no tiene ninguna función nueva importante relacionada con cambios de comportamiento. Esto ya se sabía, dado que la versión beta 2 fue el hito de estabilidad de la plataforma y en ese momento se establecieron el comportamiento y las API. En cambio, la versión beta 3 (versión beta final y compilación de versión candidata para Android 11) se centró en la corrección de errores y en la optimización del rendimiento a medida que la versión se prepara para el lanzamiento final, que será dentro de muy pronto.
Echa un vistazo al lanzamiento en el sitio de la versión preliminar, donde puedes leer sobre todas las nuevas funciones y descargar la imagen del sistema. También puedes registrarte para recibir versiones beta en dispositivos Pixel (2, 3, 3a y 4).
Estamos llegando al final de una edición de 11 semanas de Android cargada de contenido. Desde el último episodio de Now in Android, terminamos con las herramientas de desarrollo de Android, abarcamos la distribución de apps y la monetización y luego dedicamos una semana a Android más allá de los teléfonos. Esta semana nos ocuparemos de los juegos y del contenido multimedia, y después de esto solo quedará una semana más. Así es como podrás averiguar más sobre cada uno de los temas.
La séptima semana se centró en las partes de Android Studio que deberías usar para que los procesos de desarrollo y depuración de aplicaciones sean mejores y mucho más sencillos.
El equipo publicó un montón de contenido esa semana, incluidos videos y artículos sobre herramientas de diseño, artículos sobre el sistema de compilación y métodos para mejorar la velocidad de compilación y la generación de perfiles de rendimiento. Además, la nueva herramienta de edición de movimiento se estabilizó en Android 4.0 esa semana. Por ello, si aún no has tenido la oportunidad de echar un vistazo este podría ser un buen momento para hacerlo.
Puedes encontrar todos los recursos de esta semana vinculados desde la entrada de blog de resumen. También hay una ruta de aprendizaje que aborda algunos de los contenidos centrales y una lista de reproducción de los videos publicados durante la semana.
Esta semana hubo una avalancha de contenido sobre el uso de la tecnología de Play Store para ayudar a mejorar el desarrollo y la distribución de aplicaciones. Los temas de esta semana fueron desde seminarios web sobre el uso de la nueva versión de Google Play Console hasta Play Billing Library 3 y Android App Bundles.
Este último elemento merece una mención especial. Tras bastante tiempo desde el lanzamiento de los paquetes de aplicaciones, el equipo exige que, a partir de la segunda mitad de 2021, todas las apps nuevas que se publiquen en Play Store usen Android App Bundles (no solo APK). Puedes leer más sobre este cambio y los cambios relacionados, como la baja de los archivos de expansión de APK (OBB), en este artículo de Medium.
Consulta esta entrada de blog de resumen para ver todos los detalles y vínculos a videos y artículos. También están disponibles esta ruta de aprendizaje práctica y la lista de reproducción de todos los videos de la semana.
La novena semana se centró en todos los factores de forma de Android que no son teléfonos. Resulta que hay muchas de esas cosas. Hubo artículos y videos sobre Wear OS, Android TV y Android Auto, además de la implementación de Android para el sistema operativo Chrome.
Consulta la entrada de blog de resumen para ver los detalles y vínculos al contenido de la semana, junto con la lista de reproducción de los videos.
Esta semana consiste en desarrollar juegos y apps multimedia, con algunos artículos y videos ya publicados y otros por lanzarse.
Para principiantes, @Greg Hartrell publicó What’s New for Game Developers. Echa un vistazo al feed de @AndroidDev #11WeeksOfAndroid para descubrir contenido nuevo a medida que lo publicamos esta semana. También revisa la lista de reproducción de videos para explorar más contenido y consulta la entrada de blog de cierre al final de la semana.
La próxima semana, la número 11, permanece atento al contenido sobre IU. En caso de que estés contando, ¡¡¡es LA ÚLTIMA SEMANA DE #11WeeksOfAndroid!!!
Los encuentros en línea de los que hablé la última vez han continuado a buen ritmo; se realizaron eventos en todo el mundo. Por ejemplo, el lunes me uní a Murat Yener, Yacine Rezgui y Fred Chung en un evento en Nairobi (¡muchas horas de viaje!), y el jueves estaré con Fred de nuevo en un evento en Memphis. Espero estar acumulando muchas millas de viajero frecuente con todos estos viajes.
Echa un vistazo al sitio de encuentros de Android 11 para participar en uno cerca de tu ubicación.
Ian Lake publicó un artículo detallado sobre las mejoras recientes en los fragmentos. Hay una nueva versión Alfa de la biblioteca de fragmentos de AndroidX, pero el artículo va mucho más allá para hablar del estado histórico y actual de la API de Fragments. (Nota: Si todavía estás usando la API de Fragments de la plataforma..., ¡detente! Esa API está desactualizada. En su lugar, deberías estar usando AndroidX Fragments, que está mucho más actualizada, con todas las funcionalidades y correcciones en muchas versiones de Android).
El principal cambio de este lanzamiento es la casi completa refactorización de la forma en que FragmentManager funciona internamente, lo que hace posible que los fragmentos eviten algunos de los problemas relacionados con el estado que han perseguido a la API a lo largo de los años. Esa reestructuración también permitió solucionar una gran cantidad de problemas de larga data.
Este trabajo sirve como base para futuras mejoras, incluido el apoyo a múltiples pilas traseras y la simplificación del ciclo de vida de Fragment.
Consulta el artículo para ver todos los detalles y descarga la versión más reciente de Fragment 1.3.0 (alpha08 o versiones posteriores) para probar las novedades.
Fragments: cómo recompilar elementos internos
Wojtek Kaliciński publicó una entrada de blog sobre el reciente lanzamiento (1.4) de Kotlin. Algunas de las nuevas funciones de esta versión incluyen conversiones SAM para interfaces Kotlin (no solo interfaces en el lenguaje de programación Java, como antes), un modo de API explícito y mejoras en el rendimiento y la funcionalidad del compilador. Además, hay una versión Alfa del nuevo backend de Kotlin/JVM IR. Este nuevo backend se requiere para Jetpack Compose, pero es opcional en otros casos. Puedes habilitarlo con kotlinOptions.useIR = true en tu secuencia de comandos de compilación de gradle. Pruébalo y haznos saber si tienes algún problema.
Nuevas funciones de lenguaje y más en Kotlin 1.4
Como parte de la serie #11WeeksOfAndroid, hemos estado organizando sesiones de preguntas en Reddit. La primera fue con el equipo de la plataforma sobre Android 11 y luego tuvimos una sobre herramientas con las personas del equipo de Android Studio. La semana que viene, el 27 de agosto, presentaremos nuestra sesión final (por ahora) como parte de la semana de IU, donde responderemos preguntas sobre Android Jetpack, Jetpack Compose y cualquier otra cosa que se te ocurra y que podamos responder en el área general de IU (o que contenga la palabra "Jetpack").
La mejor parte de esta sesión de preguntas es que te estoy dando más que un aviso anticipado (las dos últimas ocurrieron justo en el momento en que se estaban publicando el video y el podcast de Now in Android, así que fue más un aviso de "¡Esto ocurrió!" que un aviso de "¡Por favor, únete a nosotros!"). Así que… ¡únete a nosotros!
Desde el último episodio de Now in Android, ha habido otro episodio de Android Developers Backstage. Escúchalo en el siguiente vínculo o en tu cliente de podcast favorito:
En esta ocasión, Romain Guy organizó por su cuenta esta conversación sobre la tecnología de los juegos con Greg Hartrell, gerente de producto para juegos de Play/Android, y Daniel Galpin, representante de desarrolladores para juegos de Android. Hablaron de los últimos desarrollos y ofertas para los desarrolladores de juegos (como el complemento de desarrollo de Android para Visual Studio), otras herramientas especializadas para los desarrolladores de juegos y nuevas ofertas del equipo como Android Asset Delivery y Android App Bundle para su distribución.
Episodio 146: el punto de inflexión
Eso es todo por hoy. ¡Echa un vistazo a Android 11 Beta 3! ¡Mira y lee todo el contenido nuevo de #11WeeksOfAndroid! ¡Únete a uno de los muchos encuentros de Android 11 en línea! ¡Lee artículos sobre Fragments y Kotlin 1.4! ¡Agrega algunas preguntas y únete a la discusión para la próxima sesión de preguntas de Reddit sobre IU de Android! ¡Escucha los episodios más recientes del podcast de ADB sobre juegos! Te esperamos pronto para ofrecerte más novedades desde el universo de desarrolladores de Android.
Now in Android #23 se publicó originalmente en Android Developers en Medium, donde las personas dan continuidad a la conversación destacando esta historia y emitiendo respuestas relacionadas con ella.