Preparando la interfaz Rad Studio 10.3



Como programador me paso muchas horas delante de la pantalla y necesito que el interfaz del software con el que trabajo me resulte práctico, eficiente y respetuoso con mi salud visual sobre todo.
A continuación les voy a describir la forma en la que lo tengo configurado, que no quiere decir que sea la mejor, sino que es la disposición que para mi forma de trabajar me parece mas adecuada y que es la que utilizo habitualmente.
Utilizo una pantalla led rectangular de 23'. (¡Importante! si la pantalla tiene conexión DVI, úsenla por favor, y olvídense de la antigua conexión VGA).
Al abrir Rad Studio lo maximizo y aplico el tema "Dark" (Menú Tools-Options-User Interface-Theme Manager). El problema que tiene utilizar temas claros es que los ojos reciben demasiada luz al utilizar pantallas grandes y al cabo de un tiempo se nota el cansancio visual.
El tema de color que utilizo es "Dark" (Tools-Options-User interface-Editor Options-Color), que me permite tener un color negro intenso como fondo de las líneas de código.



Desde "Save and Desktop" (Tools-Options-IDE) marcar la opción "Periodically save backup files for AutoRecover" y el intervalo ponerlo en 10 minutos.


Para mí, un tema básico es desactivar el diseñador embebido "Embedded designer" (Tools-Options-User Interface-Form Designer), ya que cuando tienes que trabajar con varias units, al pasar de una a otra aparece por unos instantes la pantalla de trabajo en blanco, lo cual es muy molesto. Así separo el código de cada unit que me queda en la parte superior, de lo que son los forms que se ven minimizados en la parte inferior de la pantalla.
Para activar los forms pulsen F12.


Otros trucos que les pueden ser de utilidad:
Si no les funcionan las apps realizadas con versiones anteriores a Rad Studio 10.3  prueben lo siguiente:
- Renombrar el archivo "AndroidManifest.template.xml" para dejar que delphi lo reconstruya cuando vuelvan a compilar y ejecutar la app.
- Si utilizan el componente tActionList - "ShowShareSheetAction" deben activar el permiso "Secure File Sharing" desde el archivo de proyecto de la app. (Project-Options-Application-Entitlement List).
- Recordar que si utilizan permisos marcados como "peligrosos" (Project-Options-Application-Uses Permission-Dangerous, runtime user approval) deben solicitar la aprobación del usuario. En los archivos de ejemplo de Rad Studio pueden ver cómo implementarlos.
Las librerías Android que deben utilizar son las siguientes (una vez que les funcione la app y que se compile y ejecute correctamente pueden ir probando a desactivar algunas de ellas)



Rad Studio 10.3 Rio ya está aquí



Por fin ha llegado la esperada versión 10.3 Río de Rad Studio que llega con múltiples novedades que al igual que anteriores versiones nos permitirán hacer cosas increíbles de una forma sencilla.

Las mejoras del producto incluyen:

  • Un compilador actualizado de Clang mejorado con soporte de C ++ 17 para Windows de 32 bits.
  • Declaración de variables en línea, inferencia de tipos y más para el lenguaje Delphi.
  • Soporte actualizado de la plataforma móvil, incluidos Z-Order y controles nativos en Android.
  • Mejoras en VCL para pantallas de Alto DPI, una nueva lista de imágenes de VCL High DPI, soporte por Monitor V2, nuevas API de Windows 10 y WinRT.
  • Actualizaciones de RAD Server que incluyen nuevos componentes para simplificar el trabajo de procesamiento JSON y la creación de backends para aplicaciones web Sencha Ext JS.
  • Finalización y depuración mejoradas de código para construcciones optimizadas y nuevas bibliotecas para el lenguaje C ++.


RAD Studio 10.3 también presenta nuevas opciones de licencia que amplían la habilitación web, el servidor backend de la aplicación y las capacidades de base de datos para aplicaciones empresariales.



Estas incluyen una licencia de implementación de sitio único del Servidor RAD y una licencia de InterBase ToGo para la implementación móvil en la Edición Enterprise; una licencia Sencha Ext JS Professional, una licencia InterBase ToGo para la implementación móvil, una licencia de implementación en varios sitios del Servidor RAD y una licencia de Aqua Data Studio en RAD Studio Architect Edition.


Según dice la propia Embarcadero:

