Puesto que se trata de la plataforma android nuestros smartphones basados en Android tienen características de inteligencia adicional que es ofrecida gracias a las millones de aplicaciones disponibles desde Internet ,y eso a esta alturas todos los usuarios de Android lo sabemos ( o lo deberíamos sospechar) siendo lo mas rápido y seguro optar por descargar estas desde el sirio oficial: Google Play Store , sobre todo en los tiempos actuales donde cada día surgen nuevas apps con objetivos poco éticos enmascaradas en inocentes funcionalidades.
La Google Play Store es pues una de las claves que hace que un terminal Android sea genialmente eso pues disponer de un móvil o tablet certificados y una cuenta de google nos permite el acceso a la tienda y con ellos a infinidad de opciones.
A veces hay terminales de bajo coste que no todos traen la tienda de Google de Serie (los chinos suelen dar problemas aquí, pero no son los únicos : por ejemplo los terminales de Amazon ), o simplemente no pueden acceder por problema en el firmware ,actualizaciones erróneas, fallos de red ,etc , razón por las que puede nos interesase descargar las app en local desde nuestro pc para luego copiarla en una sd y luego en el terminal desde un explorador de archivos realizar la instalación manualmente desde el propio apk con el instalador de paquetes
Photo by Tracy Le Blanc on Pexels.com
¿Por qué no podemos descargar apk de google play store???
Google tiene algunas políticas estrictas que impiden a los usuarios de android que descarguen los archivos de apk directamente a sus dispositivos para impedir la piratería.Ademas hay otros asuntos relacionadas como si una aplicación específica que usted quiere está disponible en su país o si oficialmente es soportados por un cierto dispositivo o no o a partir de una determinada version .
Obviamente , ante esta problemática , existen muchas alternativas de Tiendas de aplicaciones en Internet que almacena y permiten descargar apk directamente , pero insistimos el riesgo puede ser viral, así que lo idea seria bajar el fichero apk desde Google play store directamente ¿pero como se pueden saltar restricciones de necesitar la app de Google Play para instalara cualquier app de Google Play en un terminal? Pues es posible y lo vamos a ver a continuación
¿Cómo anular restricciones y descargar Apk de Google Play Store?
Descargar archivos apk directamente desde Google play oficialmente no es posible por políticas de google. Sin embargo, hay una alternativa, como cada moneda tiene dos caras. Hay una aplicación llamada «Apk Downloader extensión» que ha hecho posible que sea posibe descargar el APK desde Google Play Store. Esta aplicación realmente hacer maravillas y de alguna manera se las arregla para tirar desde servidores de la tienda oficial
Creo que esta opción ofrece muchas ventajas pues .
Le da libertad para descargar aplicaciones que no están disponibles en su país.
Soporta todos los dispositivos.
Puede instalar Apk desde play store, incluso si no tiene instalado Google Play en su dispositivo.
Esta aplicación puede saltarse todas las restricciones de servicios de Google play y por lo tanto esta aplicación particular puede ser utilizada por ambos tipos de usuarios de android que tienen tienda activada o desactivada.
Extension ApK dowloader
La extensión de Chrome llamada Apk Downloader funciona perfectamente con casi todas las aplicaciones disponibles en la Google Play que sean gratuitas , así que si quiere descargar aplicaciones y almacenar su archivo Apk, puede descargar esta aplicación desde la tienda play en primer lugar en su pc y luego llevarse el archivo al dispositivo donde lo quiera instalar.
Para usar esta extensión en su navegador siga estos pasos
Compruebe en la esquina superior derecha de la pantalla justo a la izquierda del icono de búsqueda que hay un icono naranja nuevo.
Ahora una vez instalada la extensión en Google Chrome ,sigue estos pasos para obtener el apk directamente desde Google Play Store.
Ir a Play Store y seleccionar cualquier aplicación que desee descargar.
Copiar la URL ( Ctrl+C)
Pulse el botón de compartir de la esquina superior derecha de la pantalla justo a la izquierda del icono de búsqueda.
Seleccione ‘Apk Downloader extensión‘ de las opciones sobre acciones.
Copiar la url de la aplicación con Ctrl+V en la caja de dialogo
Pulsar Generate Donwload Link
Esperar hasta iniciar la descarga.
El Apk se descargarán automáticamente sin la intervención de los servicios de Google Play.
Para instalar la apk el archivo APK en su teléfono Android simplemente siga los pasos a continuación:
Coloque el archivo APK en la tarjeta SD o memoria interna de su teléfono (preferiblemente tarjeta SD externa).
Explore la memoria del teléfono / memoria externa y toque el archivo APK.
Haga clic en ‘instalar’
Espere a que se instale el APK.
No ejecute la aplicación todavía.
Una vez instalada y puede abrir la aplicación
Descarga del APK desde otro Navegador
Quizás si no tiene instalado el navegador Chrome, la mejor opción para descargar los apks de Google Play sea usar algún servicio de descarga que nos pase el apk directamente de Google Play como por ejemplo el servicio evozzi.com.
Estos son los pasos a seguir
Ir a Play Store y seleccionar cualquier aplicación que desee descargar.
Pulsr Ctrl+V enla caja para pegar la url desde Google Play
Pulsar Generate Download Link
Solo tenemos que pulsar en el botón verde y se iniciara la descarga del apk a local
Coloque el archivo APK en la tarjeta SD o memoria interna de su teléfono (preferiblemente tarjeta SD externa).
Explore la memoria del teléfono / memoria externa y toque el archivo APK.
Haga clic en ‘instalar’
Espere a que se instale el APK.
No ejecute la aplicación todavía.
Una vez instalada y puede abrir la aplicación
Por cierto ,para que ambos funcionen debe activar la casilla de “Orígenes desconocidos” que encontrarás dentro de los ajustes de Android y “Seguridad”.
iRobot Roomba Create2 es una a plataforma grande y muy asequible para el desarrollo de la robótica, costando alrededor de US$ 200 permitiendo una variedad de métodos de programación. Como comienzo mjrovi usó un Arduino y una aplicación Android para mover el robot por puerto serie consiguiendo asi controlar sus motores, LEDS y sonido.
Como uno de los ganadores de 2016 del concurso de robótica en Instructables, mjrovi recibió como premio un iRobot Roomba Create2.
La Roomba es un robot de impulsión diferenciada, con 2 ruedas motrices y una rueda central guía. Su velocidad va hasta 500 mm/s y puede ser mandado a ir hacia arriba o hacia atrás.
Para señalización, contamos con cuatro 7 segmentos display y 5 LEDs :
Limpiar
Punto
Muelle
ADVERTENCIA/Check
Suciedad/escombros
Como sensores internos, tenemos entre otros:
Detector de acantilado (4 en el frente)
Detectores Bump (frente 2)
Codificadores de rueda
Para la programación, el documento: iRobot® Create® 2 abierto interfaz (OI) debe ser utilizado.El Roomba puede ser programado en 3 modos:
Modo pasivo:Al enviar el comando de Start o cualquiera de los comandos de modo de limpieza (por ejemplo, punto limpio, muelle buscar), la OI entra en modo pasivo. Cuando la OI está en modo pasivo, puede solicitar y recibir datos de los sensores usando cualquiera de los comandos del sensor, pero no puede cambiar los parámetros de comando actuales para los actuadores (motores, altavoces, luces, controladores de lado de baja, salidas digitales) a otra cosa.
Modo seguro :Le da un control completo de Roomba, con excepción de las siguientes condiciones relacionadas con la seguridad:
Cargador conectado y alimentado:detección de una caída de rueda (en cualquier rueda),detección de un acantilado mientras se mueve hacia adelante (o hacia atrás con un pequeño radio de torneado, menos de un radio de robot) o si ocurre una de las condiciones relacionadas con la seguridad mientras que el OI es en modo seguro, Roomba detiene todos los motores y vuelve al modo pasivo.
Modo completo:Le da un control completo sobre Roomba, todos de sus actuadores y todas las condiciones relacionadas con la seguridad que están restringidas cuando la OI en modo seguro, como el modo completo se apaga el acantilado, caída de rueda y características de seguridad cargador interno.
Comunicaciones
Para programar la Romba la lista de materiales usada es la siguiente:
iRobot Create2
Arduino UNO
Módulo Bluetooth HC-06
Pulsador
Para la comunicación entre la Roomba y Arduino, se utilizará el puerto Serial. Por defecto, Roomba comunica a 115.200 baudios, pero para comunicarse con Arduino, se cambiará a 19.200.
Hay 2 formas de establecer la tasa de baudios de Roomba:
Mientras que apagar Roomba, continúan mantenga pulsado el botón de encendido o limpiar después de que la luz se ha apagado. Después de unos 10 segundos, Roomba juega una melodía descendente de las echadas. Roomba se comunicará a 19.200 baudios hasta que el procesador pierde energía de la batería o la tasa de baudios se modifica explícitamente a través de la OI.
Utilizar el pin de cambio de tasa de baudios (pin 5 del conector mini-DIN) para cambiar la velocidad en baudios de Roomba. Después de encender la Roomba, esperar 2 segundos y luego pulso el cambio de la tasa de baudios baja tres veces. Cada impulso debe durar entre 50 y 500 milisegundos. Roomba se comunicará a 19200 baudios hasta que el procesador pierde energía de la batería o la tasa de baudios se modifica explícitamente a través de la OI.
El diagrama de arriba muestra cómo la Arduino debe conectarse al conector mini-DIN de Roomba
Lo primero creo que debe hacerse cuando un Roomba de programación es «Despertar» el robot y Definir el modo (segura o completa)
Nosotros podemos hacer un «wake-up», enviar un poco de pulso al pin mini-DIN 5 (detección de dispositivo de entrada) como se muestra en la siguiente función:
void wakeUp (void)
{
setWarningLED(ON);
digitalWrite(ddPin, HIGH);
delay(100);
digitalWrite(ddPin, LOW);
delay(500);
digitalWrite(ddPin, HIGH);
delay(2000);
}
Para empezar a Roomba deberán enviarse 2 códigos de siempre: «START» [128] y el modo, en nuestro caso «Modo seguro» [131]. Si usted quiere un «modo completo», debe enviarse en su lugar el código [132].
void startSafe()
{
Roomba.write(128); //Start
Roomba.write(131); //Safe mode
delay(1000);
}
Como se describe en la introducción, el Roomba tiene 5 LEDs:
Energía/limpiar (bicolor rojo/verde e intensidad controladas)
Punto (verde, intensidad fija)
Muelle (verde, intensidad fija)
ADVERTENCIA/Check (naranja, intensidad fija)
Suciedad/escombros (azul, fija la intensidad)
Control de leds
Todos los LEDs pueden ser ordenados mediante código [139]
Para controlar el LED de encendido, debe enviar dos bytes de datos a Roomba: «color» y la «intensidad». Color:
Verde = 0
Naranja = 128
rojo = 255
Intensidad:
Bajo = 0
Max = 255
La función setPowerLED (colores bytes, setIntensity bytes) lo hace:
Por ejemplo, para encender el LED de POWER de color naranja en la mitad de su intensidad, usted puede llamar a la función como bramido:setPowerLED (128, 128);
Encender los 4 LEDs restantes, deberán utilizarse las siguientes funciones:
setDebrisLED(ON);
setDockLED(ON);
setSpotLED(ON);
setWarningLED(ON);
Todas las funciones anteriores tiene un código similar a este:
void setDebrisLED(bool enable)
{
debrisLED = enable;
Roomba.write(139);
Roomba.write((debrisLED ? 1 : 0) + (spotLED ? 2 : 0) + (dockLED ? 4 : 0) + (warningLED ? 8 : 0));
Roomba.write((byte)color);
Roomba.write((byte)intensity);
}
Básicamente, la diferencia será la línea: debrisLED = habilitar; debe modificarse permitiendo a cada uno de los otros LEDs (spotLED, dockLED, warningLED).
Envío de mensajes
Roomba tiene cuatro 4 displays de 7 segmentos que puede utilizar para enviar mensajes de dos maneras::
[163] código: Dígitos LED crudo (numérico)
[164] código: Dígitos LED de ASCII (aproximación de letras y códigos especiales)
Para mostrar números debe enviar el código [163], siguiendo las 4 digitas a mostrar. La función: setDigitLEDs (bytes digit1 digit2 bytes, digit3 bytes, digit4 bytes) lo hace para usted:
Por ejemplo, para mostrar «1, 2, 3, 4», debe llamar a la función: setDigitLEDs (1, 2, 3, 4);
Con el código [164], es posible enviar aproximación de ASCII.
La función setDigitLEDFromASCII (dígitos de byte, char letra) hace esto para nosotros:
void setDigitLEDFromASCII(byte digit, char letter)
{
switch (digit){
case 1:
digit1 = letter;
break;
case 2:
digit2 = letter;
break;
case 3:
digit3 = letter;
break;
case 4:
digit4 = letter;
break;
}
Roomba.write(164);
Roomba.write(digit1);
Roomba.write(digit2);
Roomba.write(digit3);
Roomba.write(digit4);
}
Para simplificar, crear una nueva función para enviar los 4 dígitos al mismo tiempo:
void writeLEDs (char a, char b, char c, char d)
{
setDigitLEDFromASCII(1, a);
setDigitLEDFromASCII(2, b);
setDigitLEDFromASCII(3, c);
setDigitLEDFromASCII(4, d);
}
Por ejemplo, para mostrar «STOP», usted debe llamar a la función: writeLEDs (‘s’, ‘ t ‘, ‘ o ‘, ‘p’);
Mover la Roomba
Para la movilidad, Roomba tiene 2 motores independientes que pueden programarse para ejecutar 500mm/s. Hay varios comandos que pueden utilizarse para controlar el robot. Los principales son:
Código [137]: Unidad == > debe enviar +-velocidad en mm/s y +-radio en mm
Codigo [145] de código: Impulsión directa == > debe enviar izquierda velocidad en mm/s (+ para adelante y para atrás)
Código [146]: Unidad PWM == > debe enviar +-datos PWM para la izquierda y derecha las ruedas
A continuación el código para estas 3 opciones:
void drive(int velocity, int radius)
{
clamp(velocity, -500, 500); //def max and min velocity in mm/s
clamp(radius, -2000, 2000); //def max and min radius in mm
Tenga en cuenta que la función de «fijar» define los valores máximos y mínimos que se permitieron la entrada. Esta función se define en el archivo rombaDefines.h:
#define abrazadera (valor, min, max) (valor < min? min: valor > max? max: valor)
Utilizando el código anterior, se pueden crear funciones más simples para Roomba alrededor de:
/—————————————————————
void turnCW(unsigned short velocity, unsigned short degrees)
{
drive(velocity, -1);
clamp(velocity, 0, 500);
delay(6600);
drive(0,0);
}
//—————————————————————
void turnCCW(unsigned short velocity, unsigned short degrees)
{
drive(velocity, 1);
clamp(velocity, 0, 500);
delay(6600);
drive(0,0);
}
Tenga en cuenta que para girar en ángulo, debe calcularse el argumento de «retraso» específicamente para una velocidad dada
A continuación algunos ejemplos que pueden utilizar para probar los motores:
turnCW (40, 180); girar 180 grados hacia la derecha y parada
driveWheels (20, -20); vuelta
driveLeft(20); girar a la izquierda
Para las pruebas de los motores, es bueno añadir un pulsador externo (en mi caso conectado al Arduino pin 12), para que puedan descargar el código de Arduino, a partir de la Roomba, pero parando la ejecución hasta que se pulsa la tecla. Generalmente, para los motores de prueba lo puedes hacer en la parte de configuración del código.
Como ejemplo, consulte el código de Arduino simple abajo (nota que el código usa funciones y definiciones desarrollaron antes):
#include «roombaDefines.h»
#include
// Roomba Create2 connection
int rxPin=10;
int txPin=11;
SoftwareSerial Roomba(rxPin,txPin);
Para controlar Roomba de modo inalambrico vamos a instalar un módulo Bluetooth (HC-06) a nuestro Arduino. El diagrama de arriba muestra cómo hacerlo. Suele ser el HC-06 settle up de fábrica con una velocidad de 9.600. Es importante cambiarlo a 19.200 para ser compatible con la velocidad de la comunicación de Arduino-Roomba. Usted puede hacer que el envío un comando AT para el módulo (AT + BAUD5 donde «5» es el código de 19.200).
Para controlar la Roomba, utilizaremos una aplicación genérica que fue desarrollada por jrovai para el control de robots móviles, con el MIT AppInventor 2: «MJRoBot BT Remote Control». La aplicación puede descargarse gratuitamente de la tienda de Google a través del enlace: aplicación: MJRoBot BT Remote Control.
La aplicación tiene una interfaz sencilla, lo que le permite enviar comandos al módulo de BT en ambos, modo de texto o directamente a través de botones preprogramados (cada vez que se pulsa un botón, un carácter se envía):
w: hacia adeñante
S: hacia atras
d: derecho
a: izquierda
f: parada
p: ON / OFF (no usado en esta primera parte)
m: manual / automático (se utiliza para reiniciar Roomba si un obstáculo como un acantilado se encuentra en modo seguro)
+: Velocidad +
-: Velocidad –
También puede enviar otros comandos como texto si es necesario. También hay una ventana de texto para los mensajes recibidos desde el módulo de BT. Esta característica es muy importante durante la fase de prueba, puede ser utilizado en la misma forma que el «Serial Monitor».
El loop() parte del código será «escuchando» el dispositivo bluetooth y dependiendo del comando recibido, tomar una acción:
void loop()
{
checkBTcmd(); // verify if a comand is received from BT remote control
manualCmd ();
}
La función checkBTcmd() se muestra a continuación:
void checkBTcmd() // verify if a command is received from BT remote control
{
if (BT1.available())
{
command = BT1.read();
BT1.flush();
}
}
Una vez que se recibe un comando, la función manualCmd() tomará la acción apropiada:
void manualCmd()
{
switch (command)
{
case ‘m’:
startSafe();
Serial.print(«Roomba in Safe mode»);
BT1.print(«Roomba BT Ctrl OK – Safe mode»);
BT1.println(‘\n’);
command = ‘f’;
playSound (3);
break;
case ‘f’:
driveStop(); //turn off both motors
writeLEDs (‘s’, ‘t’, ‘o’, ‘p’);
state = command;
break;
case ‘w’:
drive (motorSpeed, 0);
writeLEDs (‘ ‘, ‘g’, ‘o’, ‘ ‘);
state = command;
break;
case ‘d’:
driveRight(motorSpeed);
writeLEDs (‘r’, ‘i’, ‘g’, ‘h’);
break;
case ‘a’:
driveLeft(motorSpeed);
writeLEDs (‘l’, ‘e’, ‘f’, ‘t’);
break;
case ‘s’:
drive (-motorSpeed, 0);
writeLEDs (‘b’, ‘a’, ‘c’, ‘k’);
state = command;
break;
case ‘+’:
if (state == ‘w’)
{
motorSpeed = motorSpeed + 10;
if (motorSpeed > MAX_SPEED)
{
motorSpeed = MAX_SPEED;
}
command = ‘w’;
} else {command = state;}
break;
case ‘-‘:
if (state == ‘w’)
{
motorSpeed = motorSpeed – 10;
}
if (motorSpeed < MIN_SPEED )
Varias de las funciones que el autor ha creado en su programa se basaron en la biblioteca de crear 2 desarrollada por Dom Amato. Puede descargar la librería completa en: https://github.com/brinnLabs/Create2.
OpenWeatherMap es un servicio en línea que proporciona datos meteorológicos , incluyendo datos meteorológicos actuales,pronósticos y datos históricos a los desarrolladores de servicios web y aplicaciones móviles.
Para fuentes de datos, utiliza servicios de radiodifusión meteorológica, datos en bruto de estaciones meteorológicas de aeropuertos , datos brutos de estaciones de radar y datos en bruto de otras estaciones meteorológicas oficiales.
OpenWeatherMap procesa todos los datos de forma que intente proporcionar datos precisos de pronóstico del tiempo en línea y mapas meteorológicos, como los de las nubes o la precipitación .Más allá de eso, el servicio se centra en el aspecto social mediante la participación de los propietarios de estaciones meteorológicas en la conexión con el servicio y con ello aumentar la precisión de los datos meteorológicos.
Como vemos la filosofía que hay detrás de este servicio está inspirada en OpenStreetMap y Wikipedia que hacen que la información sea gratuita y disponible para todos,tanto es así que uiliza OpenStreetMap para la visualización de mapas meteorológicos .
Veamos algunos usos e este interesante servicio:
El tiempo actual y los pronósticos en tu ciudad
A través de este servicio podemos ver el estado actual del tiempo en cualquier ciudad importante del mundo como por ejemplo Londres :
15 °C
Few clouds
00:40 Sep 7Wrong data?
Wind
Light breeze, 2.6 m/s, West-northwest ( 290 )
Cloudiness
Few clouds
Pressure
1019 hpa
Humidity
55 %
Sunrise
07:22
Sunset
20:33
Geo coords
[51.51, -0.13]
Los datos actuales se actualizan cada diez minutos;se puede buscar por ciudad o por coordenadas geográficas en la Tierra.
Previsión del Tiempo
También permite obtener no solo el tiempo actual sino el pronóstico diario de 16 días y pronóstico de 3 horas cada 5 días para su ciudad.Estadísticas útiles, gráficos y este día en las cartas de la historia están disponibles para su referencia.Mapas interactivos muestran precipitaciones, nubes, presión, viento alrededor de su ubicación.
Las previsiones meteorológicas se pueden buscar por ciudad o por coordenadas.Los pronósticos de tres horas están disponibles por hasta 5 días, mientras que los pronósticos diarios están disponibles por hasta 16 días.
Mapas del tiempo
Nos permite ver el tiempo actual en áreas del planeta que deseemos
Clima actual
Podemos observar la temperatura actual y las condiciones meteorológicas en su ciudad o cualquier otra ubicación en el mapa global interactivo.
Capas meteorológicas
Hay una variedad de mapas están disponibles incluyendo precipitación, nubes, presión, temperatura, viento, y muchos más.
Mapa de satélite diario
Proporciona en tiempo real el mapa diario global ,mientras que los datos del satélite están disponibles para darle la descripción entera de fenómenos del tiempo.
El servicio OpenWeatherMap ofrece un montón de mapas meteorológicos incluyendo precipitaciones, nubes, presión, temperatura, viento y muchos otros.Los mapas se pueden conectar a aplicaciones móviles y sitios web.Los mapas meteorológicos se pueden conectar como capas a la amplia gama de mapas, incluyendo azulejos Directos, WMS ,OpenLayers , folletos , mapas de Google y mapas de Yandex .
Gestión de campañas basadas en el clima de Google con OpenWeatherMap API
También permite ejecutar campañas publicitarias con API de tiempo OpenWeatherMap a través de Google AdWords.
APIs meteorológicas para desarrolladores
Hay un montón de entrenamiento con las API de tiempo en PHP, Java, Python, Go y muchos otros en la página de Partners junto con más de 1500 repositorios en GitHub
OpenWeatherMap proporciona una API con terminales JSON , XML y HTML y un nivel limitado de uso libre.Realizar más de 60 llamadas por minuto requiere una suscripción pagada a partir de USD 40 por mes.El acceso a datos históricos requiere una suscripción a partir de 150 USD al mes. Los usuarios pueden solicitar información meteorológica actual, pronósticos extendidos y mapas gráficos (que muestran la cobertura de nubes, la velocidad del viento, la presión y la precipitación).
Las APIs como vamos a ver en el ejemplo , son sencillas y rápidas permitiendo el acceso al tiempo actual, a pronósticos, mapas y datos históricos en formatos JSON, XML y HTML. Además una variedad de capas del mapa está disponible incluyendo precipitación, nubes, presión, temperatura, viento, y muchos más.
Conectar una estación meteorológica a OpenWeatherMap
Cuenta con una red de estaciones meteorológicas privadas (más de 40.000 estaciones meteorológicas en todo el mundo) peor también puede conectar su estación meteorológica a OpenWeatherMap y obtener una interfaz conveniente para recopilar y supervisar los datos de su estación meteorológica.También puede integrar los datos de su estación meteorológica en su página principal
Ejemplo
Como ejemplo vamos a ver como usar el servicio gratuito OpenWeatherMap para recuperar las condiciones meteorológicas de una ubicación.
Antes de poder utilizar el servicio, debe configurar una cuenta y solicitar una clave de API para su API Condiciones actuales.
Apunte su navegador a OpenWeatherMap y configure una cuenta.
El sistema de geocodificación OpenWeatherMap permite a los usuarios seleccionar ciudades por nombre, país, código postal o coordenadas geográficas.Es posible buscar por parte del nombre de la ciudad.Para que el resultado de la búsqueda sea más preciso, el nombre de la ciudad y el país se deben dividir por comas
La url anterior admite el parametro city para que nos de el tiempo actual y la previsión de 13 días de tras directamente desde la url , por ejemplo para Almeria es 2521886 y esta es la url completa :https://openweathermap.org/city/2521886
Para registrarnos nos iremos a https://home.openweathermap.org/users/sign_up
Ingresaremos un login ( normalmente el nombre de usuario ), un email así como la clave inicial , y con esto ya nos daría acceso a la herramienta
Una vez que tenga un inicio de sesión válido, vaya a la página API del servicio y suscríbase al servicio de datos Tiempo actual y, a continuación, genere una clave de API.
Obviamente anote la clave de la API pues lo necesitara para usarla en su aplicación ( por ejemplo si usa node.js e Ionic en el código TypeScript de la aplicación)
Android se ejecutará en muchos dispositivos en muchas regiones. Para llegar a la mayoría de los usuarios, su aplicación debe manejar texto, archivos de audio, números, moneda y gráficos de manera apropiada a los locales donde se utilizará su aplicación.
En realidad al escribir una app ya se debe tener un conocimiento práctico de Java y estar familiarizado con la carga de recursos de Android, la declaración de elementos de la interfaz de usuario en XML, consideraciones de desarrollo como el ciclo de vida de la actividad y los principios generales de internacionalización y localización.
Es una buena práctica usar el marco de recursos de Android para separar los aspectos localizados de su aplicación tanto como sea posible de la funcionalidad básica de Java:
Puede poner la mayor parte o la totalidad del contenido de la interfaz de usuario de su aplicación en archivos de recursos, tal como se describe en este documento y en Proporcionar recursos .
El comportamiento de la interfaz de usuario, por otra parte, es impulsado por su código Java. Por ejemplo, si los usuarios introducen datos que deben formatearse o clasificarse de forma diferente dependiendo de la configuración regional, utilizarían Java para manejar los datos mediante programación. Este documento no cubre cómo localizar su código Java
Siempre es una buena práctica extraer strings de IU del código de tu app y conservarlas en un archivo externo. Android facilita esta tarea con un directorio de recursos en cada proyecto del sistema operativo.
Si creo su proyecto con herramientas del Android SDK (lea Cómo crear un proyecto en Android), las herramientas crean un directorio res/ en el nivel superior del proyecto. El directorio res/ contiene subdirectorios para varios tipos de recursos. También hay algunos archivos predeterminados, como res/values/strings.xml, que contiene los valores de tu string.
Agregar los valores de string para cada configuración regional en el archivo correspondiente.
En tiempo de ejecución, el sistema Android usa un conjunto correspondiente de recursos de string basado en la configuración regional actual del dispositivo del usuario.
Por ejemplo, a continuación se indican algunos archivos diferentes de recursos de strings para distintos idiomas.
Nota: Puede usar un calificador de configuración regional (o cualquier calificador de configuración) en cualquier tipo de recurso, como lo harías si deseas proporcionar versiones localizadas del elemento de diseño de tu mapa de bits. Para más información, consulta Localización.
Usar los recursos de string
Puede hacer referencia a sus recursos de string en el código fuente y en otros archivos XML usando el nombre del recurso definido por el atributo namedel elemento .
En su código fuente, puede hacer referencia a un recurso de string con la sintaxis R.string.. Existen diferentes métodos disponibles que aceptan un recurso de string de esta manera.
Por ejemplo:
// Get a string resource from your app's ResourcesString hello =getResources().getString(R.string.hello_world);// Or supply a string resource to a method that requires a stringTextView textView =newTextView(this); textView.setText(R.string.hello_world);
En otros archivos XML, puedes hacer referencia a un recurso de string con la sintaxis @string/ siempre que el atributo XML acepte un valor de string.
Paso 2: Abrir el archivo main_activity.xml y personalice el texto como desee.
Utilice la pestaña Diseño y cree una nueva traducción haciendo clic en el botón globo.
Paso 3:
Ahora Android Studio genera un nuevo archivo xml en esta ruta de acceso: res / values / strings.
Resultados.
Por qué los recursos predeterminados son importantes
Siempre que la aplicación se ejecute en una configuración regional para la que no haya proporcionado texto específico de la configuración regional, Android cargará las cadenas res/values/strings.xml de res/values/strings.xml . Si este archivo predeterminado está ausente o si falta una cadena que su aplicación necesita, su aplicación no se ejecutará y mostrará un error. El ejemplo siguiente ilustra lo que puede suceder cuando el archivo de texto predeterminado está incompleto.
Ejemplo:
El código Java de una aplicación se refiere a sólo dos cadenas, text_a y text_b . Esta aplicación incluye un archivo de recursos localizados ( res/values-en/strings.xml ) que define text_a y text_b en inglés. Esta aplicación también incluye un archivo de recursos predeterminado ( res/values/strings.xml ) que incluye una definición para text_a , pero no para text_b :
Cuando esta aplicación se inicia en un dispositivo con la configuración regional en inglés, la aplicación puede ejecutarse sin ningún problema, porque res/values-en/strings.xml contiene ambas cadenas de texto res/values-en/strings.xml .
Sin embargo, el usuario verá un mensaje de error y un botón de cierre de la fuerza cuando esta aplicación se inicia en un dispositivo establecido en un idioma que no sea el inglés. La aplicación no se cargará.
Para evitar esta situación, asegúrese de que existe un archivo res/values/strings.xml y que define cada cadena res/values/strings.xml . La situación se aplica a todos los tipos de recursos, no sólo a las cadenas: Debe crear un conjunto de archivos de recursos predeterminados que contengan todos los recursos que su aplicación requiere: diseños, dibujos, animaciones, etc. Recursos .
Android de Como ENCUENTRA el recurso de coincidencia Óptima
Cuando solicita un recurso para el cual sea proporciona Alternativas, Android selecciona qué recurso alternativo ,como utilizar en Tiempo de ejecucion, según la configuración del dispositivo real. Para demostrar como Android selecciona un recurso alternativo, suponga que cadauino de los siguientes elementos de diseño contienen versiones diferentes de las mismas imágenes:
Y suponga que la configuracion del dispositivo es la siguiente:
Configuracion regional = en-GB
Orientación de la Pantalla = port
densidad de píxeles de la Pantalla = hdpi
tipo de pantalla táctil = notouch
director Método de entrada de texto =12key
Al comparar la configuracion del Dispositivo con los Recursos Alternativos Disponibles, Android Selecciona Elementos de Diseño de drawable-en-port.
Para Decidir Qué Recursos Como utilizar, El Sistema se basa en la siguiente lógica:
Figura 2: Diagrama de Flujo de la forma en la cual sea ENCUENTRA Android el recurso de coincidencia Óptima.
Eliminar os Archivos de recursos que se contradicen con la configuración del Dispositivo.El Directorio drawable-fr-rCA/se elimina porque se contradice con la configuración regional en-GB.
Excepción: La densidad de píxeles de la Pantalla es el unico calificador Que No se Elimina DEBIDO A una contradicción. AUNQUE la densidad de la Pantalla del Dispositivo es IPAP, drawable-port-ldpi/no se Elimina Porque TODAS LAS densidades de Pantalla se consideran Como una coincidencia En Este punto.
Elegir el (Próximo) calificador de alcalde precedencia de la Lista ( tabla 2 ). (Comenzar con MCC y continuar en forma descendente).
¿Alguno de los Directorios de recursos INCLUYE Este calificador?
La Respuesta Si es que no, volver al paso 2 y examinar · el siguiente calificador. (In the example, La Respuesta es «no» Hasta Que se Alcanza el calificador de idioma).
Si La Respuesta es sí, continuar con el paso 4.
ELIMINAR los Directorios de recursos Que No INCLUYEN Este calificador. En the example, El Sistema Elimina Todos Los Que No Directorios INCLUYEN UN calificador de idioma:
Excepción: Si el calificador en cuestión f es la densidad de píxeles de la Pantalla, Android slecciona la opción que más coincida con la densidad de la Pantalla del Dispositivo. En general, Aandroid reduce su preferecica a una imagen original, en la directiva más grande antes que ampliar una imagen mas pequeña que las originales.
Volver y repetir los Pasos 2, 3 y 4 Hasta Que Quede solitario Directorio de la ONU. En el ejemplo, la Orientación de la Pantalla Es El Próximo calificador para el cual sea existen coincidencias. Por lo del tanto, se eliminan los Recursos Que No se especifican Una Orientación de Pantalla:
Si bien este procedimiento se ejecuta párrafo cada recurso: solicitado, el Sistema Optimiza algunos adj: Aún más: aspectos. Un example of this Optimización Es Que Una Vez Que se conoce la configuration del Dispositivo, El Sistema podria ELIMINAR los Recursos Alternativos Que Nunca coinciden. EJEMPLO Por, si el idioma de configuration es inglés ( «en»), los Directorios de recursos Que Tienen ONU calificador de idioma establecido en Otro idioma ¿Que hay mar ingles Nunca de INCLUYEN en el conjunto de recursos comprobados (sin embargo, la ONU Directorio de Recursos pecado el calificador de idioma sí se includes).
Cuando Se seleccionan Recursos SEGÚN los calificadores del Tamaño de la Pantalla, El Sistema utilizará los Recursos Diseñados Para Una Pantalla Más Pequeña Que la Pantalla SI real sin EXISTEN Recursos Que coincidan mejor (por Ejemplo, Una Pantalla de Tamaño Grande utilizará Recursos De Una Pantalla de Tamaño normal de Si es Necesario). Sin embargo, si Los Únicos Recursos Disponibles Presentan ONU Tamaño superiores al de la Pantalla real, El Sistema sin los Usara y tu application fallará si ningún Otro recurso que coincidiera con la configuration del Dispositivo (POR EJEMPLO, SI Todos Los Recursos de Diseño estan etiquetados con el calificador xlarge, Pero el Dispositivo es Una Pantalla de Tamaño normal).
Nota: La precedencia del calificador (en la tabla 2 ) es mas Importante Que la Cantidad de calificadores que coinciden exactamente con el Dispositivo. Por Ejemplo, en el paso 4 mencionado anteriormente, la última Opción de la Lista INCLUYE tres calificadores que coinciden exactamente con el Dispositivo (orientation, tipo de pantalla táctil y Método de entrada), MIENTRAS Que drawable-enTiene Un solitario PARÁMETRO Que coinciden (idioma). Sin embargo, el idioma Tiene alcalde precedencia Que ESTOS Otros calificadores, por lo del tanto, drawable-port-notouch-12keyse Elimina.
Aunque la supremacía de los markets de Google y Apple son mas que evidentes , el ecosistema de Amazon va aumentando considerablemente dia tras dia conforme Amazon crece a doble dígito tanto en ventas como en numero de usuarios .
Precisamente debido al aumento de penetración de sus fieles usuarios compuestos por millones de usuarios de Android, esto nos da una pista de que su market también es una buena oportunidad pues los desarrolladores afirman incluso hacenmas dinero con el market de MAzon ya que el 65% de los desarrolladores dicen que» los ingresos totales de Amazon son similares o mejores que otras plataformas» en parte gracias a que los clientes de Amazon están muy comprometidos y muchos desarrolladores han visto mayores ARPU versus plataformas competitivas.
Los desarrolladores en amazon pueden ganar dinero a través de varios modelo de negocio: descargas directas, publicidad en las propias aplicaciones y las ventas in-apps .
El ultimo modelo permite vender productos de Amazon a través de las propias aplicaciones obteniendo una comisión por venta realizada gracias al API de Amazon así como el SDK que proporcionan .De esta forma pues permiten monetizar las aplicaciones y juegos con API como, por ejemplo, los anuncios de compra en la aplicación de Amazon y los anuncios para móviles..
En cuanto las aplicaciones desarrolladas para Android que incluso pueden estar publicadas en Google Play, la mayoría de estas también funcionaran en la Appstore de Amazon sin necesidad de desarrollo adicional. lo cual permitirá alcanzar millones de clientes en todo el mundo pues la Appstore de Amazon está disponible en 236 países y territorios, ofreciéndole una base de clientes global al instante.
En este post veremos las instrucciones en pantalla para crear una cuenta de desarrollador de Amazon , probar si nuestra app es compatible con el market de amazon , documentar los detalles , especificar los royalties y por supuesto finalmente enviar su aplicación para hacerla disponible a la enorme base de clientes de Amazon.
Como se puede ver son muchos pasos , así que vayamos por partes:
Primera subida y test de la aplicación
Para solicitar la inclusión de una aplicación en el catálogo de la tienda Apps en primer lugar deberá tener el apk de su aplicación y acceder a Amazon Appstore Mobile App Distribution Portal
En esta pantalla arrastramos el fichero apk en la esquina derecha donde probaremos la compatibilidad de su aplicación en Fire y dispositivos Android (simplemente arrastre y coloque su APK en el servicio de pruebas de AWS para obtener resultados en 90 segundos o menos).
Si el resultado ha sido satisfactorio , podemos subir nuestra aplicación a la plataforma de Amazon , por lo que ahora nos pedirá que nos validemos con nuestra cuenta de amazon para avanzar en el registro de la aplicación( puede ser la cuenta de amazon que usamos habitualmente para comprar=.
Registro como desarrollador e impuestos
Una vez subida la aplicación y comprobada la compatibilidad del apk lo siguiente es registrase como desarrollador de Amazon.
En la paginatendrá que cumplimentar todos los campos , donde ademas de los datos personales nos solicitaran una breve descripción de no mas 2000 caracteres sobre el desarrollador , así como si ha tenido en cuenta alguna dirección de correo electrónico para atender a los usuarios.
Por ciento ,tenga mucho cuidado en este apartado ,pues lo que se cumplimente aquí, una vez grabado, ya no se podrá modificar así que es muy importante que piense muy bien lo que va a cumplimentar en los apartados Developer description y en los servicios que vaya a ofrecer a los potenciales clientes.
Una vez pulsado el botón Save and Continue, lo siguiente es aceptar las condiciones de Amazon :
Una vez aceptadas la condiciones,lo siguiente es ingresar los datos bancarios
Ya para terminar nos toca ajustar el tema de los impuestos aplicados a nuestras posibles ganancias:
Ahora es el momento de cumplimentar el impreso IRS W-9, W-8 para determinar si sus pagos están sujetos al formulario 1099-MISC o 1042-S del IRS.
Para cumplir con los requisitos del IRS lo más eficientemente posible, se deben contestar todas las preguntas e ingresar toda la información solicitada lo cual para todos los que hablamos español se nos hace bastante lioso
Tenga cuidado para evitar errores ortográficos o para ingresar números de identificación de impuestos incorrectos, lo que puede resultar en un formulario de impuestos invalidado.
Lógicamente se tiene la obligación de notificar a Amazon de cualquier cambio en su información de identidad fiscal reanudando la entrevista de información tributaria si el cambio podría invalidar su W-9, W-8.
El cambio de circunstancias incluye:
Cambio de su nombre legal (por ejemplo, debido al matrimonio o la incorporación)
Cambio de dirección de un país a otro
Cambio de su número de identificación fiscal (TIN) de su negocio de su número de seguro social (SSN) a un número de identificación del empleador (EIN)
Para propósitos de impuestos en los Estados Unidos, es muy importante mencione si es Ud. una persona estadounidense
Para propósitos de impuestos federales de los Estados Unidos, se le considera una persona de los Estados Unidos si usted es:Un individuo que es un ciudadano de los Estados Unidos o un extranjero residente de los Estados Unidos,Una asociación, corporación, compañía o asociación creada u organizada en los Estados Unidos o bajo las leyes de los Estados Unidos,Una finca (que no sea una finca extranjera), o
Un fideicomiso de los Estados Unidos.
Para propósitos de impuestos federales de los Estados Unidos, se le considera una persona no estadounidense (extranjera) si usted es:un individuo extranjero no residente,una corporación extranjera,una sociedad extranjera,un fideicomiso extranjero,una propiedad extranjera, cualquier otra persona que no sea una persona de los Estados Unidos.
Bien pongámonos mano a la obra para cumplimentarlo primero marcando si somos o no de U .S.:
Una vez aceptado este paso , lo siguiente es cumplimentar el grueso de formulario empezando por nuestro nombre y dirección postal:
Asimismo marcaremos si actuamos como intermediarios así como si somos algo que tenga que ver con una empresa:
Al aceptar pulsando «save and continue» nos da un resumen del documento:
Podemos solicitarlo por papel ,pero lo mejor es hacerlo via electronica pulsando en «Go paperles,I want to receive my Form 1042-S electrinicaly» así como mas abajo donde pone «I consent to provide my electronic signature» , y después marcar todos los apartados siguientes:
A destacar que debemos seleccionar a todos los no residentes en EEUU en el apartado «Electronic Signature» , en la parte que menciona que bajo pena de perjurio, declaramos que hemos examinado la información en este formulario y que, saber y entender, es verdadera, correcta y completa. Además certificamos bajo pena de perjurio que:
Yo soy el individuo que es el beneficiario efectivo (o estoy autorizado a firmar para el individuo que es el beneficiario efectivo) de todos los ingresos a los cuales este formulario se relaciona o estoy usando este formulario para documentarme como un individuo que es propietario o cuenta Titular de una institución financiera extranjera
La persona nombrada en la línea 1 de este formulario no es una persona de los Estados Unidos
Los ingresos a los que se refiere este formulario son: (a) no relacionados efectivamente con la conducta de un comercio o negocio en los Estados Unidos, (b) están conectados pero no están sujetos al impuesto bajo un tratado de impuesto sobre la renta aplicable, o (c) La participación del socio en los ingresos efectivamente conectados de una asociación
La persona nombrada en la línea 1 de este formulario es residente del país tratado incluido en la línea 9 del formulario (si lo hubiere) en el sentido del tratado sobre el impuesto sobre la renta entre los Estados Unidos y ese país
Para las transacciones de intermediarios o intercambios de trueque, el beneficiario efectivo es una persona extranjera exenta tal como se define en las instrucciones, y
Acepto que enviaré un nuevo formulario dentro de 30 días si alguna certificación hecha en este formulario se vuelve incorrecta.
Una vez aceptada esta parte , nos aparecerá que hemos llegado al 100% del proceso de cumplimento y se nos mostrara el impreso de forma electrónica:
Algo muy interesante es imprimirlo directamente desde esta aplicación para guardarlos y ya por fin habremos concluido la primera parte del proceso
Bueno ya hemos resuelto el tema legal y ya tenemos cuenta de desarrollador de Amazon , asi que una vez que tengamos el apk y hayamos pasado los pasos anteriores ya estamos listos para desplegar nuestra app y seguir los siguientes pasos que explicaremos en un segundo post.
Mientras tanto sospese si le interesa el programa Amazon Underground que pasamos a comentar en las siguientes lineas:
Amazon Underground
Una posibilidad para los desarrolladores es también incluir nuestra app en amazon undergroud,pero se requiere cumplir con los siguientes requisitos generales para el programa:
Es necesario que la aplicación móvil esté disponible para descargar desde la tienda de Google Play o en la App Store de Apple y que esté monetizada en al menos una de las siguientes maneras:
La aplicación está disponible para su compra por una tarifa en todas las tiendas de otras aplicaciones donde se vende.
La aplicación contiene elementos en la aplicación que están disponibles para su compra por una tarifa.
la aplicación para dispositivos móviles no debe contener ningún elemento de suscripción en la propia aplicación.
Las características y la jugabilidad de la versión de Amazon Underground de su aplicación debe ser sustancialmente similar o mejor que la versión no subterránea.
Cuando envíe su aplicación a Amazon Appstore, debe hacer que su aplicación esté disponible para su distribución en al menos un dispositivo móvil que no sea de Amazon.
Pasos mínimos requeridos para la presentación de la aplicación
Amazon recomienda los siguientes pasos para garantizar un proceso de envío fluido al programa Amazon Underground para su aplicación.Ten en cuenta que para Amazon Underground, necesitarás crear y mantener una nueva versión de tu aplicación.Esta nueva aplicación requiere un nombre de paquete único y se debe enviar por separado a la Appstore de Amazon desde cualquier versión existente de la aplicación.
Revise los requisitos de elegibilidad en esta página y en el Programa de Amazon Underground antes de realizar cualquier cambio en su aplicación para verificar que su aplicación cumple con los requisitos del programa.
Reconstruya su aplicación con los cambios de código que haya realizado para Amazon Underground y asigne un nombre de paquete nuevo y único a su aplicación.Por ejemplo, si el nombre original del paquete de su aplicación era «com.company.example», llame a la versión Amazon Underground del paquete «com.company.example.underground».Este nombre de paquete debe ser único en todas las plataformas en las que esté disponible la aplicación.
Aplique la marca a su icono de lanzamiento como se describe en la página Migrar su aplicación a Amazon Underground superponiendo el archivo PNG proporcionado por Amazon para aplicar el marco de Amazon Underground al icono de lanzador.
En el Portal de desarrolladores de aplicaciones y juegos de Amazon, comienza el nuevo proceso de envío de aplicaciones para tu aplicación con su nuevo y único nombre de paquete de Android.
Como una nueva aplicación, crea un nuevo paquete de envío para la versión de Amazon Underground de tu aplicación.
En el campo Descripción breve de la aplicación , describe el nuevo valor que ofrece la versión de Amazon Underground de tu aplicación en la versión no subterránea.Llame a cualquier característica que solía ser pagada que ahora están libres.
Si procede, vuelva a crear sus artículos de compra en la aplicación (IAP) como parte de la presentación de su nueva aplicación, manteniendo intactos los precios originales.Incorporar los nuevos SKUs para estos elementos IAP en su aplicación.(Los precios de estos artículos se establecen automáticamente en cero para los usuarios de la versión de Amazon Underground de tu aplicación).
Si su aplicación utiliza cualquiera de las API de Amazon descritas en la siguiente sección, cree una clave de API nueva y separada y actualice la versión de Amazon Underground de su aplicación para usar la nueva clave.(Consulte Migración de su aplicación a Amazon Underground .)
Verifique que su aplicación cumpla con los requisitos de elegibilidad detallados en el horario de Amazon Underground.
En las opciones Disponibilidad y Precios , seleccione Sí para Amazon Underground.
En Imágenes , cargue sus activos.
Envíe su aplicación a Amazon Appstore.Su aplicación será revisada antes de ser aceptada en el programa.Si no acepta su aplicación, iterar el paquete de presentación de la aplicación con los cambios necesarios y volver a enviarlos.
Directrices de diseño de aplicaciones
Las siguientes prácticas recomendadas son recomendaciones fuertes de Amazon para el programa Amazon Underground.Si su aplicación se aparta de estas directrices, es posible que su aplicación se rechace o se elimine del programa Amazon Underground.Para obtener más detalles sobre estas recomendaciones, consulte Requisitos de diseño y modificación de aplicaciones y directrices para Amazon Underground .
Asegúrese de que su aplicación de Amazon Underground se adhiera a las siguientes directrices:
Títulos Premium : si tu aplicación es un título premium donde los usuarios normalmente pagan por la aplicación en otras plataformas, resalta el valor añadido de tu aplicación en la versión de Amazon Underground.Si la única diferencia entre una versión premium de su aplicación y una gratuita es la eliminación de anuncios en la versión premium, asegúrese de proporcionar características o beneficios adicionales en la versión de Amazon Underground de su aplicación. Las aplicaciones Premium en las que la falta de anuncios en la versión Amazon Underground es la única característica premium no se considerará para el programa.
Metadatos de la aplicación: en el paquete de envío a Amazon Appstore, la versión de Amazon Underground de tu aplicación debe conservar la identidad y la marca de la versión no subterránea.Sin embargo, Amazon le anima a utilizar activos y medios actualizados para la versión de Amazon Underground, como capturas de pantalla y descripción de la aplicación, para ayudar a comunicar la propuesta de valor de la versión de Amazon Underground a sus usuarios.Por ejemplo, agregando tachas a los gráficos para los elementos IAP.La descripción de la aplicación no debe incluir referencias a contenido pagado.No copie y pegue la descripción de la aplicación en la versión no subterránea de su aplicación si hace referencia a contenido pagado.
Compras en la aplicación (IAP) : la versión de Amazon Underground de su aplicación puede incluir IAP gratuito o ilimitado, siempre y cuando su implementación cumpla con las siguientes pautas:
Disponibilidad de elementos de IAP : Todos los elementos de IAP en la versión no subterránea de su aplicación (o elementos equivalentes) deben permanecer en la versión de Amazon Underground de su aplicación para que el cliente tenga la opción de seleccionar de forma gratuita. Esto permite a los clientes ver beneficios inmediatos y entender el valor de «todo gratis».
Desbloqueo de funciones o actualizaciones : para las aplicaciones que utilizan elementos IAP para desbloquear funciones o actualizaciones, asegúrese de que estas características y actualizaciones permanezcan en la aplicación .Un usuario no debe buscar un elemento IAP popular de la versión no subterránea de su aplicación y encontrar que este elemento falta en la versión de Amazon Underground.
Anuncios en la aplicación: no puede obligar a los usuarios a ver un anuncio para desbloquear una función o un elemento IAP.
Compartición social : no vincule el avance dentro de su aplicación al compartir social.No es posible que su aplicación requiera que un usuario comparta o publique en un sitio de medios sociales para desbloquear una característica o elemento IAP.
Progreso del Juego : No implemente lapsos de tiempo o «tiempo de reutilización» para que los clientes de Amazon Underground restrinjan su progreso.Por ejemplo, no requieren que los clientes esperen un cierto número de horas antes de que puedan desbloquear un nuevo nivel.
Títulos de Freemium con opción a pagar por la versión libre de anuncios : si su título de freemium incluye un elemento para eliminar anuncios como el único elemento de IAP de la aplicación, su aplicación no se considerará para el programa.Proporcione beneficios adicionales al cliente dentro de la aplicación, como niveles adicionales o moneda dentro de la aplicación.
Aplicaciones en segundo plano : no recibirás regalías por el tiempo que la aplicación pase corriendo en segundo plano.Si su aplicación se ejecuta principalmente en segundo plano, es probable que no se considere para Amazon Underground.
Hay personas que de repente cuando reciben fotos o videos por whatsapp, al intentar verlos o reproducirlos aparece un molesto mensaje
Error de descarga:. No se ha podido completar la descarga. Vuelva a intentarlo más tarde.
Y por cierto, por mucho que lo intentemos o esperemos no cambia la situación..
En casos aislados, cuando se intenta adjuntar algo anexo incluso avisa «ok» pero obviamente no envía nada . No obstante el problema es mayor aun cuando nos envían un archivo, pues pulsamos en descargar y vuelve a saltar el mensaje «Error en la Descarga: No se ha podido completar la descarga, inténtelo mas tarde. « ¿como podemos solucionar este grave problema?
Falta la carpeta media o se crea un fichero llamado media
Un primer posible origen del problema del fallo de la descarga puede el siguiente: la carpeta «Media» de whatsapp por alguna razón se renombra o desapaprece ,razón por la cual la aplicacion no sabe qué hacer con los archivos (video, audio, imágenes) y da este extraño error
En caso de que sospechemos que esa podría ser la causa podemos hacer lo siguiente.
1- Conectar el terminal al pc de modo que podemos editar la tarjeta de memoria
2- Ir a la tarjeta de memoria. Alli habrá muchas carpetas ,pero las que nos interesa es la carpeta whatsapp que a su vez debe contener cuatros carpetas :
.trash
Backups
Database
Media
Si falta la carpeta Media o tenemos un archivo llamado media sin extensión es un síntoma inequívoco de mal funcionamiento .
3- Elimine el archivo media de manera que nos queden al menos las tres primeras carpetas solamente.
4- Cree una nueva carpeta llamada Media
5- Entre en la carpeta Media (que acaban de crear) para ver que esté vacía. Por defecto luego la propia aplicación creará otras 8 subcarpetas como en la imagen siguiente:
6- Ahora hay dos opciones:
a) Reiniciar el terminal . (desconéctelo de manera segura )
b) Volver a conectarlo al pc,para poder editar la tarjeta de memoria .Entre en la carpeta WhatsAppMedia y fíjense si ya se crearon las nuevas carpetas, si esto no sucedió entonces cree manualmente al menos las cuatro carpetas :
Wallpaper
WhatsApp Audio
WhatsApp images
WhatsApp Video
Una vez hecho ,por favor reinicie su terminal y compruebe que ya se puede descargar ok
Tarjeta SD fragmentada o con errores
Un segundo posible origen del problema puede prevenir por un fallo en la tarjeta microsd por excesiva fragmentación ,razón por la cual la aplicación no sabe qué hacer generalmente con ficheros grandes como archivos de video o audio ( no con las imágenes) y da este extraño error
Para intentar solucionarlo copiaremos el contenido de la carpeta whatasapp a nuestro ordenador y obviamente todo lo que nos interese e intentaremos hacerle un formateo a la sd
Un claro síntoma de que la tarjeta esta mal es que no permite formatearlo con las hermanamientos estándar del sistema operativo.
.
Una herramienta que nos permite formatear incluso con estos problema es hdd low level format tool ,pero tenemos que tener extrema atencion en la unidad que deseamos formatear:
Un vez seleccionada la unidad , pulsar en la pestaña «low level format» y el botón «format thos device»
Tras un rato ( unos 8minutos para uan kingston de 8gb) deberia finalizar el proceso
Un vez hayamos formateado la sd, podemos volver a copiar el contenido de la carpeta whtasapp y desinstalar y volver a instalar la aplicación whatsapp para que al iniciarse pregunte si desea recuperar el contenido de la sd ..
Debería ahora volver a funcionar las descargas …( o si no es así cambie la sd por otra nueva e intente volver a probar)
En un post anterior veíamos que el panorama del entorno necesario para programar un aplicación que se ejecute sobre cualquier dispositivo Android ha cambiado sustancialmente reduciéndose simplemente a una potente herramienta gratuita , que ademas proporciona Google: Android Studio.
En este post seguiremos profundizando en el desarrollo de aplicaciones con Android Studio deteniéndonos en uno de los aspectos mas llamativos de cualquier aplicación : la interfaz gráfica de usuario
Android proporciona un vocabulario de XML que corresponde a las subclases de View y ViewGroup, de modo que puede definir su IU en XML usando una jerarquía de elementos de IU y los diseños son subclases de ViewGroup
Generalmente, los objetos View son widgets de IU como botones o campos de texto y los objetos ViewGroup son contenedores de vistas invisibles que definen la disposición de las vistas secundarias, como en una cuadrícula o en una lista vertical.
Diseño interfaz
Aunque existen infinitas posibilidades de diseño del interfaz ,para empezar, usaremos un diseño sencillo lineal que coloca todos los elementos gráficos uno a continuación del otro:
En la ventana Project de Android Studio, abra el fichero activity_main.xml( app > res > layout > activity_main.xml).Este archivo XML define el diseño de tu actividad y contiene la vista de texto predeterminada “Hello World”.
Cuando abra un archivo de diseño, lo primero que ve es el editor de diseño, pero muchos programadores prefieren trabajar directamente con el XML; por lo tanto, haga clic en la pestaña Text en la parte de abajo de la ventana para pasar al editor de texto.
Borre todo el contenido del fichero e introduzca el siguiente XML:
LinearLayout es un grupo de vistas (una subclase de ViewGroup) que dispone las vistas secundarias en sentido vertical u horizontal, según lo especificado por el atributo android:orientation. Cada elemento secundario de un LinearLayout aparece en la pantalla en el orden en que aparece en XML.
Se necesitan otros dos atributos, android:layout_width y android:layout_height, para especificar el tamaño de todas las vistas.
Debido a que LinearLayout es la vista de raíz en el diseño, debería ocupar el área de la pantalla completa que está disponible para la app al establecer el ancho y el alto en "match_parent". Este valor declara que la vista debería expandir su ancho o alto para coincidir con el ancho o alto de la vista primaria.
Agregar un campo de texto
En el archivo activity_main.xml, dentro del elemento <LinearLayout>, agregue el siguiente elemento <EditText>:
A continuación, se ofrece una descripción de los atributos del <EditText> que ha agregado:
android:id:Esto proporciona un identificador único para la vista, que puede usar para hacer referencia al objeto desde elcódigo de la app, como leer y manipular el objeto .El signo de arroba (@) se requiere cuando se hace referencia a cualquier objeto de recursos de XML y va seguido por el tipo de recursos (id en este caso), una barra diagonal y el nombre del recurso ().El signo más (+) antes del tipo de recurso se necesita solo cuando se está definiendo un ID de recurso por primera vez. Cuando compila la app, las herramientas del SDK usan el nombre del ID para crear un nuevo ID de recurso en el archivo R.java de tu proyecto que hace referencia al elemento EditText. Con el ID de recurso declarado una vez de esta forma, otras referencias al identificador no necesitan el signo más. Es necesario el uso del signo más solo cuando se especifica un nuevo ID de recurso y no se necesita para los recursos concretos, como strings o diseños. Consulta el cuadro lateral para más información sobre los objetos del recurso.
android:layout_width y android:layout_height:En lugar de usar tamaños específicos para el ancho y el alto, el valor "wrap_content" especifica que la vista solo debe ser lo suficientemente grande para ajustarse al contenido de la vista. Si en cambio usa "match_parent", el elemento EditText ocupará la pantalla porque coincidirá con el tamaño del elemento primario LinearLayout. Para más información, consulta la guía de Diseños.Fijar el ancho en cero (0 dp) hace que la casilla de entrada ocupe el ancho de pantalla y mejora el rendimiento del diseño, ya que el uso de "wrap_content" como ancho exige que el sistema calcule un ancho, lo cual a la larga es irrelevante porque el valor de peso requiere otro cálculo de ancho para completar el espacio restante.
android:hint :Esta es una string predeterminada para mostrar cuando el campo de texto esté vacío. En lugar de usar una string codificada como valor, el valor "@string/edit_message" hace referencia a un recurso de string definido en un archivo separado. Debido a que esto hace referencia a un recurso concreto (no simplemente un identificador), no necesita el signo más. Sin embargo, debido a que aún no se ha identificado el recurso de string, aparecera un error del compilador. Este recurso de string tiene el mismo nombre que el ID del elemento: edit_message. Sin embargo, las referencias a los recursos siempre tienen ámbitos por tipo de recurso (como id o string); por lo tanto, usar el mismo nombre no genera conflictos.
Agregar recursos
De manera predeterminada, en un proyecto de Android se incluye un archivo de recursos en string en un fichero llamado strings.xml ( res > values > strings.xml) .
Parar, agregar strings nuevas al fichero strings.xml siga los siguientes pasos.
Desde la ventana Project, abra res > values > strings.xml.
Agregue dos strings de modo que el archivo se vea de esta forma:
<?xml version="1.0" encoding="utf-8"?><resources><stringname="app_name">My First App</string><stringname="edit_message">Introduzca un mensaje</string><stringname="button_send">Enviar</string></resources>
Para el texto en la interfaz de usuario, siempre especifique cada string como un recurso. Los recursos de strings de texto permiten administrar todos los textos de IU en una sola ubicación, lo que hace que sea mucho más fácil encontrar y actualizar el texto.
Externalizar las strings también permite localizar su aplicacion ara diferentes idiomas al proporcionar definiciones alternativas para cada recurso de string.
Agregar un botón
Vuelva al archivo activity_main.xml y agregue un botón después del widget <EditText>.
Como vemos este botón no necesita el atributo android:id porque no se hará referencia a él desde el código de la actividad.
Actualmente, la configuración del diseño hace que los widgets EditText y Button tengan el tamaño necesario para ajustarse a su contenido, como se muestra a continuación
Esto funciona bien para el botón, pero no tan bien para el campo de texto porque el usuario podría escribir algo más largo. Sería bueno rellenar el ancho de la pantalla excedente con el campo de texto. Puedes hacerlo dentro de un LinearLayout con la propiedad de peso, que puedes especificar usando el atributo android:layout_weight.
El valor weight es un número que especifica la cantidad del espacio restante que cada vista debería consumir, relativo a la cantidad consumida por vistas del mismo nivel. Esto funciona como la cantidad de ingredientes en una receta de una bebida: «2 partes de refresco, 1 parte de sirope» significa que dos tercios de la bebida son de refresco. Por ejemplo, si le das a una vista un valor de weight de 2 y a otra un valor de weight de 1, la suma es 3, de manera que la primera vista completa 2/3 del espacio restante y la segunda vista completa el resto. Si agregas una tercera vista y le das un valor de weight de 1, la primera vista (con un peso de 2) ahora obtiene 1/2 del espacio restante, mientras que las dos restantes obtienen 1/4.
El valor de weight predeterminado para todas las vistas es 0, de manera que si especificas cualquier valor de weight superior a 0 para solo una vista, dicha vista completa el espacio restante después de que se asigne el espacio requerido a todas las vistas.
El resultado de modificar el fichero activity_main.xml, deberia ofrecer el siguiente aspecto:
Lo siguiente es qué apariencia debería tener el archivo de diseño activity_main.xml completo:
Este atributo indica al sistema que llame al método sendMessage() de tu actividad cuando un usuario haga clic en el botón.
En el archivo java > com.example.myfirstapp > MainActivity.java, agregar el código auxiliar del método sendMessage() como se muestra a continuación:
publicclassMainActivityextendsAppCompatActivity{@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);}/** Called when the user clicks the Send button */publicvoid sendMessage(View view){// Do something in response to button}}
Para que el sistema haga coincidir este método con el nombre del método proporcionado a android:onClick, la firma debe ser exactamente como se muestra. Específicamente, el método debe:
Ser público
Tener un valor de retorno vacío
Tener un objeto View como el único parámetro (esto será el View al que se le hizo clic)
Luego, completarás este método para leer el contenido del campo de texto y entregar dicho texto a otra actividad.
Crear una intent
Un Intent es un objeto que proporciona enlace de tiempo de ejecución entre componentes separados (como dos actividades) representando la “intención de hacer algo” de una app.
En el fichero MainActivity.java, agregue el código que aparece a continuación para sendMessage():
publicclassMainActivityextendsAppCompatActivity{publicfinalstaticString EXTRA_MESSAGE ="com.example.myfirstapp.MESSAGE";@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);}/** Called when the user clicks the Send button */publicvoid sendMessage(View view){Intent intent =newIntent(this,DisplayMessageActivity.class);EditText editText =(EditText) findViewById(R.id.edit_message);String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);}}
Android Studio mostrará errores Cannot resolve symbol porque este código hace referencia a clases que no están importadas. Puede resolver algunos de estos errores con la funcionalidad de “importación de clase” de Android Studio presionando Alt + Intro (u Opción + Regresar en Mac).
Sus importados deben terminar de la siguiente forma:
En sendMessage() tienen lugar muchísimos procesos. Por ello, explicaremos lo que sucede.
El constructor de Intent toma dos parámetros:
Un Context como su primer parámetro (se usa this porque la clase Activity es una subclase de Context)
La Class del componente de la app a la cual el sistema debe entregar la Intent (en este caso, la actividad que debería iniciarse).
Nota: La referencia a DisplayMessageActivity emitirá un error en Android Studio porque la clase aún no existe. Ignora el error por ahora; pronto crearás la clase.
El método putExtra() agrega el valor de EditText a la intent. Una Intent puede llevar tipos de datos como pares clave-valor denominados extra. La clave es una EXTRA_MESSAGE constante pública porque la actividad siguiente usa la clave para devolver el valor de texto. Es bueno definir claves para los campos extra de intents usando el nombre del paquete de tu app como prefijo. Esto garantiza que las claves sean únicas, en caso de que tu app interactúe con otras apps.
El método startActivity() inicia una instancia del DisplayMessageActivity especificado por la Intent. Ahora debes crear la clase.
Crear la segunda actividad
En la ventana Project, haz clic con el botón secundario en la carpeta app y selecciona New > Activity > Empty Activity.
En la ventana Configure Activity, ingresa “DisplayMessageActivity” en Activity Name y haz clic en Finish
Android Studio automáticamente realiza tres acciones:
Crea el DisplayMessageActivity.java de la clase con una implementación del método onCreate() obligatorio.
Crea el archivo de diseño activity_display_message.xml correspondiente.
Agrega el elemento <activity> obligatorio en AndroidManifest.xml.
Si ejecutas la app y haces clic en el botón Send en la primera actividad, la segunda actividad se iniciará, pero estará vacía. Esto sucede porque la segunda actividad usa el diseño predeterminado vacío proporcionado por la plantilla.
Mostrar el mensaje
A continuación puede, modificar la segunda actividad para que muestre el mensaje que pasó la primera.
En DisplayMessageActivity.java, agregue el siguiente código al método onCreate():
Tienen lugar muchísimos procesos. Veamos la explicación:
La llamada getIntent() captura la intent que inició la actividad. Toda Activity se invoca a través de una Intent, independientemente de cómo el usuario navegue hasta el punto en cuestión. La llamada getStringExtra() muestra los datos de la primera actividad.
De manera programática, se crea un elemento TextView y se establece el tamaño y mensaje de este.
Se agrega el elemento TextView al diseño identificado por R.id.activity_display_message. Se transmite el diseño a ViewGroup porque es la superclase de todos los diseños y contiene el método addView().
Nota: Es posible que el diseño XML generado por versiones anteriores de Android Studio no incluya el atributo android:id. La llamada findViewById() fallará si el diseño no tiene el atributo android:id. En este caso, abra el fichero activity_display_message.xml y agregue el atributoandroid:id="@+id/activity_display_message" al elemento de diseño.
Ejecucion de la app
Para ver el aspecto que ahora tendrá su app en tu dispositivo, haga clic en Run en la barra de herramientas .
Cuando se abra, escriba un mensaje en el campo de texto y haga clic en Send. La segunda actividad reemplaza a la primera en la pantalla, con lo cual se mostrara el mensaje que ingresoe en la primera actividad.
Descomprimir el fichero con el winrar , seleccionando la ruta de las librerías de la aplicación ,por ejemplo en la ruta C:\Users\xxxxxxxxx\AndroidStudioProjects\MyApplication\app\libs (donde xxxxx es su usuario logado en windows)
Ahora ya puede abrir Android Estudio, volver a cargar su proyecto e intentar ejecutar su proyecto pues no debería dar ningún error
En caso de que seguidos los pasos anteriores persista el error , debería eliminar la inferencia a la librería Junit antigua y colocar en su lugar la nueva librería.
Esto se hace pulsando en File–>Proyect Structure.
Aquí , nos iremos a nuestra app( Modules–>App) y seleccionaremos Dependencies
Aquí deberíamos posicionarnos sobre la libreria junit y darle el botón – (Remove)
Acto seguido daremos a añadir con el botón + ( a la derecha), seleccionaremos Libraries Deependencies –>Files dependencies y nos iremos a la ruta donde la nueva almacenamos la nueva librería ( C:\Users\xxxxxxxxx\AndroidStudioProjects\MyApplication\app\libs)
Finalmente le damos a «Compile» y ya debería poderse ejecutar sin problemas sin volver a dar el error
Para todos aquellos que se inician en el desarrollo de aplicaciones para Android, es importante tener claro que entorno de desarrollo es el mejor y más completo para empezar con la primera aplicación, pues ese primer proyecto quizás un buen día, pueda convertirse en una app de uso masivo y por lo tanto, reportar beneficios económicos.
Al principio había desarrolladores que usaban NetBeans , pero poco después todas la comunidad se paso programar con Eclipse hasta que salió a la luz Android Studio, que o todo apunta a que será el entorno que use todo el mundo pues en poco tiempo será lo único que el equipo de Android recomiende.
Está basado en IntelliJ IDEA, uno de los IDE para java de primer nivel (entre los mejores, con Eclipse, netbeans)
Ademas soporta un nueva forma de construir los apk. Más serio, mas versátil, mas potente, mas actual, y mas parecido a un proyecto en java.
En este post vamos a intentar solucionar un típico problema cuando empezamos a desarrollar con Android Studio en equipos no muy modernos.
Este problema como vamos a ver, no se resuelve reinstalando Android Studio
El error completo ocurre cuando intentamos probar cualquier proyecto ( incluso vacío ) , apareciendo el mensaje «Gradle sync failed: CreateProcess failed, error=216 Consult IDE log for more details (Help | Show Log)»
Este es un ejemplo:
El error 216 , que en ocasiones no es mostrado completo corresponde a este descriptivo «This version of %1 is not compatible with the version of Windows you’re running. Check your computer’s system information and then contact the software publisher»
Esto sucede porque se incluye la versión de 64bit del JRE con Android Studio para Windows, lo cual produce errores en sistemas de 32 bits.
La solución al problema pasa por dos pasos:
No utilice el JDK incorporado: vaya al cuadro de diálogo Archivo -> Estructura del proyecto, desmarque «Usar JDK incrustado» y seleccione el JRE de 32 bits que tenga instalado por separado en su sistema . Al menos debería ser JDK8 o superior .
Disminuya la huella de memoria para Gradle en gradle.properties (Propiedades del proyecto), por ejemplo, establezca en -Xmx768m ( tendrá por defecto -Xmx1024m).Es decir debería quedar así:
¿Piensa que se necesita mucho tiempo para crear una app movil para la Raspberry Pi que involucre un proyecto de IO para conectar sensores de movimiento, luces , relés ,etc y se pueda completar en breve ?
La verdad es que escribir una aplicación, implica leer toneladas de documentación, tomar mucho tiempo para aprender lenguajes de programación, código,y mucho tiempo de trabajo…Pero ¿por qué invertir tanto tiempo en preparar su proyecto, cuando se puede estar en funcionamiento en una fracción de tiempo permitiendo la construcción de sus proyectos de automatización en cuestión de minutos.?
Entonces, ¿cómo es posible todo esto? Pues gracias a un framework gnerico desarrollado por myDevices IO Project Builder llamado Cayenne .Cayennese ha creado para los desarrolladores y fabricantes deseosos de construir rápidamente prototipos y proyectos increíbles con Raspberry Pi permitiendo con una cuenta gratuita de Cayena, crear un número ilimitado de proyectos.
También tiene capacidades de pleno derecho de la IO para que pueda controlar de forma remota sensores, motores, actuadores, incluidas los puertos de GPIO con almacenamiento ilimitado de datos recogidos por los componentes de hardware, triggers y alertas, que proporcionan las herramientas necesarias para la automatización y la capacidad de configurar alertas. Ademas también puede crear cuadros de mando personalizados para mostrar su proyecto con arrastrar y soltar widgets que también son totalmente personalizables.
Ejemplo paso a paso
Como se puede ver en el video , Cayyene app es una innovadora solución genérica que nos puede ahorrar mucho trabajo a la hora de crear un proyecto con la Raspberry Pi
En resumen ,algunos de los rasgos que más destacan de la solución de Cayyene es :
Tablero de instrumentos flexibles :Personalizar el teléfono o en el salpicadero en línea con arrastrar y soltar widgets.
Acciones de activación :Crear disparadores y alertas para dispositivos, eventos, acciones y más.
Control de GPIO :configurar a distancia GPIO desde una aplicación móvil o en el salpicadero.
El acceso remoto instantáneo :Automáticamente el control remoto y accede a tu Pi desde su teléfono o computadora.
Configuración fácil:conectar rápidamente su Pi a Internet y conectar sensores, actuadores y extensiones en cuestión de minutos
Par mostrar lo sencillo que puede ser crear un proyecto con Cayyene, vamos a ver un ejemplo
Todo el equipo que se necesita para la creación de myDevices Cayenne para la Raspbery Pi es muy sencillo (es posible que necesite piezas adicionales si usted está mirando para agregar más sensores, dispositivos y cualquier otra cosa que desee conectado a tu Pi ). : Necesario:
Raspberry Pi
8gb tarjeta Micro SD si se está utilizando una Raspberry Pi + 2, 3 o B o tarjeta SD de 8 GB para cualquier versión anterior del Pi.
Cable Ethernet o Wifi dongle (Pi 3 tiene Wi-Fi incorporado).Usted también tendrá que asegurarse de que tiene una conexión a Internet para la Pi.
Opcional:
Caja para la Raspberry Pi
Teclado USB y ratón USB
A continuación se presentan los elementos utilizados en el circuito de ejemplo
DS 18B20 del sensor de temperatura o similar
4v7k Resistencia
Kit de arranque GPIO
Cables de conexión
Placa prototipos
Instalación de Frambuesa Pi Cayenne
El proceso de instalación de Cayena en la Raspberry Pi es bastante simple y no debería tomar demasiado tiempo para obtener su creación y funcionamiento.Usted tendrá que asegurarse de que ha instalado en su Raspbian Pi..
En primer lugar, vaya a myDevices Cayenne y registrarse para obtener una cuenta gratuita.
Una vez que ya se ha registrado usted tendrá que registrarse / conectar el Pi hasta la cuenta que acaba de crear.Para ello sólo tiene que copiar las 2 líneas de comandos que se muestran después de su inscripción.Introduzca estos en el terminal para su Pi.(Estos archivos son únicos para cada instalación nueva)
Alternativamente, se puede descargar la aplicación y se puede localizar e instalar en su Cayenne Pi automáticamente. (Tenga en cuenta SSH debe estar habilitado )
Tomará unos minutos para instalar en el Pi en función de la velocidad de su conexión a Internet es.El navegador web o aplicación deben actualizar automáticamente con información sobre el proceso de instalación.
Una vez instalado el tablero de instrumentos se mostrará y debe verse como algo más adelante.
Configuración de su primer sensor
En este ejemplo vamos a configurar un sensor de temperatura.El sensor usado es el DS18B20,ahora bien el uso de Cayyene hace que sea muy sencillo.
Todo lo que necesita hacer es configurar el circuito y lo han conectado a la Pi.También se he añadido un LED que está conectado a la clavija # 17 con una resistencia de 100 ohmios al carril de suelo. Ahora bien, cuando configuran el sensor se detecta automáticamente y se añade al tablero de instrumentos.Si no se agrega automáticamente a continuación, tendrá que añadir manualmente.Para añadir manualmente, simplemente, hacer lo siguiente.
Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
Elija un dispositivo en el cuadro desplegable.
Encontrar el dispositivo, en este caso se trata de un sensor de temperatura DS18B20.
Añadir todos los detalles para el dispositivo.En este caso, tendrá la dirección del esclavo para el sensor.Para obtener la dirección del esclavo escriba lo siguiente en el terminal del Pi.
cd /sys/bus/w1/devices ls
La dirección del esclavo será similar a esta 28-000007602ffa .Simplemente copia y pega esto en el campo de esclavos dentro de Cayena salpicadero.
Una vez introducida seleccione sensor de complemento.
El sensor se debe mostrar en el salpicadero.
Si necesita personalizar su prensa sensor de la rueda dentada y va a llegar a algunas opciones.
También puede ver estadísticas / gráficos.Por ejemplo, el sensor de temperatura puede representar gráficamente los datos en tiempo real y mantendrá los datos históricos también.
Si desea agregar también un LED que se pueda encender y apagar a través del panel de control, siga las siguientes instrucciones.
Ahora vamos a añadir un dispositivo más.A menos que éste será un LED.
Así que volver a añadir un nuevo dispositivo.
Ahora buscar salida digital y seleccionarlo.
Para este dispositivo seleccione su Pi, el tipo de widget es botón, el icono puede ser lo que quiera, y luego seleccione GPIO integrado.Por último canal es el pin / canal que nuestro LED está conectado.Para este ejemplo, es el pin # 17.(Esta es la numeración de los pines GPIO).
A continuación, pulse el botón sensor de complemento.
Ahora puede apagar el pin GPIO alta y baja del tablero de instrumentos y también utilizarlo en un disparador.
Ahora estamos listos para crear nuestro primer gatillo.
Ahora debe tener dos dispositivos en el panel de control que debería ser algo como esto.
Configuración de su primer disparador
Disparadores en Cayyene son una manera de reaccionar a un cierto cambio en la Pi a través de un sensor conectado a él.Esto podría ser algo tan simple como una temperatura superior a un determinado valor o incluso sólo su pi ir fuera de línea.Como se puede imaginar que esto puede ser muy poderosa en la creación de dispositivos inteligentes que reaccionan a los alrededores.Por ejemplo, si la habitación se enfría demasiado, a continuación, convertir un calentador.
El proceso de añadir un disparador es muy sencillo :
Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
Seleccionar un trigger desde el cuadro de abajo.
En primer lugar el nombre de su activación, voy a llamar a la mía «demasiado caliente».
Ahora arrastrar y soltar su Frambuesa Pi desde la esquina izquierda en el caso de la caja.
Por debajo de esto seleccionar el sensor de temperatura y tienen casilla junto a «por encima de la temperatura» seleccionado.(Opciones del dispositivo Si no se muestran simplemente refrescar la página)
Ahora en el cuadro de selección a continuación, notificación y agregar una dirección de correo electrónico o número de teléfono de un mensaje de texto (puede agregar ambos).Asegúrese de marcar las casillas de verificación también.
Ahora haga clic en «Activación de almacenamiento».
Ahora debería ser guardado y le enviará una alerta cada vez que el sensor de temperatura es superior a 40 grados centígrados.
También puede arrastrar el Raspberry Pi en el cuadro a continuación, y tienen que hacer muchas cosas, incluyendo el control de los dispositivos de salida.Por ejemplo, en mi circuito Tengo un LED que se enciende cuando la temperatura supera los 40 grados centígrados.
Para hacer clic en el gatillo de disparo LED de nueva situada en la parte superior de la página.Nombre esta activar el gatillo LED.
Ahora arrastrar el Pi en el caso de la caja y luego seleccione el sensor de temperatura de nuevo con 40 grados centígrados por encima.
Ahora arrastrar el Raspberry Pi en cuadro a continuación.Selecciona nuestra salida digital y tienen la casilla de marcado.
Ahora haga clic en Activación de almacenamiento.
Ahora cada vez que nuestro sensor de temperatura conectado a la Pi reporta una temperatura superior a 40 grados centígrados se enviará un correo electrónico y encienda el LED.También tendrá que añadir otro factor desencadenante para apagar el LED cuando se cae de nuevo por debajo de 40, pero eso se lo dejo por ahora y pasar a los eventos.
Eventos
Eventos en Raspberry Pi Cayenne es algo similar a los factores desencadenantes pero son dependientes del tiempo en lugar de depender de un cambio en un sensor o el propio dispositivo.La creación de un evento es bastante fácil
Vamos a ver rápidamente cómo configurar su pi para reiniciar una vez al mes.
Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
Seleccionar evento en el cuadro de abajo.
Ahora debería ver una pantalla con un calendario y una ventana emergente llamado nuevo evento.
Introduzca los detalles de su evento.Por ejemplo, el mío se llama reinicio mensual y ocurrirá en el primer día de cada mes a las 2 am.A continuación se muestra un ejemplo de la pantalla.
Una vez hecho esto, haga clic en Guardar.
Ahora debería ser capaz de ver su evento en el calendario.Basta con hacer clic en él si desea modificarlo.
Como se podría imaginar eventos puede ser bastante potente por lo que sería digno de mirar en estos más.Un buen ejemplo del uso de eventos sería si se necesita algo para ejecutar o activar (como luces que necesitan para ser activado en un momento específico).
Panel de GPIO
El panel GPIO dentro de Frambuesa Pi Cayena le permite controlar y modificar las patas del Pi.Por ejemplo, puede activar un pin de ser una entrada a una salida inversa y el vicio.También se puede activar tanto los pines de salida baja y alta. Como se puede ver que también lo convierte en un gran lienzo de referencia si necesita hacer referencia hacia atrás y ver qué pines son los que necesita.También puede ver los dispositivos que están asignados actualmente a los pines específicos.También es capaz de ver el estado actual de un alfiler.(Por ejemplo, entrada o salida y baja o alta)
Escritorio remoto
Se puede instalar Cayyene también en un escritorio remoto a su Frambuesa Pi, ya sea a través del navegador web o por medio de la aplicación móvil.Puede hacer esto simplemente haciendo lo siguiente.
Sobre el tablero encontrar el widget que dice «comandos».
Dentro de este control, haga clic en el acceso remoto.
Ahora se conectará a la Pi y abrir una nueva ventana.Si una nueva ventana no se abre el navegador más probable es bloqueado.Simplemente permiten cayenne.mydevices para abrir nuevas pestañas.
Una vez hecho esto se puede controlar su Pi igual que como si estuviera allí con ella.
Una de las ventajas con el uso de Cayena de escritorio remoto es que se puede acceder a él en cualquier parte del mundo con bastante facilidad en lugar de tener que configurar una VPN o abrir los puertos de la red.
Debe estar conectado para enviar un comentario.