2017-09-14 3 views
0

Comme demandé, j'ai besoin de temps réel. Par exemple dans mon application, je dois montrer une pop spécifique à tous les utilisateurs à 8 heures du matin. App fonctionne dans un pays spécifique. Que faire si l'heure de l'appareil est incorrecte? Je peux avoir le temps par un api. Que faire si l'appareil n'a pas d'interenet? Je pensais prendre la piste du temps quand j'ai eu internet. Par exemple, si j'ai internet, je tape sur une API pour avoir le temps et stocker ce temps pour le garder en mémoire. Toute autre sloution?Android obtenir le temps réel (Lorsque l'Internet est éteint et l'heure de l'appareil est incorrecte)

+0

Je ne pense pas qu'il existe une solution à cette situation. Dans ce cas, non seulement les vôtres, mais toutes les applications dépendant du temps ne fonctionneront pas correctement. –

+0

voulez-vous vraiment utiliser la magie en dehors de Poudlard? N'avez-vous pas peur des détraqueurs? De quelle source voulez-vous avoir le temps? en utilisant quel canal? Vous ne pouvez pas obtenir l'heure correcte de manière magique. –

+0

@VladMatvienko hahaha. La réponse de batteur serait obtenir le temps de gps, obtenir le temps de sime, garder la trace du temps après l'intervalle spécifique. Je cherchais un programmeur avec une réponse logique. Mais heureusement, j'ai trouvé un fan Harry potter ici. –

Répondre

0

Vous auriez besoin d'utiliser UTC. Si vous en avez vraiment besoin, je voudrais que l'application conserve l'enregistrement de l'heure UTC au moment de l'installation (vous savez que l'utilisateur dispose d'Internet en ce moment, afin que vous puissiez en profiter) et que l'application conserve une trace de cet UTC en interne.

Vous pouvez ajouter des secondes à l'UTC à mesure qu'elles passent lorsque l'application est ouverte, puis la localisation de cette heure est triviale. Vous pouvez ensuite utiliser le temps des appareils pour voir depuis combien de temps l'application a été ouverte (vous devez créer un horodatage chaque fois que l'application se ferme et s'ouvre) et convertir cette durée en secondes et l'ajouter à vos applications stockées UTC. Encore une fois, localiser cette fois est une banalité. Je voudrais également vérifier si l'utilisateur a Internet à chaque fois qu'ils ouvrent l'application et s'ils ont Internet, obtenir le bon UTC et mettre à jour vos mises à jour internes UTC.

Si vous pouvez obtenir l'autorisation de s'exécuter en mode silencieux et de compter les secondes en arrière-plan, cela devient encore plus facile et vous pouvez donner des notifications en temps réel. Ce n'est pas parfait mais je suis certain que ça pourrait marcher.

1

Vous ne pouvez pas obtenir l'horodatage réel si votre l'heure fixée dans l'appareil est mal ..

Edit: - Il n'y a qu'une solution, je pouvais trouvé à l'aide téléphone internet est: -

Vous pouvez donner l'heure à partir de l'heure du serveur public. N'oubliez pas d'ajouter l'autorisation INTERNET dans le manifeste.

String TIME_SERVER = "url"; 
NTPUDPClient timeClient = new NTPUDPClient(); 
InetAddress inetAddres=InetAddres.getByName(TIME_SERVER); 
TimeInfo timeInfo = timeClient.getTime(inetAddress); 
long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime(); 
Date time = new Date(returnTime);