2014-05-16 17 views
5
giriyor

Belirli bir konumun yakınında olduğunda kullanıcıyı uyarmak istiyorum. Bunun için benim app bir ProxmityAlert ve ilgili bir hizmet dahil ettik. Ama ne koordine edersem vereyim, her zaman bana gösterir "Alanımı ziyaret ettiğin için teşekkür ederim! Giriyor" Bunu yanlış yoldan mı yapıyorum?Konum Yöneticisi ProxmityAlert her zaman

Bu Yapıyorum nasıl:

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 "); 
} 

}

Ve bu alıcısıdır: Ben eklemiş Manifest yılında

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> 

cevap

5

Benim görüşüme göre, istediğiniz şeyi elde etmenin en kolay yolu olarak çoklu geofencing kullanmalısınız. Hedef alan gibi bir şey yapabilirsiniz. Böylece hedef göz, kullanıcının yola çıkmasını veya başarmasını istediğiniz merkezdir.

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

gibi bu hedef görüntüde, örneğin sen, dıştan içe 6 coğrafi çitler toplam sayım olacaktır. Hedefe en yakın olan, hedefin en uzak bölgesi olan coğrafi bölge kimliği 6, coğrafi kimlik 1 olacaktır. Temel olarak, istediğiniz şeyi elde etmek için birden fazla geofencing'i koordine etmeniz gerekecektir. Dolayısıyla, geofences'ı overlapping kenarlık alanları ile ayırmak yerine, merkezi coğrafi konumlara sahip olursunuz.

Kullanıcınız her defasında daha yüksek bir değer alırsa, bir amaç aşağıdaki gibi bir sinyal veya ton verir: "'a yaklaşıyorsunuz". Etrafındaki diğer yön de doğrudur, çünkü kullanıcı hedef alandan uzaklaşıyor: "geofence ID'niz 3'ten 2'ye değişti, hedeflediğiniz yerden ters yönde hareket ediyorsunuz".

Geçerli kodunuz, geofencing ile ilgili farklı yönlerde bu tür bir ayrım yapmaz, ne de çoklu geofencing işlemlerini gösterir. Bu yüzden kod istediğin gibi davranmıyor.