우리가 개발중인 안드로이드 (또는 아이폰) 클라이언트가 있습니다. 클라이언트는 안드로이드 사용자가 우리가 개발 한 서버에 항목을 보낼 수 있습니다. 사용자가 서버에 항목을 보내는 순간에 클라이언트에 데이터 서비스 (GPRS)가없는 경우 클라이언트는 항목을 오프라인 데이터베이스에 저장하고 나중에 서버로 전송하는 기능도 지원합니다.안드로이드/아이폰에서 서버로 정확한 시간을 받으십시오.
전체 프로세스의 한 가지 중요한 측면은 사용자가 (항목이 실시간으로 이루어 또는 오프라인 데이터베이스에서 클라이언트가 전송되는지 여부) 서버로 항목을 전송하는 타임 스탬프
의 정확성이다 클라이언트에서 사용할 수있는 GPS 위치를 얻고 GPS 타임 스탬프를 사용하여이를 서버로 보내거나 오프라인 DB에 GPS 타임 스탬프를 저장하고 나중에 서버로 보냅니다. 그러나 사용자가 GPS (및 다른 모든 위치 서비스)를 끄면 장치에 GPS 수정 사항이 없으므로 서버가 항목을 만들 때 정확하게 확인할 수 없습니다. 사용자가 실제 발생 시간과 다른 시간에 항목을 만들기 위해 시계를 변경할 수 있으므로 로컬 장치 시계를 사용할 수 없습니다 (이러한 항목은 사용자 급여의 일부이므로 해당 항목을 "수정"하는 데 관심이있을 수 있습니다).
그래서 기본적으로 나는 모바일의 내부 시계를 신뢰할 수 없을 때 몇 가지 항목을 만들 때 최선을 다할 수있는 방법을 찾고 있습니다. 알고리즘은 실시간으로 보낸 항목이나 오프라인 DB에서 보낸 항목을 모두 지원해야합니다. 알고리즘은 사용자가 모바일 시간을 변경하고, 모바일을 켜고 끄고, 애플리케이션이 모바일 등에서 실행되는 동안 GPS를 켜고 끄는 경우도 지원해야합니다.
생각한 아이디어가 거의 없습니다. 의 : I 모바일의 시간을 신뢰할 수는 없지만
- , 그것은 여전히 스톱워치로 수행 할 수 있습니다 는 응용 프로그램이 존재 때까지 루프, 루프는 1 초 자고 내부 클록 변수를 증가하는 클래스가 1 초. 모든 GPS 위치에서 내 코드는 내부 시계 변수를 업데이트합니다. 이렇게하면 장치 외부에서 온 절대 시계 (GPS)가 있으며 클라이언트가 서버에 항목을 보낼 때 내부 시계를 절대 시간으로 사용할 수 있습니다.
총 : 그것은 단지 업데이트 될 때 우리는 GPS에서
단점을 위치를 얻을 때 사용자가이 시계를 수정할 수 없습니다 : 사용자가 신뢰할 수있는 모든 항목을 만들 수 있습니다 전에 응용 프로그램이 적어도 하나의 GPS 수정 필요
- 정확한 시계가 서버에 있다는 사실을 활용할 수 있습니다. 클라이언트가 서버 정보에 항목의 유효 기간을 10 분으로 보내는 경우 서버는 내부 시간을 사용하고 항목이 작성된 정확한 시간을 알 수 있습니다.
가장 큰 문제는 진입 연령을 아는 것입니다. 나는 0의 나이를 가진 오프라인 DB에 엔트리를 저장하는 것에 대해 생각하고, 매 1 초마다 엔트리의 나이를 늘렸다. 문제는 응용 프로그램이 닫히거나 기기가 꺼져있는 경우 발생합니다.
현재 내가 멈추고있는 곳입니다. 이 문제를 해결하는 방법에 대한 모든 아이디어를 android.os.SystemClock에 오신 것을 환영합니다
감사보다 더