2016-11-07 3 views
0

나는 Google doc과이 post을 읽었으며 특히 @ bendaf의 대답과 위치 설정 관리에 대해 모두 잘 읽었습니다.위치 설정이 변경되었음을 알리는 방법?

사용자가 처음에 위치를 사용하지 않기로 결정한 다음 나중에 활성화하기로 결정하면 응용 프로그램이이 동작에 의해 트리거되지 않으므로 정기적 업데이트를 요청할 수 있는지 여부를 모르는 경우 문제가 하나 남아 있습니다.

내가 여기서 무엇을 놓쳤는가?

답변

0

사용자가 응용 프로그램을 시작할 때마다 사용자가 위치를 활성화 할 수 있도록 AlertDialog를 제공 할 수 있습니다. 그러나 이것은 당신이 똑같은 것을 부정해야 할 때마다 조금 성가 시게 될 것입니다. 사용자가 위치

+0

아마도이 문제를 명확하게 설명하지 못했습니다. 사용자가 응용 프로그램을 시작한 것을 고려하십시오. 나는 그에게 GPS를 가능하게 해달라고 부탁했다. 나중에 앱을 사용하는 동안 그는 자신의 위치를 ​​사용하고 설정을 확인하고 GPS를 사용하기를 원한다는 사실을 깨닫습니다. 내 응용 프로그램에이 새로운 설정에 대한 정보가 없습니다. 'isGPSEnabled()'를 위해 끌어 올 스레드를 만드는 경우를 제외하고. – 2ndGAB

+0

네, 그렇게 할 수 있습니다. 또는 다음과 같이 루프를 만들 수 있습니다. while (isRunning) {boolean b = isGPSEnabled(); if (b) {// Your code}} 같은 스레드에서. – hittsss

+0

이벤트 구동 시스템에서 잡아 당기는 스레드를 사용하는 것이 이상합니다. – 2ndGAB

0

그것을 할 수있는 또 다른 더 좋은 방법이 있습니다를 활성화/비활성화 할 수 있도록

또는, 환경 설정을 사용할 수 있습니다. LocationListener을 사용하십시오. 그것은 당신이 성취하기를 원하는 유일한 목적을위한 것입니다.

public class XYZ Activity implements LocationListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,10,this); 
} 


@Override 
public void onLocationChanged(Location location) { 
} 

@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 
} 

@Override 
public void onProviderEnabled(String s) { 

} 

@Override 
public void onProviderDisabled(String s) { 

} 
} 

나는 이것이 당신이 찾고있는 옳은 일이라고 생각합니다. 그것은 사건의 방식입니다. 해피 코딩 :)

+0

나는이 모든 것을 구현했으며, 나는 onStatusChanged()가 그런 상황에서는 호출되지 않기를 바랬습니다. – 2ndGAB

+0

lm.requestLocationUpdates 시도 (LocationManager.GPS_PROVIDER, 1000,0, this); – hittsss

+0

'isProviderEnabled()'가 false를 반환하면 아무런 문제가 발생하지 않는다고 생각합니다. – 2ndGAB

관련 문제