Cómo actualizar su agenda de contactos de g-mail en todos sus dispositivos


Algo que llevamos algunos años conservando que siempre nos ha acompañado en cada smartphone que hemos tenido han sido nuestros contactos que en efecto constituyen nuestra pequeña (o no tan pequeña) “Base de Datos” que llevamos años recopilando y editando, y que está en continuo crecimiento. Antiguamente, cuando no teníamos smartphones, nos preocupábamos de que todos nuestros contactos estuviesen guardados en la tarjeta SIM y no en el teléfono, ya que si lo perdíamos, se rompía o simplemente cambiábamos a otro, también dejaríamos de tener esos contactos. Por suerte, con los smartphones se ha llegado al punto de que no tenemos que preocuparnos por nada, puesto que podemos tener todos los contactos almacenados en la nube, pudiendo acceder a ellos desde cualquier lugar y dispositivo aunque a cambio en la otra cara de la moneda habremos perdido algo de privacidad(nadie nos asegura que no pueda ser leido por terceras personas ).

Gran culpa de este avance lo tiene la popularización de Android y la expansión de cuentas que los usuarios crean en GMail, ya que los contactos también se almacenan ahí. Automáticamente nuestros contactos pasan a estar disponibles desde la web de GMail, pulsando en el desplegable de Contactos,Desde ahí se puede hacer cualquier cambio, combinar, eliminar, crear, añadir campos a cualquier contacto, etcétera, y todo quedará reflejado automáticamente en nuestro teléfono gracias a la sincronización de Google.

Para acceder a los contactos desde nuestra cuenta de g-mail, acceder al correo de g-mail e ir al icono superior derecho ( suele estar la foto de nuestro perfil de google+)

contactos gmail

Ahora   vaya desde el recuadro central  de Informacion personal en “Tu informacion de cuenta

tuinfo

Ahora  nos vamos a “Vista  general  de cuenta”

vistagen

Ahora solo  hay que irse en la parte central a  “VER EL PANEL DE CONTROL”, tras lo cual nos pedira que volvamos a ingresar nuestra password de g-mail y en la lista qeu aparece , seleccionar Contactos  ( puede necesitar hacer scroll abajo en función de los productos de google que use)

contactos

En contactos , pinchar en “administrar contactos”

Es especialmente interesante la opción de combinar posibles duplicados de contactos pulsando  en el menu de  la izquierda  en el menú  “Buscar duplicados” y en los que aparezcan pulsar en “Combinar”

cont2

 

No lo dude , desde esta herramienta puede por fín poner orden a  su agenda desde una manera cómoda , segura y sencilla

Leer datos JSON desde App Inventor


App Inventor tiene un componente llamado Web que le da la funcionalidad de enviar y recuperar datos de un servidor o de un sitio web a través de solicitudes GET y POST   de modo que e ste componente puede decodificar tanto datos formateados en los formatos  JSON y HTML .

Vamos a mostrar  como funciona una aplicación llamada iRead que le pedirá al usuario que escriba el nombre completo o parcial de libros y consulte la base de datos de libros utilizando  el API de Google  Book  API  recuperando la información sobre el libro más relevante.

Para ello vamos a analizar el título y el autor del libro,  obtener la URL de la imagen de la portada del libro, y, finalmente, la dirección URL del libro que puede ser lanzado a través de un navegador.

En MIT App Inventor , lo primero es  construir su interfaz de usuario (UI) en la ventana del diseñador: ahi  se renombran nombres predeterminados de los componentes que  App Inventor proporciona.   Si usted está teniendo dificultades para el diseño de la interfaz de usuario, descargue el archivo de origen (iRead.aia) desde  la pagina de Descargas  y  eche un vistazo.   Lo que importa es que usted tenga todos los componentes esenciales
¿Ha tratado de ejecutar una solicitud de consulta sobre el Books API de google todavía?   Haga clic en el enlace de abajo para ver la respuesta del API.
Esto le dara una respuesta que es similar a esta:
Nuestra preocupación no es la información sobre el libro actual (Con el tiempo puede que no obtenga la misma información sobre el libro usando la misma consulta), nuestras preocupaciones son las fichas que vamos a necesitar para identificar y analizar los datos específicos.   Eche un vistazo a las fichas como  >que termina con una coma y una nueva línea, “autores”:  que termina con],  etc
Ahora vamos a empezar a definir las acciones e interacciones en el editor de bloques.
   Hemos definido tres variables globales
  • googleBookSearchURL – Ahí es donde almacenamos la dirección URL de la API de búsqueda de libros.
  • TempData  – Vamos a usarlo para guardar los datos temporales.
  • bookURL  – Ahí es donde vamos a analizar y almacenar la dirección URL (token “InfoLink”) de la información sobre el libro devuelto por la API.