“RAD Studio 10.3 es uno de nuestros lanzamientos más importantes hasta ahora. "Hemos actualizado la apariencia del IDE para hacerlo más efectivo y agradable para un uso prolongado, y hemos mejorado significativamente la capacidad de nuestros clientes para crear Windows 10 y aplicaciones de dispositivos múltiples para iOS 12 y Android 9", dijo Sarina DuPont. Jefe de producto, Herramientas de desarrollo en Embarcadero. "Estas mejoras de RAD Studio hacen que sea más fácil y más rápido que nunca para los desarrolladores crear aplicaciones nativas multiplataforma que son el motor de la eficiencia de la empresa y que impulsan el crecimiento empresarial".

Danysoft, distribuidor de Rad Studio en España, ha organizado un webinar gratuito para presentar la versión 10.3.
Será online, el 18 de diciembre de 10 a 14 hrs. 
Tienen más información sobre el evento aquí

 Información de Embarcadero sobre Rad Studio 10.3 Rio:
- Vídeo en Youtube
- Información en su web (en español)

 

App para Android finalista del premio Datatón 2018


Les comunico que la app que he realizado llamada "GPS TOTAL RUN" (para Android) ha quedado finalista en los premios DATATÓN 2018 organizados por el Instituto Geográfico Nacional y la Escuela Técnica Superior en Topografía, Geodesia y Cartografía de Madrid.

Creo que es un magnífico ejemplo de lo que se puede llegar a hacer cuando se combina Google Maps, Google StreetView, MAPS javascript API, Android API, OpenStreetMap, PHP, Webservice, HTML5 y la utilización de los sensores del dispositivo (GPS, Inclinómetro, acelerómetro, hall).

Después de haber realizado esta app me he dado cuenta de la potencia, agilidad y facilidad de uso del lenguaje Delphi al programar aplicaciones móviles y animo a los lectores de este blog a que lo prueben y lo comparen con otros lenguajes y sistemas.

Esta app sirve para registrar las rutas que se hacen cuando se está en un vehículo, se hace senderismo o cuando se hace running, también puede cargar rutas en formato KML, GPX y mostrarlas en un visor junto a nuestra posición actual.

Además incorpora más de 30 utilidades que hacen exprimir al máximo el GPS del dispositivo.

DESCRIPCIÓN DE SUS FUNCIONES

- RUTAS: Si haces running, bicicleta o algún otro deporte puedes almacenar la ruta que has realizado, para luego verla en un mapa. Se graba la hora de inicio, hora de fin, duración, distancia, velocidad media, velocidad máxima, desnivel, minutos por Km, altitud máxima y mínima, tiempo en reposo y tiempo en movimiento, etc.
Exporta la ruta al formato GPX, KML y CSV.
Importa rutas del GPS Garmin.
Importa rutas desde la web de Wikiloc en formato GPX, KML.
El usuario puede enviar un link de la ruta para que otros usuarios si lo desean puedan seguirle.
Permite ajustar la ruta a la carretera (evitando los típicos zigzags de los gps)
Colorea la ruta indicando en qué tramos has ido más rápido o más lento.
Muestra gráficos de altitud y velocidad de la ruta.
Graba la ruta en segundo plano.

- ESTADÍSTICAS: Por día, semana y mes y por tipo de actividad.
Informando de los Km. recorridos, tiempo, ritmo y calorías.

- TIEMPOS: Después de hacer varias rutas te informa del tiempo que has tardado en hacer 500 m, 1000 m., 1500 m. etc. en cada una de ellas y lo muestra en un gráfico.

UTILIDADES RELACIONADAS CON EL GPS

- NAVEGACIÓN POR VOZ (selecciona la mejor ruta en coche, a pie o en transporte público)

- CALCULA RUTA ENTRE DOS PUNTOS y muestra indicaciones en texto.

- ELEVACIÓN: Muestra la elevación del terreno a lo largo de una ruta.

- PANEL DE NAVEGACIÓN: Muestra latitud, longitud, velocidad, distancia, aceleración, rumbo, altitud y presión del aire.

- SATÉLITES: Informa del número de satélites que usa el sensor GPS (con indicación de la potencia de la señal, azimut, elevación y país de origen del satélite)
Permite ver en un gráfico cómo varía con el tiempo la potencia de la señal de cada satélite.

