Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2026
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 571
Poder: 19
jhonalone Va por buen camino
Detectar Cambio manual de hora

Hola, compañeros.

No sé si me equivoco, pero desde la aparición de ChatGpt el club tiene menos actividad.
Yo también he preguntado a la máquina por el título del post.

Pero la máquina dice que a partir de Android 8+ ya no se eminen Broadcasts de esta actividad.

Puesto que las personas tenemos más inventiva, me dirijo a vosotros para pediros que (si alguien tiene algún truco para esto) comparta con los "sufridores" de Android su hallazgo.

Gracias de antemano.
Gran saludo a todos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #2  
Antiguo 17-04-2026
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Puedes comprobar la fecha/hora actual de cualquier servidor NTP, o del servidor de la red, etc. depende de tu necesidad, por ejemplo, este enlace te devuelve la hora y fecha actual:
Cita:
20260417163546
En cuanto a lo que comentas de la actividad de clubdelphi, debes tener en cuenta que tras tantos años acumulando información, prácticamente encuentras todo lo que necesites, así que no es necesario preguntar casi nunca.
Responder Con Cita
  #3  
Antiguo 17-04-2026
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 571
Poder: 19
jhonalone Va por buen camino
Muchas Gracias, Casimiro por tu rápida respuesta. pero es en Android 8+ donde necesito detectar el cambio de hora y, a ser pòsible enviarlo con un Intent a mi app.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #4  
Antiguo 17-04-2026
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Creo que no he entendido, ¿quiéres detectar que han cambiado la fecha/hora del dispositivo android o de algún otro ordenador?
¿Tu aplicación está en el dispositivo android?
Si es así, entonces justo lo que he he comentado, desde tu propia aplicación llamas al servidor de fechahora y compruebas lo devuelto con la que tiene tu dispositivo.
Responder Con Cita
  #5  
Antiguo 17-04-2026
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Algo más o menos como esto:
Código Delphi [-]
var
  t0, t1: TDateTime;
  respuesta: string;
  horaServidor: TDateTime;
  horaLocalAprox: TDateTime;
  diferencia: Double;
begin
  t0 := Now;

  respuesta := NetHTTPClient1.Get('https://intitec.com/debug/getahora.php').ContentAsString;

  t1 := Now;

  horaServidor := StrToDateTime(respuesta);

  horaLocalAprox := (t0 + t1) / 2;

  diferencia := (horaServidor - horaLocalAprox) * 86400; // segundos

  if Abs(diferencia) > 60 then
    ShowMessage('Hora manipulada');
end;
Responder Con Cita
  #6  
Antiguo 17-04-2026
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 571
Poder: 19
jhonalone Va por buen camino
Gracias de nuevo por el código.

Lo puse en OnCreate y compila bien, pero me tira la app en el arranque.
Llevo un rato dando vueltas, pero no consigo averiguar la causa. Es una aplicación Android14
Un saludo.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #7  
Antiguo 17-04-2026
dani36652 dani36652 is offline
Miembro
 
Registrado: abr 2019
Posts: 78
Poder: 8
dani36652 Va camino a la fama
Cita:
Empezado por jhonalone Ver Mensaje
Gracias de nuevo por el código.

Lo puse en OnCreate y compila bien, pero me tira la app en el arranque.
Llevo un rato dando vueltas, pero no consigo averiguar la causa. Es una aplicación Android14
Un saludo.
Que onda amigazo... tu app se rompe por que Android emite una excepción de tipo ANR "Android No Responde" al ejecutar procesos pesados en el hilo principal, te sugiero usar siempre Threads para procesos pesados NO VISUALES en android como consumir webservices, peticiones hhtp, etc.

Lo qe yo haría en tu caso es:
Código Delphi [-]
 uses
  System.SysUtils, System.Net.HttpClient, System.DateUtils;

function HoraLocalManipulada: Boolean;
var
  HttpClient: TNetHTTPClient;
  t0, t1: TDateTime;
  Respuesta: string;
  HoraServidor: TDateTime;
  HoraLocalAprox: TDateTime;
  Diferencia: Double;
  FS: TFormatSettings;
begin
  Result := False;
  HttpClient := TNetHTTPClient.Create(nil);
  try
    try
      t0 := Now;

      Respuesta := HttpClient.Get('https://intitec.com/debug/getahora.php').ContentAsString(TEncoding.UTF8);
      Respuesta := Trim(Respuesta);

      t1 := Now;

      FS := TFormatSettings.Create;
      FS.DateSeparator := '-';
      FS.TimeSeparator := ':';
      FS.ShortDateFormat := 'yyyy-mm-dd';
      FS.ShortTimeFormat := 'hh:nn:ss';

      if not TryStrToDateTime(Respuesta, HoraServidor, FS) then
        Exit;

      HoraLocalAprox := (t0 + t1) / 2;

      Diferencia := SecondsBetween(HoraServidor, HoraLocalAprox);

      Result := Abs(Diferencia) > 60;
    except
      Result := False;
    end;
  finally
    HttpClient.Free;
  end;
end;


//Forma de uso: 

procedure Algo;
var 
   Thread: TThread;
begin 
   //Puedes mostrar pantalla de carga
   Thread:= TThread.CreateAnonymousThread(procedure
       var 
          HraManipulada: boolean;
       begin 
           HraManipulada:= HoraLocalManipulada;
           TThread.Synchronize(nil, 
           procedure
           begin         
                //Aqui ocultar pantalla de carga o hacerlo en el Evento OnTerminate.
               //Mostrar mensajes, o cualquier cosa que sea meramente visual aquí  
               if HraManipulada = True then 
                  ShowMessage('No le mueva a la hora si no le sabe :P');
           end);
       end);
      Thread.FreeOnTerminate:= True;
      //Thread.OnTerminate := MyOnTerminate (Puedes declararlo así: procedure MyOnTerminate(Sender: TObject);
      Thread.Start;
end;
Responder Con Cita
  #8  
Antiguo 18-04-2026
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 571
Poder: 19
jhonalone Va por buen camino
Muchas gracias, Dani.
Tú siempre "al quite" tan oportuno y tan perfecto.
Lo pruebo y os cuento.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Detectar un cambio en Mysql JULIPO SQL 7 17-11-2015 16:44:09
Detectar cambio en Listbox Anel Hernandez Varios 7 22-10-2012 19:26:33
Detectar cambio en componentes capo979 Varios 5 24-04-2008 17:10:22
Detectar cambio de posicion en dataset Ezecool Conexión con bases de datos 7 10-07-2007 20:53:19
Detectar el cambio de un directorio NeWNeO API de Windows 2 03-01-2005 09:36:48


La franja horaria es GMT +2. Ahora son las 02:14:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi