Archivo

Archivo para la categoría ‘Android’

Ya disponible la versión 12.3 Athens de Delphi!

lunes, 24 de marzo de 2025 2 comentarios
Share Button

Desde hace unos días (voy un poco tarde, ya lo se… ;-) ) ya está disponible la versión 12.3 (Athens) de Delphi para su descarga. Bastantes novedades y enfocado como en las últimas, en las mejoras y en la estabilidad del IDE.

Un recorrido rápido por la novedades que nos podemos encontrar en esta versión pasa por lo siguiente:

IDE de 64 bits.

Nosotros llevábamos tiempo pidiéndolo y Embarcadero lleva tiempo trabajando en él. Con el IDE de 64 bits desaparecen muchos de los problemas y limitaciones que nos encontramos con el actual IDE de 32 bits. Hay que tener en cuenta que es una primera versión y es una «Initial Release». No debemos perderlo de vista, pero es un comienzo para lo que será una de las mejoras más importante de las últimas versiones. Ahora al acabar la instalación, en el escritorio, nos aparecerá un segundo icono muy similar al de siempre, pero con la marca de 64 bits.

Android target API Level 35

Para los que desarrollan para Android, esta versión incluye la API level 35 y la instalación por defecto añade el NDK 27.1

BLE y Bluetooth

La versión 12.3 se centra en mejorar la calidad de nuestra compatibilidad con Bluetooth en todas las plataformas compatibles.

Smart CodeInsight

Mejoras sobre todo en la integración de modelos de IA en el CodeInsight (nuevo motor que se introdujo en la versión 12.2). A continuación podéis ver  una imagen con las nuevas opciones de configuración para los modelos de IA disponibles.

Mejoras y ampliación de la funcionalidad de la ventana de chat del Smart CodeInsight.

Compilador

El compilador de la versión 12.3 es más rápido y eficiente. Según la documentación las pruebas muestran que esta versión es hasta un 15 % más rápido en tareas comunes. Si formateas los archivos fuente como UTF-8 con BOM, puedes aumentar la velocidad del compilador entre un 5-6 % más. Aunque los resultados pueden variar, podrías ver una mejora de hasta un 20 % en la velocidad de compilación con esta versión.

WebStencils

Mejoras en WebStencils; La biblioteca de plantillas HTML introducida en RAD Studio 12.2, se ha ampliado con nuevas funcionalidades:

  • Permite usar la misma sintaxis para acceder a subtablas en conjuntos de datos anidados.
  • El procesamiento del símbolo «@» es más flexible cuando no está relacionado con una directiva WebStencils.
  • Esta versión mejora la gestión de caracteres UTF8 en RAD Server.

Hay más novedades y podéis consultarlas directamente en la web de Embarcadero.

Además en la wiki de Embarcadero tenéis una lista de errores y correcciones más importantes, para esta versión.

IMPORTANTE!!
Por cierto, todavía estáis a tiempo si queréis registraros en el evento online por parte de Danysoft (partner de Eembarcadero en la península) que se celebra mañana día 25 de Marzo.
«Mira lo que viene en RAD Studio 12.3 Athens» (registro)
Día 25 de marzo de 2025. Hora: 12:00 h CET.

Lo presenta Antonio Zapater, consultor de Embarcadaero y MVP.

Otros artículos relacionados…

Si queréis leer más al respecto, además de la documentación oficial, os dejo links de otras web y blogs relacionados con el lanzamiento.

Un saludo y hasta la próxima.

#FunWithDelphi: La foto del día

martes, 31 de enero de 2017 2 comentarios
Share Button

NASA_DelphiBueno, pues ya está publicada la mía!! Y si todavía no os habéis animado os animo a que lo hagáis.

Desde hace unos días está en marcha la competición #FunWithDelphi que ha promovido Embarcadero y que se basa en la API de la NASA.

La descripción completa de la competición la tenéis en estos links; Esta entrada de Marco Cantú, y esta otra donde se explican algunos detalles más técnicos.

Y las reglas y los pasos prácticos a seguir, en este otro enlace:
https://community.embarcadero.com/competitions/14-fun-with-delphi-nasa-api-mash-up

Al final de la página también tenéis la lista de las publicadas hasta ahora, con las opciones para acceder a ellas y votar.

Básicamente, se trata de hacer una aplicación que utilice la API de la NASA y que muestre características de las últimas versiones de RAD Studio. Cualquier plataforma disponible y con el único límite de la imaginación.