- PUNTOS DE INTERÉS: Permite almacenar todos los puntos de interés que necesites (coordenadas, descripción, altitud, tipo de marcador, etc.

- ALTÍMETRO: Obtiene la altitud de 3 maneras: consultando Google Maps, según el dato de la altitud del GPS y midiendo la variación de la presión atmosférica.

- BRÚJULA: Informa del rumbo y del campo magnético.

- PARÁMETROS SOLARES: Muestra la hora del amanecer, el mediodía, minutos de luz, el zenit, azimut, elevación y declinación solar para cada minuto del día con calendario perpetuo.

- TRÁFICO: Visualiza la información del tráfico de tu ciudad en tiempo real.

- METRO: Muestra en el mapa el plano del metro.

- MAPAS OFFLINE: Descarga en tu móvil mapas offline.

- CALCULADORA GEOGRÁFICA. Convierte coordenadas en grados, minutos y segundos a grados / UTM y viceversa.

- SENSORES: Muestra todos los sensores que tiene el dispositivo y los valores que capturan cada uno de ellos.

- EXPORTA rutas y puntos de interés.

- IMPORTA RUTAS desde Wikiloc o desde el GPS Garmin.

- INFORMA DEL ESTADO DEL GPS. Indica coordenadas en Grados, minutos, segundos y UTM, bearing, precisión, first fix, zona UTM, meridiano central de la zona, hora GPS, zona GMT.


- PARKING: Sitúa en el mapa el lugar de estacionamiento del vehículo, permite hacer fotos y añadir una descripción.

- CUADRÍCULA: Muestra el mapa con indicación de la latitud y longitud a intervalos y se actualiza según el zoom del mapa.


- ACTUALIZA DATOS AGPS del dispositivo y si el dispositivo está rooteado añade nuevas utilidades.

- MIDE LONGITUDES / ÁREAS dibujando la ruta sobre el mapa.

- OBTIENE LAS COORDENADAS haciendo clic sobre el mapa.

En la mayoría de los módulos hay paneles de ayuda que te describen con detalle sus características.

Para personas con visión reducida, incorpora la opción de leer en voz alta los parámetros de las pantallas.
Si quieren más información pueden descargarse el siguiente manual 

Si desean contactarme para la realización de apps similares pueden enviarme un email a blogdelphimagic@gmail.com.

Monitorizar los latidos del corazón


Con Delphi, podemos monitorizar los latidos del corazón, utilizando un dispositivo Bluetooth LE

Heart Rate Monitor Bluetooth LE.png 

Esta aplicación actúa en modo cliente y al iniciarse lo primero que hace es buscar un servidor del cual leer los datos de los latidos del corazón.
Este servidor será un dispositivo como los que usan los runners mientras hacen alguna carrera.


Cuando se pulsa el botón "Scan" comienza la búsqueda de un dispositivo Bluetooth LE que implemente el servicio "Heart Rate" para ello utiliza el método "DiscoverDevices" con un timeout y un array de TBluetooth UUID's, en este caso BluetoothLE1.DiscoverDevices(2500, [HRSERVICE]) donde HRSERVICE es un servicio estándar.


TBluetoothUUID = '{0000180D-0000-1000-8000-00805F9B34FB}
 
Después del timeout se dispara el método "OnEndDiscoverDevices"
Para descubrir los servicios disponibles de un dispositivo se utiliza el método "GetServices" y si los encuentra vuelve a disparar el método GetCharacteristic
 
HRMEASUREMENT_CHARACTERISTIC: HRMEASUREMENT_CHARACTERISTIC: TBluetoothUUID  = '{00002A37-0000-1000-8000-00805F9B34FB}'
    BODY_SENSOR_LOCATION_CHARACTERISTIC:BODY_SENSOR_LOCATION_CHARACTERISTIC: TBluetoothUUID  = '{00002A38-0000-1000-8000-00805F9B34FB}'

Despues de conseguir el servicio y sus características comienza a recopilar los datos de los latidos.
Cuando se consigue obtener un valor se llama a "SubscribeToCharacteristic" para recibir datos periódicamente.
Para detener la recepción de datos se llama a "UnSubscribeToCharacteristic". 
El evento OnCharacteristicRead se llama cuando se lee un valor.
Dado que el servidor BluetoothLE envía un paquete con datos "en crudo - modo Raw" para extraer obtener las pulsaciones por minuto hay que seguir la especificación GATT (Heart Rate Measurement Data Package Structure), en cualquier caso en la ayuda de Delphi tenemos varios ejemplos y además desde RAD Studio - Tools - Getit Package Manager podremos descargarnos varios ejemplos.





NOTA: 
No confundir Bluetooh con Bluetooth LE (Low energy).
BluetoothLE Permite la comunicación entre dispositivos de pila de botón y dispositivos Bluetooth, que opera en 2.4 GHz (una de las bandas ISM), con una tasa de transferencia de 1 Mbps en la capa física, tiene soporte para seguridad, ya que puede emplear el sistema de cifrado AES y esquemas de seguridad configurables

Bluetooth permite un ancho de banda mayor en función de la versión:
 
Además Bluetooth LE no necesita parear dispositivos como requiere Bluetooth, tan sólo necesita encontrar un servidor para empezar a funcionar, excepto si la aplicación se ejecuta en Windows 8 o Windows 7, en cuyo caso sí que se necesita parear dispositivos.

Free Delphi CE Bootcamp Starts Today - Plus Free Bonus eBook

Week 1 begins today! Enroll for free and start streaming your lectures!
Delphi CE Bootcamp 2018 is a 8 week FREE instructional lecture series covering many different areas of Delphi development for new as well experienced developers. The free lecture series is presented by The Embarcadero Academy and stars renowned Delphi experts Marco Cantu, Cary Jensen, Andrea Magni, Olaf Monien, Ian Barker, Cesar Romero, and Alan Fletcher. New lectures will be posted each week throughout the bootcamp and replays will be available if you're not able to attend during a week.
The Delphi CE Bootcamp is free and you can sign up here After enrolling come back and stream lectures at your leisure anytime on your PC/Mac or Mobile device. This week there are 3hrs of lectures on Introduction to the Delphi Language with Marco Cantu, plus a bonus: read or download Marco's Object Pascal Handbook! ($29 value) for free.
Special offers and giveaways will also be offered each week throughout the bootcamp.
To follow the lecture series, you can use the FREE Delphi Community Edition or any Delphi 10.2.X Pro, Enterprise, or Architect edition.
Schedule:
Week 1 - Delphi Language Introduction with Marco Cantu - Stream now!
Week 2 - GUI Fundamentals (FMX and VCL) with Andrea Magni- Begins Sept 10th
Week 3 - Mobile / Multi-Platform Concepts with Ian Barker - Begins Sept 17th
Week 4 - DataBase/FireDAC with Cary Jensen - Begins Sept 24th
Week 5 - Debugging with Alan Fletcher - Begins Oct 1st
Week 6 - REST Services & APIs with Cesar Romero - Begins Oct 8th
Week 7 - Threading and Performance with Olaf Monien - Begins Oct 15th
Week 8 - Using 3rd Party Components with Ian Barker - Begins Oct 22nd
BONUS! We've also added a free bonus eBook this morning! You can read or download Marco Cantu's Object Pascal Language Handbook from your week 1 lecture curriculum.
SPECIAL OFFERS! During the eight week bootcamp use the coupon code CEBOOT20 at checkout to save 20% off any course, bundle, or Delphi certification exam including the new Delphi Certification Premium Package which includes 1x Practice Exam, 1x Certification Exam, and 1x Re-take if necessary.
Also save 20% on Marco's most popular course bundle entitled "Mastering Modern Delphi Language Techniques" which includes 5 courses and over 8hrs of lectures covering Interfaces, Generics and Anonymous Methods.

Cómo monetizar tus apps



Delphi nos lo pone fácil para monetizar las apps.
Nos ofrece un componente llamado tBannerAd para poner un banner con publicidad con una serie de propiedades y métodos que nos permiten abstraernos de toda la complejidad que conlleva.
Para utilizarlo simplemente colocamos el componente en nuestro form y lo llamamos de esta forma.

PROCEDURE TfOpciones.Publicidad(BannerAd1: TBannerAd);
BEGIN
  BannerAd1.AdUnitID := CODIGO_PUBLICIDAD;
  BannerAd1.LoadAd;
  BannerAd1.Visible := True;
END;

Los permisos que tenemos que activar son:
- Access network state 
- Internet


y además tenemos que marcar el check "Admob service" desde el menú Project-Options-Entitlement List.


Si os habéis fijado, en el código del procedimiento para utilizar el componente hay una constante llamada "CODIGO_PUBLICIDAD" ¿de dónde viene? os preguntaréis

Pues para obtenerla hay que abrir una cuenta en Admob "https://www.google.es/admob/". (Admob es una empresa que gestiona publicidad para apps y que por cierto ha sido comprada por Google).
A continuación hay que seleccionar una de las apps que has realizado, que deberá estar subida previamente a la Play Store de Google.



Una vez que la veas en tu panel de control de Admob tienes que añadir un bloque de anuncios.

Cada bloque de anuncios va identificado con un número de control, algo así como "ca-app-pub-XXXXXXXXXXXXXXX / XXXXXXX ", pues ése es el "código de publicidad" que tienes que poner.
Otro detalle,  para subir apps a la Play Store de Google tienes que abrir una cuenta de desarrollador y pagar 25€ en pago único para siempre, si lo quieres hacer para IOS tienes que pagar 100€ al año.

Una vez que lo tengas todo preparado Google te pagará cada vez que un usuario haga clic sobre el banner de publicidad (se acumulan los ingresos hasta que lleguen a 75€).