Cómo controlar los gestos en las aplicaciones

Rad Studio nos ofrece un componente llamado tGesture para detectar los movimientos de los dedos sobre la pantalla del dispositivo.
Utilizarlo es muy sencillo, sólo hay que abrir la Tool Palette y colocarlo en el Form principal del proyecto.
Después desde el Object Inspector hay que desplegar la propiedad Touch y asociarlo a GestureManager, con ello nos aparecerán dos nuevas propiedades: Gestures (gestos estándar) e InteractiveGestures.



En este link tenéis en detalle la descripción de todos los gestos que reconoce.
Desplegando en el árbol Gestures - Standard tendremos que hacer clic sobre el gesto que queramos reconocer (izquierda, derecha, arriba, abajo, etc...)

GESTURES:
Consta de más de 30 gestos, como  Left, Right, Scratchout, Circle, ChevronUp, etc...

INTERACTIVE GESTURES:
Son gestos Multi-touch que disparan el evento OnGesture cuando son detectados. El parámetro EventInfo da información adicional sobre la localización del punto de toque, el ángulo, la inercia del desplazamiento, etc...
Los InteractiveGestures pueden ser: "Zoom", "Pan", "Rotate", "Two Finger Tap", "Long Tap", "Double Tap", y  "Press And Tap".

Para obtener el gesto detectado en el evento OnGesture teclearemos:

procedure TForm1.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
var
  S: String;
begin
  if GestureToIdent(EventInfo.GestureID, S) then
    ShowMessage(S)
  else
    ShowMessage('Could not translate gesture identifier');
end;
--

Por otra parte también quería enseñaros otra forma menos utilizada para detectar los gestos sin necesidad de añadir componentes a la app, pero más sencilla si cabe, que es utilizar el evento OnTouch del Form, del siguiente modo:



//Autor:http://www.danielespinetti.it

var
    FStartingPoint: TPointF;
    FDeviceScale: Single;
    ScreenSvc: IFMXScreenService;
    FScreenWidth: Single;
    FScreenHeight: Single;
    previousTranslateX: Single;
    startX: Single;
    previousTranslateY: Single;
    startY: Single;
...

procedure TForm1.FormShow(Sender: TObject);
begin

  FStartingPoint := PointF(0, 0);
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService,
    IInterface(ScreenSvc)) then
  begin
    FDeviceScale := ScreenSvc.GetScreenScale();
    FScreenWidth := ScreenSvc.GetScreenSize().X;
    FScreenHeight := ScreenSvc.GetScreenSize().Y;
  end;

  Rectangle1.Width := FScreenWidth * 2;
  Rectangle1.Height := FScreenHeight * 2;
  Rectangle1.Position.X := 0;
  Rectangle1.Position.Y := 0;

end;

procedure TForm1.FormTouch(Sender: TObject; const Touches: TTouches;
  const Action: TTouchAction);
begin
  if Length(Touches) <> 2 then
    exit;
  case Action of
    TTouchAction.None:
      ;
    TTouchAction.Up:
      begin
        previousTranslateX := Rectangle1.Position.X;
        previousTranslateY := Rectangle1.Position.Y;
      end;
    TTouchAction.Down:
      begin
        startX := Touches[1].Location.X - previousTranslateX;
        startY := Touches[1].Location.Y - previousTranslateY;
      end;
    TTouchAction.Move:
      begin
        Rectangle1.Position.X := Touches[1].Location.X - startX;
        Rectangle1.Position.Y := Touches[1].Location.Y - startY;
      end;
    TTouchAction.Cancel:
      ;
  end;
end;

Para probarlo lo único que tenéis que hacer es colocar un rectángulo en el Form y colgando de él una imagen

compilar y ejecutar el proyecto y probar a mover el rectángulo utilizando dos dedos.





Quizás te pueda interesar:
App para mostrar moléculas en 3D

Integrar Whatsapp con Delphi

A continuación vamos a ver cómo enviar un texto desde vuestra app a la popular aplicación de mensajería.
Empezamos con nuestro RAD STUDIO XE, desde el menú File-New-Multi Device Application Delphi, para crear un nuevo proyecto que almacenaremos en una carpeta de nuestro PC


En la pantalla siguiente tenemos que elegir entre varias opciones, si queremos que aparezca un form en blanco, o si queremos uno con toolbars de cabecera y pie, etc... en nuestro caso seleccionamos el icono blank application




Después desde la "Tool Palette" seleccionamos dos objetos:

- tEdit ,  propiedad Name="Edit1"
- tButton,  propiedad Name="Button1"

En la propiedad Text del tEdit escribimos "Hola desde RAD STUDIO XE", y en la propiedad Text del tButton tecleamos "Enviar a Whatsapp" y nos quedará de la siguiente forma:



Por otra parte, recordar que al tratarse de un proyecto Android hay que añadir ciertas units, en el uses del proyecto.

implementation
{$R *.fmx}
uses
  FMX.Helpers.Android, Androidapi.Jni.GraphicsContentViewText,
  Androidapi.Jni.Net, Androidapi.Jni.JavaTypes, idUri, Androidapi.Jni,
  Androidapi.JNIBridge, Androidapi.Helpers;



Hacemos doble clic sobre el tButton para modificar el evento "onclic"  y añadimos el siguiente trozo de código:

procedure TForm2.Button1Click(Sender: TObject);
var
  Intent1 : JIntent;
 
begin
   
  Intent1 := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_SEND);
  Intent1.setType(StringToJString('text/plain'));
  Intent1.putExtra(TJIntent.JavaClass.EXTRA_TEXT,
      StringToJString(Edit1.text));
  Intent1.setPackage(StringToJString('com.whatsapp'));
  SharedActivity.startActivity(Intent1);
end;

Bien, pues ahora nos queda ejecutarlo y veremos cómo funciona perfectamente.
Al pulsar el botón se abre automáticamente Whatsapp y nos solicita que seleccionemos un contacto, para después mostrarnos dentro de su chat el texto "Hola desde RAD STUDIO XE"






También te puede interesar:



Visita al centro de datos de Google en 360º

A continuación os dejo el vídeo de una visita a uno de los muchos centros de datos que Google posee.

Os recuerdo que es un recorrido en 360º, es decir que a medida que se va haciendo la presentación del vídeo, haciendo un clic mantenido sobre él, se puede ver todo el entorno que rodea a la escena.

Se muestra una de las plantas del centro de proceso de datos, que alberga un inmenso cluster de PCs, unidos por fibra, hablan del nivel de seguridad de acceso, cómo gestionan la cadena de custodia de los discos estropeados, cómo se refrigera el edificio y de dónde sale la energía necesaria para hacerlo funcionar.



Otro vídeo presentado por el Director Técnico del Centro de Datos  (por cierto dice que la temperatura allí es de 27ºC, superior a lo que es habitual, porque según él, así se comportan los equipos de una forma más eficiente)