2017-09-14 2 views
0

질문에 따라 실제 시간이 필요합니다. 예를 들어 내 앱에서는 오전 8시에 모든 사용자에게 특정 팝업을 표시해야합니다. 특정 국가에서 앱이 실행됩니다. 기기 시간이 잘못된 경우 어떻게해야합니까? 나는 시간을 API로 얻을 수있다. 기기에 인 텔넷이 없으면 어떻게됩니까? 나는 인터넷이 생길 때를 생각해 보려고했다. 예를 들어 인터넷에 접속하면 시간을 확보하고 그 시간을 저장하여 API를 추적합니다. 다른 어떤 sloution?Android가 실제 시간을 받음 (인터넷이 꺼져 있고 장치 시간이 잘못된 경우)

+0

나는이 상황에 대한 해결책이 없다고 생각합니다. 또한이 경우에는 귀하의 앱뿐만 아니라 시간에 의존하는 모든 앱이 제대로 작동하지 않습니다. –

+0

호그와트 밖에서 마법을 사용하고 싶습니까? 치매 환자라면 두렵지 않니? 어떤 근원지에서 시간을 얻고 싶습니까? 어떤 채널을 사용합니까? 마법 같은 방식으로 정확한 시간을 얻을 수는 없습니다. –

+0

@VladMatvienko hahaha. 타자 응답은 gps 시간을 얻고, sime에서 시간을 얻고, 특정 간격 후에 시간을 추적 할 것입니다. 나는 논리적 인 대답으로 프로그래머를 찾고 있었다. 그러나 운 좋게 나는 해리 포터 팬을 여기에서 발견했다. –

답변

0

UTC를 사용해야합니다. 정말로 필요한 경우 설치 시간에 앱을 UTC로 기록해야합니다 (사용자가 인터넷을 사용 중이므로이 기능을 활용할 수 있음을 알게 됨). 앱을 계속 추적하게하십시오. 내부적으로이 UTC의

앱이 실행되는 동안 통과 한 UTC에 초를 추가 한 다음 그 시간을 현지화하는 것은 간단합니다. 그런 다음 기기를 사용하여 앱을 마지막으로 연 이후 (앱이 닫히고 열릴 때마다 타임 스탬프를 만들어야 함) 얼마나 오래 있었는지 확인하고 그 시간을 초 단위로 변환하여 저장된 앱에 추가 할 수 있습니다 UTC. 다시 한 번,이 시간을 현지화하는 것은 사소한 일입니다. 또한 사용자가 앱을 열 때마다 인터넷에 연결되어 있는지 확인하고 인터넷에 연결되어있는 경우 올바른 UTC를 가져 와서 UTC 업데이트를 업데이트합니다.

백그라운드에서 조용히 실행하고 초를 계산할 수있는 권한을 얻을 수 있다면이 방법이 훨씬 쉬워지고 실시간 알림을 제공 할 수 있습니다. 완벽하지는 않지만 제대로 작동 할 수 있다고 확신합니다.

1

장치에 설정하여 시간이 잘못된 경우 .. 실제 타임 스탬프를 얻을 수

편집 : - :

- 유일한 해결책이 , 나는 전화 인터넷입니다 사용하여 찾을 수 있습니다

공개 서버 시간에서 시간을 제공 할 수 있습니다. 매니페스트에 인터넷 사용 권한을 추가해야합니다.

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); 
관련 문제