Cuando un usuario introduce un nombre de libro y pulsa el botón Buscar, llamamos procedimiento GetBookInfo donde simplemente construimos nuestra URL con el texto introducido por el usuario y codificada para su uso como una URL, y, finalmente, alimentamos a la propiedad Url del componente Web.   Queremos conseguir una sola información sobre el libro (API puede devolver muchos);   así que utilizamos maxResults = 1.   Si no usamos la proyección = Lite, nos encontraremos con un montón de otra información que nosotros no vamos a utilizar en esta aplicaciónl.   Al final llamamos Web.get para ejecutar nuestra consulta.
¿Cómo sabemos cuando el servidor devuelve una respuesta a nuestra consulta?   Bueno, usamos bloque GotText del componente Web para esto.   Siempre que nuestra aplicación reciba algo, el bloque GotText se activará automáticamente para nosotros para validar y procesar los datos.   Vamos a analizar la respuesta JSON de la API que recibimos.  
       Sólo podemos proceder si responseCode es 200 lo que significa nuestra consulta no falló en el camino.   Tenemos otro procedimiento llamado ParseBookResult que realmente analiza la respuesta.   En el procedimiento ParseBookResult, dividimos el contenido de la respuesta utilizando la etiqueta inicial y la etiqueta final.   Por ejemplo, para analizar el título del libro, tenemos que saber el principio y los códigos de finalización de un título.   Si usted ha notado en la consulta, devuelve-
     “Title”:  “Harry Potter y la cámara de los secretos”,
   "autores": [ 
       "JK Rowling" 
      ],

Por lo que sabemos, comienza con “title”: y termina con una coma seguida de una nueva línea. Es por eso que hemos utilizado esas etiquetas cuando llamamos ParseBookResult de procedimiento GotText arriba. En nuestro ejemplo de datos en bruto, el valor es “potter Harry y la cámara de los secretos”. Entonces desciframos el valor JSON llamando JsonTextDecode de Web. Y finalmente descifrar los caracteres HTML llamando HtmlTextDecode. Llamamos HtmlTextDecode para reemplazar caracteres HTML ilegibles con caracteres legibles. Por ejemplo el signo “&” si tenemos este , y queremos mostrarlo y en lugar de &.

Cuando pulsa a un usuario en el botón Leer, simplemente lanza el navegador con la URL del libro.      Para el lanzamiento de un navegador, utilizamos el componente ActivityStarter . Establecemos primero la acción, establecemos la URL que recuperamos y despues llamamos a la startActivity de componente ActivityStarter para iniciar el navegador con la URL especificada. Si nuestro bookURL no contiene una dirección URL válida, simplemente informa a los usuarios.



Análisis de Resultados Múltiples

¿Qué pasa si usted desea analizar múltiples resultados? Bueno, en ese caso se define un maxResults más alto cuando se consulte Ahi  , definimos maxResults al valor tres lo que significa que queremos tres resultados. Si el API de Google no puede encontrar tres ocurrencias para nuestra consulta de libros, en ese caso no estaríamos recibiendo tres resultados obviamente,p ero si encuentrar tres o más para nuestra consulta, vamos a recibir sólo tres. Para fines de demostración, sólo en esta parte solo vamos a analizar los títulos. Tal vez usted ya lo adivinó, necesitaríamos para cada bloque hacer el trabajo. Hemos creado un procedimiento llamado GetAllTitles que tiene tres argumentos – apiResponse, de inicio, y fin. Como puede ver, pasamos a responseContent, inicio y fin como lo hicimos antes para analizar un solo título. GetAllTitles utiliza una para cada bucle y pasar todos los títulos y lo mismo para el análisis, exactamente como lo hicimos antes. Antes no teníamos un bucle, ya que tenía sólo un título para analizar y ahora tenemos un bucle porque tenemos muchos a analizar. Tenga en cuenta que el procedimiento GetAllTitles almacena el resultado después de analizar cada título a una variable global llamada allTitles y lo devuelve. Se utilizó un componente Label denominado OtherTitlesLabel para mostrar el resultado devuelto por el procedimiento GetAllTitles.

Por ultimo puede descargar el archivo de código fuente de esta aplicación (iRead2.aia)  y la anterior (iRead.aia  )  desde la página de Descargas del autor .
 


Fuente   aqui   

Crear una base de datos Web (Python 2.7)


