감사합니다. CommsWare. 주석 필드의 공간 제한으로 인해이 방법으로 응답합니다.
사용자는 픽업 할 항목의 사진을 찍어 서버로 보내야합니다. 이 작업이 완료되면 서버는 폰이 주기적으로 위치를 전송할 수 있도록 폴링주기를 되돌려 보냅니다. 획득 한 위도/경도 (아래 참조)를 표시하기 위해 textViews
을 설정했지만이 부분은 2 박 전까지 작동하지 않았습니다. 그것은 내가 조금 더 참을성이 있고 전화가 위치를 얻는 데 시간을들이는 것을 마침내 끝내 었습니다. 나는 문제가 그때 내가 전화가 위치 수정을 acuire하는 것을 허용하지 않고 있었다라고 생각했다. 그래서 그것은 일하지 않고 있었다. 문제는 당신이 말한 것에 근거하여 정기적 인 업데이트가 작동하지 않을 수도 있고, 위치 픽스 (fix)를 받기 전에 제가 완전히 맑은 하늘 아래서 약 2 분 동안 서 있었다는 사실에 근거하여 문제가 남아 있습니다. 여기
코드의 일부의 스냅 샷 (이 부분은 첫 번째 위치 수정을 얻을 수있는 주요 활동의에서 onCreate 재정에)입니다 :
`LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, new LocationListener() {
public void onStatusChanged(String provider, int status,
Bundle extras) {
// called when the provider status changes. Possible
// status: OUT_OF_SERVICE, TEMPORARILY_UNAVAILABLE or
// AVAILABLE.
}
public void onProviderEnabled(String provider) {
// called when the provider is enabled by the user
}
public void onProviderDisabled(String provider) {
// called when the provider is disabled by the user, if
// it's already disabled, it's called immediately after
// requestLocationUpdates
}
public void onLocationChanged(Location location) {
double latitute = location.getLatitude();
double longitude = location.getLongitude();
tv5.setText(""+latitute);
tv6.setText(""+longitude);
}
});
다음
`
는 SOAP 요청의 일부이며 응답 처리 메커니즘.
`// 폴링 기간을 초 단위로 가져옵니다. String [] getPollNumber; getPollNumber = resultParams [2] .split (";");
//Set up the intent to be passed to the tracking service.
Intent updateLocation = new Intent (this,TrackUser.class);
PendingIntent pendingIntent = PendingIntent.getService(PickUp.this, 0, updateLocation, 0);
//Set up the alarm manager to be used to periodically send updates.
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
//If instruction = 1, start tracking the user.
if(instruction == 1)
{
//Start tracking service on phone.
pollPeriod = Integer.parseInt(getPollNumber[0]);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (pollPeriod*1000), pollPeriod*1000, pendingIntent);
}
else
{
if(instruction == 0)
{
//Stop tracking service.
stopService(new Intent(this,TrackUser.class));
alarmManager.cancel(pendingIntent);
}
}
'추적 서비스 클래스에서
, 나는 단순히 SOAP 객체로 현재 좌표를 패키지 서버를 업데이트의 ONSTART() 오버라이드에서 호출하는 방법을 사용합니다. 나는 GPS가 당신이 말한 것처럼 잠들 때 전화가 오면 이러한 업데이트 중에 잠글 시간이 충분하지 않을 수도 있다고 걱정하고 있습니다. 서비스가 시작될 때 일종의 타이머가 있어야하는지 (아마도 requestLocationUpdates의 minTime 설정일까요?) 전화가 약 3 분 동안 깨어서 수정이 들어올 수 있을지 궁금합니다. 이 코드 스 니펫이 도움이되는지 알려 주시고, 위치 업데이트 아이디어가 가능하면 알려 주시기 바랍니다.