2009-05-25 4 views
4

전화가 도착하면 가까이에 도착하고 업데이트하려고합니다. 나는 모두 addProximityAlert 및 requestLocationUpdatesaddProximityAlert가 작동하지 않습니다 (어느 쪽도 requestLocationUpdates하지 않습니다) - Android

LocationManager lm =(LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    Location l = lm.getLastKnownLocation("gps"); 
    Intent intent = new Intent("eu.mauriziopz.gps.ProximityAlert"); 
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0); 
    lm.addProximityAlert(12, 12, 100, 1000000, pIntent); 

(I 수동으로 불 수 있기 때문에 나는이 일을 알고)이 하나가 의도를 발생하지를 사용하여 시도했습니다. 리스너를 사용해 보았지만 한 번만 실행됩니다. 아무리 그것이 결코 호출되지 가져옵니다 GPS를 업데이트 몇 번이나 다시

ProximityListener pl = new ProximityListener(); 
    lm. requestLocationUpdates("gps", 2000, 10, pl); 

이 (첫 번째 경우에서 호출) 활동

public class ProximityAlert extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    Log.d("intent", "Hi"); 
    finish(); 
} 

이것은의 코드는 리스너

public class ProximityListener implements LocationListener { 
String DEBUG_TAG = "ProximityListener"; 
@Override 
public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 
    Log.d(DEBUG_TAG, location.toString()); 

} 

@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 
} 
없다

감사합니다.

답변

0

나는 onCreate 메타에서 이미 활동을 종료해야한다고 생각하지 않습니다. od (finish()를 호출하여).

+0

보다 -1에 만료 설정을 시도 해 봤나 많이 변하지 않아. 답변을 주셔서 감사합니다. –

5

내가 생각하는 문제는 당신이 의도를 정의하는 방법입니다/PendingIntent. 인 텐트를 사용하여 활동을 시작하는 방법에는 두 가지가 있으며, 포함 된 코드는이 둘 사이의 교차점처럼 보입니다.

활동을 시작하는 표준 방법은 현재의 상황과 활동의 클래스를 취하는 의도 생성자를 사용하고 PendingIntent 만들 PendingIntentgetActivity 방법을 사용하는 것입니다 : 또는

Intent intent = new Intent(this, ProximityAlert.class); 
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0); 

을, 당신은 추가 할 수 있습니다 특정 동작 (예 : "eu.mauriziopz.gps.ProximityAlert")을 수신하는 IntentFilter를 사용하여 매니페스트의 활동에 IntentReceiver을 추가합니다. 그러나이 경우 PendingIntent.getBroadcast을 사용하여 PendingIntent를 만들어야합니다. 당신이 당신의 매니페스트에 정의 된 위치 기반 서비스에 대한 올바른 사용 권한을 가지고 있는지 확인해야합니다 모든 경우에

Intent intent = new Intent("eu.mauriziopz.gps.ProximityAlert"); 
PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 

: 오히려 문자열을 사용하는 것보다 또한

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.INTERNET"/> 

을 " gps "를 사용하려면 정적 상수 LocationManager.GPS_PROVIDER을 사용하는 것이 좋습니다.

1
Intent intent = new Intent("com.sccp.fourgdummy.REQUEST_DFGS"); 
intent.putExtra("launch_tab", "otp"); 
PendingIntent proximityIntent = PendingIntent.getActivity(this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK); 

이 중요하다 Intent.FLAG_ACTIVITY_NEW_TASK

1

API는 위도, 길이, 반경, 만료, 의도로 addProximityAlert의 매개 변수를 정의합니다. 당신은 오히려 단지 디버그 작업이었고, 그렇게 활동 아무튼를 마무리 로그에 기록 만약 내가보고에 관심이 100000

lm.addProximityAlert(12, 12, 100, 1000000, pIntent);

lm.addProximityAlert(12, 12, 100, -1, pIntent); 
관련 문제