Estas instrucciones son para la creación de una base de datos utilizando TinyWebDB Python2.7 y Google App Engine( este último el servicio PaaS de Google) .
Dado que  Python 2.5 está obsoleto en App Engine, estas instrucciones  que se basan en Python 2.7  y  el código de ejemplo son la mejor manera de empezar
TinyWebDB es un componente de App Inventor que le permite acceder a la web desde una aplicación para Android. Usted puede utilizar TinyWebDB para acceder a una fuente de datos (API) o para almacenar los datos de la aplicación de forma persistente en una base de datos web.
Estas notas le indican cómo hacer el último creado una base de datos web, y ponerlo en la nube utilizando el servicio App Engine gratuito de Google.
Con el código de ejemplo proporcionado aquí, usted puede configurar una base de datos web que se aloje  en los servidores de Google en cuestión de minutos, y usted no necesita ser un programador para hacerlo.
Tenga en cuenta que la aplicación App  Inventor también proporciona un componente TinyDB accediendo a datos directamente en el teléfono siendo fácil de usar. TinyWebDB sólo es necesario si los datos necesitan ser compartidos entre los teléfonos y aplicaciones (por ejemplo, aplicaciones sociales, juegos multi-jugador).
Por defecto, los TinyWebDB almacena componentes de datos en un servicio de prueba proporcionado por la aplicación Inventor, http://appinvtinywebdb.appspot.com/ . Este servicio es útil para las pruebas, pero es compartido por todos los usuarios de App Inventor, y tiene un límite de 1.000 entradas. Si usted utiliza, sus datos serán sobrescritos con el tiempo.
Para un ambiente realo, tendrá que crear un servicio web personalizado que no se comparta con otras aplicaciones y programadores de App Inventor. Usted no tiene que ser un programador para hacerlo, sólo tiene que seguir las instrucciones a continuación y usted tendrá su propio servicio en cuestión de minutos.

Para crear su propio servicio Web, siga estas instrucciones:

  • Descargue App Engine para Python en http://code.google.com/appengine/ .Asegúrese que descargue el SDK de App Engine para Python. Después de instalarlo, ejecute el GoogleAppEngineLauncher haciendo clic en su icono.
  • Descargue esta muestra de código de base de datos web . Se trata de un archivo zip que contiene el código fuente de su servicio de base de datos web a medida
  • Descomprimir el archivo zip descargado. Se creará una carpeta con el nombre appinventordb. Usted puede cambiar el nombre si lo desea.
  • En el GoogleAppEngineLauncher, seleccione Archivo | Agregar aplicación existente. Vaya a establecer la ruta a la carpeta appinventordb simplemente que  ha descomprimido. Luego haga clic en el botón Ejecutar. Esto lanzará un servicio web de prueba que se ejecuta en el equipo local.
  • Este código está configurado para funcionar con App Engine usando Python 2.7, así que tendrá que tener instalado  Python 2.7 en el equipo y asegúrarese de que App Engine está configurado para usarlo (en App Engine Lanzador, seleccione Preferencias y luego poner en el camino la ruta hacia Python2.7)
  • Puede probar el servicio abriendo un navegador e  ingresando  “localhost: 8080” como la dirección URL (el número de puerto puede ser algo diferente de 8080, comprobar los registros). Verá la interfaz de la página web para su servicio web.El objetivo final de este servicio es  comunicarse con una aplicación móvil creada con App Inventor. Pero el servicio proporciona una interfaz de página Web para el servicio para ayudar a los programadores con la depuración. Puede invocar las operaciones get y post a mano, ver las entradas existentes, así como eliminar entradas individuales
  • Su aplicación no está aún en la web, y por lo tanto aún no puede acceder a una aplicación App Inventor. Para llegar allí, tiene que subirlo a los servidores de Google App Engine.
  • En  GoogleAppEngineLauncher, seleccione Panel. Ingrese su información de cuenta de Google y usted será llevado a un panel de control de App Engine.
  • Elija Crear una aplicación. Tendrá que especificar  identificador único global para su aplicacion. Recuerde que el identificador de aplicación, ya que lo necesitará más adelante. Proporcione un nombre a su aplicación y haga clic en Crear solicitud a presentar. Si el identificador es único, ahora tendra una nueva aplicación, vacía en los servidores de Google.
  • Abra un editor de texto del equipo local y abra el archivo  app.yaml dentro de la carpeta appinventordb qeu ha descomprimido. Modifique la primera línea para que la aplicación coincide con el identificador de la aplicación se establece en Google.
  • En GoogleAppEngineLauncher, seleccione Desplegar y siga los pasos para implementar su aplicación.
  • Prueba para ver si su aplicación se está ejecutando en la web. En un explorador, introduzca myapp.appspot.com,  sustituyendo  logicamente  el identificador de la aplicación de “frontend”. La aplicación debe ser la misma que cuando se ejecutó en el servidor de prueba local.,sólo que ahora, está en la web y se puede acceder a él desde su App Inventor para aplicación Android.

Aplicaciones App Inventor Cliente

Una vez que usted tiene una “Inventor compatible App” base de datos web, puede crear aplicaciones Inventor de la aplicación que accedan al mismo. Para la muestra que acaba de crear, haga lo siguiente:

  • Arrastre en un componente TinyWebDB en el Diseñador de componentes.
  • Modifique la propiedad ServiceURL del predeterminadohttp://appinvtinywebdb.appspot.com/ a la URL de su servicio.
  • Cualquier operación StoreValue (bloques) almacenará los datos a su servicio, y cualquier operación GetValue recuperará de su servicio.

Aquí hay algunos bloques que almacenan y recuperan datos:

Fuente aqui