2012-02-11 1 views
2

제 의도는 몇 분마다 내 안드로이드 휴대 전화의 움직임을 추적하여 내 서버로 보내주는 응용 프로그램을 만드는 것입니다. 나는 서비스, AlarmManager 및 Partial_WakeLock으로 그것을하는 방법에 많은 온라인을 읽었다. 나는 또한 github.com의 commonsware 예제를 살펴 봤지만 안드로이드에서 아직 경험이 없기 때문에 약간 혼란 스러웠다.일정한 시간 간격으로 내 안드로이드 애플리케이션을 어떻게 작동시킬 수 있습니까?

내 응용 프로그램을 [위치를 얻고 내 서버로 보내기]에 성공했습니다. 몇 분마다 서비스를 깨우고 [언급 된 작업]을 수행합니까? Wareful commonsware의 예에서, 어떤 방법으로 내 [작업]에 대해 언급하고 어떤 방법으로 계속 호출 할 수 있습니까?

답변

7

ServiceAlarmManager이 필요합니다. 귀하의 서비스는 직책을 얻고이를 서버에 게시하고 귀하가 결정한 기간에 AlarmManager이 귀하의 서비스를 시작합니다. 당신은 onCreate에 약이처럼 Service로 알람 관리기를 초기화해야 또는 다른 장소 당신이 원하는 :

AlarmManager alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, YourAlarmReceiver.class),PendingIntent.FLAG_CANCEL_CURRENT); 

// Use inexact repeating which is easier on battery (system can phase events and not wake at exact times) 
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, YOUR_ALARM_TRIGGER_AT_TIME,YOUR_ALARM_INTERVAL, pendingIntent); 

YourAlarmReceiver 거 서비스를 사용하는 방법에 대한

public class YourAlarmReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
      context.startService(new Intent(context, YourService.class)); 
    } 
} 

는 안드로이드 웹 사이트를 참조하여 서비스를 시작 http://developer.android.com/guide/topics/fundamentals/services.html

+0

잘 풀리면 나는 이것을 시험해보고 여기에 올릴 것입니다. 고맙습니다. – Sap

+0

나는 그것을 시험해 보았고 그 목적은 잘되었다. 지금 내가 겪고있는 문제는 너무 많은 데이터 요소를 얻고 있다는 것입니다. * LocationManager *에게 최소 10 미터의 위치가 보일 때만 [작업] 할 것을 요청합니다. 여전히 변위가 나타날 때까지 동일한 위치의 두 번째 (거의) 데이터 포인트를 얻고 있습니다. * AlarmManager * 때문일 수 있습니까? – Sap

+0

AlarmManager를 사용하여 LocationManager를 호출하고 있습니까? AlarmManager에 지정한 간격은 해당 간격으로 원하는 서비스를 호출하는 데 사용됩니다 ... 문제를 정확히 이해할 수 없습니까? 당신은 당신이 너무 많은 업데이 트를 가지고 있다면, 간격을 늘릴 수있다. 만약 therese가 10 미터 변위가 있다면 당신은 결과를 처분 할 수 있고, 그러나 10 미터의 변위가있는 것 같지 않다면 alarmmanager로 결과를 얻은 후에 GPS 정확도가 충분하지 않습니다. –

0

sleep (x)가 해결되면 시스템이 다음 코드 행을 호출 할 수있는 sleep (X) 부분 웨이크 록을 사용할 수 있지만 문제는 가능한 한 무한 사이클이 필요하다는 것입니다. 작업 죽이기 동작, 또는 시스템 충돌.

+0

나는 이것을 시도 할 것입니다. 것은 말하기를위한 데이터가 필요하기 때문에 무한 사이클에 들어가면 상관하지 않습니다. 고맙습니다. – Sap