2013-03-18 2 views
0

Я пытаюсь настроить сигнализацию близости на основе местоположения выбранного маркера, координаты которого хранятся во внешнем файле и считываются в массив, который, в свою очередь, рисует координаты.Класс предупреждения о приближении не срабатывает Android

googleMap.setOnInfoWindowClickListener(
      new OnInfoWindowClickListener(){ 
    public void onInfoWindowClick(Marker marker) { 



     LatLng clickedMarkerLatLng = marker.getPosition(); 
       double lat = clickedMarkerLatLng.latitude; 
       double long1 = clickedMarkerLatLng.longitude; 

      Log.e("hello", "Output=" + lat + long1); 


    LocationManager lm; 
    // double lat=0; 
// double long1=0; //Defining Latitude & Longitude 
    float radius=3000; 


    lm=(LocationManager) getSystemService(LOCATION_SERVICE); 
    Intent i= new Intent("com.example.sleepertrain5.proximityalert");   //Custom Action 
    PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), -1, i, 0); 
    lm.addProximityAlert(lat, long1, radius, -1, pi); 
    Toast.makeText(getBaseContext(), 
      "Info Window [email protected]" + lat + "dddjdj" + long1, 
      Toast.LENGTH_SHORT).show(); 



    class ProximityReceiver extends android.content.BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 
     // The reciever gets the Context & the Intent that fired the broadcast as arg0 & agr1 

     String k=LocationManager.KEY_PROXIMITY_ENTERING; 
    // Key for determining whether user is leaving or entering 

     boolean state=arg1.getBooleanExtra(k, false); 
     //Gives whether the user is entering or leaving in boolean form 

     if(state){ 
     // Call the Notification Service or anything else that you would like to do here 
     Toast.makeText(arg0, "Welcome to my Area", 600).show(); 
     }else{ 
     //Other custom Notification 
     Toast.makeText(arg0, "Thank you for visiting my Area,come back again !!", 600).show(); 

     } 

    } 

    } 
      } 

}); 
} 

Координаты выбранного маркера передаются диспетчеру местоположения, но сигнал тревоги близости не работает. Очевидно, на данный момент он просто показывает тост, но он даже не делает этого. Согласно журналу, класс приемника Proximity никогда не называется, но я не могу понять, почему. Я пробовал его с различными размерами радиуса, и он все еще не работает. Любые идеи или помощь?

ответ

1

Вам необходимо зарегистрировать свой BroadcastReceiver с действием, которое вы использовали для PendingIntent. Вы можете сделать это в AndroidManifest.xml, добавив следующие строки:

<receiver android:name="MyScheduleReceiver" > 
    <intent-filter> 
     <action android:name="com.example.sleepertrain5.proximityalert" /> 
    </intent-filter> 
</receiver> 
Смежные вопросы