Os muestro un vídeo de la mía en funcionamiento (Windows + Android)

Link al video (https://www.youtube.com/watch?v=CBqpnR6hwlo)

Y os dejo algunas imágenes:

Se puede descargar el binario para windows desde el repositorio de github. El código completo de la aplicación lo publicaré en el blog y en el repositorio, una vez que acabe la competición

Sólo me queda esperar que os guste y si es así que la votéis.

Un saludo.

Visualizando y utilizando Mapas (Componente TMapView)

miércoles, 21 de diciembre de 2016 44 comentarios
Share Button


En Delphi podemos utilizar diferentes componentes que nos permitan visualizar mapas en nuestras aplicaciones. El más básico, es el componente TWebBrowser del que ya he hablado otras veces en el blog. Al final un la visualización de un Mapa (utilizando los diferentes servicios existentes) no es más que la visualización de una página web.

Si queréis ver entradas anteriores relacionadas con esto, aquí os dejo una lista:

Aparte de esto, si queréis más información sobre el tema, os puedo recomendar las webs de:

Leer más…

Perfiles de audio (parte II)

miércoles, 20 de julio de 2016 Sin comentarios
Share Button

AudoioLevelsContinuando con la entrada anterior del blog, donde hablaba de cómo acceder a las propiedades de audio de un dispositivo Android; La idea de esta entrada es avanzar un poco más en el tema y generar una aplicación que nos permita gestionar varios perfiles de audio en nuestro dispositivo.

Una vez que vimos cómo acceder a la información del volumen actual, lo siguiente que nos interesa es poder almacenar diferentes perfiles, de forma que podamos seleccionar uno de los perfiles y configurar todos los parámetros de audio de forma rápida y automática.
Además debemos poder editar los perfiles existentes, borrar os que no nos interesen y tener la posibilidad de crear nuevos.

Contaremos con una serie de perfiles predefinidos, que podrían ser similares a estos:

  • Normal (Volúmenes al 100%)
  • Bajo (Volúmenes al 20%)
  • Sólo llamadas (todo al 0% excepto las llamadas)
  • Silencio total (Todo al 0%)

Leer más…

Categories: Android, Delphi, Ejemplos Tags:

Cuestión de volumen… (parte I)

martes, 14 de junio de 2016 4 comentarios
Share Button

volumen-audio-10054183Hace unos días se planteaba en el clubdelphi una cuestión acerca de la gestión de volúmenes en los dispositivos Android. Me llamó la atención porque días atrás me había planteado la cuestión de poder disponer de «perfiles de audio» en mi propio teléfono Android. Se trata de un Xiaomi con versión KitKat instalada y una ROM personalizada.

  • ¿Cómo podemos desde Delphi acceder a los volúmenes del dispositivo para las diferentes características (música, alarmas, llamadas,…)?
  • ¿Cómo podemos cambiarlos?

Esta estrada, al final la he dividido en dos. Os adjunto los links a las dos partes; Est a primera más itroductoria y la segunda más práctica y donde generamos una aplicación de ejemplo funcional.

CONTROL DE VOLUMEN

Lo primero es saber cómo podemos acceder a esta información utilizando las clases de Android. Si revisamos la API de Android llegamos a la clase AudioManager,  que es la que se encarga de estos menesteres (y algunos más).
La descripción de la clase dice lo siguiente:

«AudioManager provides access to volume and ringer mode control.»

Leer más…

NASA, la foto del día…

viernes, 3 de junio de 2016 9 comentarios
Share Button

Hace bastante tiempo (cuando estábamos en la facultad) con mis amigos,  nos acostumbramos a visitar la web de  “la foto del día”. Había y sigue habiendo webs de muchas temáticas, pero una de las más conocidas en aquella época era la de la NASA. Las fotos de este tipo que hoy son más habituales, entonces era difícil encontrarlas (con aquella calidad).

ImagenDelDia

Actualmente la URL para acceder a “la foto del día” es esta.

http://apod.nasa.gov/apod/astropix.html

Leer más…

Hablando del tiempo… (OpenWeatherMap) 2/2

lunes, 21 de diciembre de 2015 2 comentarios
Share Button

Para complementar la entrada anterior (Hablando del tiempo… (OpenWeatherMap) 1/2)  y «acabarla» me queda publicar el desarrollo móvil correspondiente a la aplicación que vimos anteriormente.
Como ya os comenté en la entrada anterior, el código a utilizar es prácticamente el mismo que hemos utilizado en las aplicaciones para windows (VCL). La mayor diferencia que me he encontrado en el tratamiento de la respuesta JSON que obtenemos del servidor.

Para versiones antiguas de Delphi, podéis utilizar si lo necesitáis la misma librería que ya he recomendado aquí otras veces. Se trata de lkJSON que podéis encontrar en Sourceforge.
En las nuevas versiones de Delphi ya está disponible la unit System.JSON, con lo necesario para no utilizar librerías externas.

function TForm1.ParseTiempoCiudadesHist(AObjResp: TlkJSONobject; var ATiempoProxHoras: TTiempoProxHoras): Boolean;
var
  i, j, num, index:integer;
  oHorasList, OWList:TlkJSONlist;
  oHora, oCoord, oMain, oWind, oWeather:TlkJSONobject;
  Str:String;
begin
  // ini
  Result := False;
  // Si no está asignado salimos..
  if not Assigned(AobjResp) then begin
    Exit;
  end;
    // Si hay error no parseamos
    if IsErrorResponse(AObjResp, errCode, ErrMsg) then begin
    Exit;
  end;
 
  // proteccion para el parseo
  try
    // cod. devuelto (datos principales
    ATiempoProxHoras.Cod := errCode;
 
    num := AObjResp.IndexOfName('count');
    if (num <> -1) then begin
      num := GetAsInteger(AObjResp.Field['count'].Value);
    end;
 
    // si no hay ciudades
    if (num = 0) then begin
      MessageDlg('No hay ninguna ciudad que coincida con ese código [nombre,pais].', mtWarning, [mbOK], 0);
      Exit;
    end;
 
    // Lista de horas (Lista)
    TlkJSONBase(oHorasList) := AObjResp.Field['list'];
    // array de elementos
    SetLength(ATiempoProxHoras.TiempoHora, oHorasList.Count);
    // Quedarse con el primier elemento de la lista...
    for i := 0 to (oHorasList.Count - 1) do begin
      // datos de la primera ciudad
      TlkJSONBase(oHora) := oHorasList.Child[i];
      // datos básicos
      ATiempoProxHoras.TiempoHora[i].dt_text := GetAsString(oHora.Field['dt_txt'].Value);
      // convertir fecha-Hora
      Str := ATiempoProxHoras.TiempoHora[i].dt_text;
      ATiempoProxHoras.TiempoHora[i].dt := EncodeDateTime(
        StrToIntdef(Copy(Str, 1, 4), 0),
        StrToIntdef(Copy(Str, 6, 2), 0),
        StrToIntdef(Copy(Str, 9, 2), 0),
        StrToIntdef(Copy(Str, 12, 2), 0),
        StrToIntdef(Copy(Str, 15, 2), 0),
        StrToIntdef(Copy(Str, 18, 2), 0), 0);
 
      // Load Main
      TlkJSONBase(oMain) := oHora.Field['main'];
      ATiempoProxHoras.TiempoHora[i].Main.temp := GetAsFloat(oMain.Field['temp'].Value);
      ATiempoProxHoras.TiempoHora[i].Main.tempmin := GetAsFloat(oMain.Field['temp_min'].Value);
      ATiempoProxHoras.TiempoHora[i].Main.tempmax := GetAsFloat(oMain.Field['temp_max'].Value);
      ATiempoProxHoras.TiempoHora[i].Main.pressure := GetAsFloat(oMain.Field['pressure'].Value);
      ATiempoProxHoras.TiempoHora[i].Main.humidity := GetAsInteger(oMain.Field['humidity'].Value);
 
      // Load weather
      TlkJSONBase(OWList) := oHora.Field['weather'];
      TlkJSONBase(oWeather) := oWList.Child[0];
      ATiempoProxHoras.TiempoHora[i].Weather.id := GetAsInteger(oWeather.Field['id'].Value);
      ATiempoProxHoras.TiempoHora[i].Weather.main := GetAsString(oWeather.Field['main'].Value);
      ATiempoProxHoras.TiempoHora[i].Weather.desc := GetAsString(oWeather.Field['description'].Value);
      ATiempoProxHoras.TiempoHora[i].Weather.icon := GetAsString(oWeather.Field['icon'].Value);
    end;
 
    Result := True;
  except
    // si hay error, FALSe
    Result := False;
  end;
end;

Leer más…

Categories: Android, Código, Delphi, iOS, JSON Tags: , , ,