2014-05-16 4 views
5

사용자가 특정 위치 근처에있을 때 경고하고 싶습니다. 이를 위해 ProxmityAlert와 해당 서비스를 내 앱에 포함 시켰습니다. 그러나 내가 어떤 좌표를 지정했는지에 상관없이 항상 "내 지역을 방문해 주셔서 감사합니다 !!"라고 나는 잘못 표시하고 있습니까?위치 관리자 ProxmityAlert는 항상 입력을 말합니다

이 내가 그 일을하고 어떻게 :

public class ProxTest extends Activity { 
LocationManager lm; 
double lat = 30.085514, long1 = 77.082603; 
float radius = 50; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Intent i = new Intent(); 
    i.setAction("com.example.test.proximityalert"); 

    PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 
      -1, i, 0); 
    lm.addProximityAlert(lat, long1, radius, -1, pi); 
    sendBroadcast(i); 
    System.out.println("Prox alert added "); 
} 

}

을 그리고 이것은 수신기입니다 : 내가 추가 한 매니페스트에

public class ProximityReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context arg0, Intent arg1) { 
    // TODO Auto-generated method stub 
    String k = LocationManager.KEY_PROXIMITY_ENTERING; 

    boolean state = arg1.getBooleanExtra(k, false); 

    if (state) { 

     Toast.makeText(arg0, "Welcome to my Area", Toast.LENGTH_LONG) 
       .show(); 
    } else { 

     Toast.makeText(arg0, "Thank you for visiting my Area!!"+k, 
       Toast.LENGTH_LONG).show(); 

    } 
} 
} 

:

<receiver android:name="ProximityReceiver"> 
     <intent-filter> 
     <action android:name="com.example.test.proximityalert"> 
     </action> 
     </intent-filter> 
    </receiver> 

답변

5

제 생각에는 원하는 것을 얻기위한 가장 간단한 방법으로 다중 지오 펜싱을 사용해야합니다. 목표 영역과 같은 것을 할 수 있습니다. 따라서 대상 눈은 사용자가 앞으로 나아가거나 목표를 달성하기를 원하는 중심입니다.

http://www.cision.com/us/wp-content/uploads/2008/10/j0439610.png

체감이 대상 이미지에, 예를 들어, 당신은, 외부에서 내부로 6 개 지오 펜스의 총을 계산 한 것입니다. 타겟에 가장 가깝고 지오 펜스 ID 6가 높을수록 타겟에서 가장 멀리있는 영역은 지오 펜스 ID 1이됩니다. 기본적으로 원하는 것을 얻기 위해 여러 개의 지오 펜싱을 조정해야합니다. 따라서 지오 펜스를 overlapping 경계 영역으로 분리하는 대신 중심 지오 펜스를 사용하게됩니다.

사용자가 지오 펜스가 더 높은 값을 얻을 때마다 ""과 같은 신호 또는 신호음을 내 보냅니다. 다른 방법은 사용자가 대상 영역에서 멀리 떨어지는 경우에 해당됩니다. "지오 펜스 ID가 2에서 3으로 변경되고 목표 대상에서 반대 방향으로 이동합니다".

현재 코드는 지오 펜싱과 관련된 여러 가지 방향을 구분하지 않으며 여러 지오 펜싱을 처리하지 않습니다. 그것이 코드가 원하는대로 작동하지 않는 이유입니다.