2012-02-15 74 views
0

我正在爲動態創建的覆蓋創建接近警報,但我遇到了一個問題,即當用戶在半徑範圍內移動時,廣播接收器不會觸發。接近警報接收器不會觸發

private void registerIntents() { 
    for(int i = 0; i < points.size(); i++) { 
     double intentLat, intentLon; 
     intentLat = (int)(points.get(i).getLat() * 1E6); 
     intentLon = (int)(points.get(i).getLon() * 1E6); 
     setProximityAlert(intentLat, intentLon, i+1,i); 
    } 
} 
private void setProximityAlert(double lat, double lon, final long eventID, int requestCode) 
{ 
    // 100 meter radius 
    float radius = 100f; 

    // Expiration is 10 Minutes (10mins * 60secs * 1000milliSecs) 
    long expiration = 600000; 

    LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    int uniqueID = requestCode; 
    String intentAction = PROXIMITY_INTENT_ACTION + uniqueID; 

    //Intent intent = new Intent(PROXIMITY_INTENT_ACTION); 

    //intent.putExtra(ProximityAlertReceiver.EVENT_ID_INTENT_EXTRA, eventID); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), uniqueID, new Intent(intentAction), PendingIntent.FLAG_CANCEL_CURRENT); 
    mIntentFilter = new IntentFilter(intentAction); 
    locManager.addProximityAlert(lat, lon, radius, expiration, pendingIntent); 
} 

這是創建接近警報的代碼,以下代碼用於註冊廣播接收器。我在創建方法中使用它。

 this.registerIntents(); 
    registerReceiver(new ProximityAlertReceiver(), mIntentFilter); 

我真的很感謝任何幫助,因爲我一直在努力工作了幾天沒有成功。

這些是我在清單文件中的權限。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
+0

您有使用廣播意圖而不是定向意圖的原因嗎?您是否已在清單中聲明適當的權限以接收位置數據?你確定位置數據是否正在生成? – jsmith 2012-02-15 21:55:23

+0

我不確定廣播意圖與定向意圖是什麼意思。我對Android非常陌生,並且發現了幾個使用此代碼的教程,所以我認爲這是實現它的方法。 – MillyMonster 2012-02-16 11:55:08

回答

0

嘗試使用直接去你的班上的PendingIntent:

Intent i = new Intent(this, MyActivity.class); 
    PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0, i, 0);  

此跳過通過一個BroadcastReceiver去步驟,簡化了代碼。如果您還沒有看到通知,那麼我會檢查以確保LocationManager根本不會產生任何位置更新。

+0

這沒有奏效。我想我需要重新開始。你會知道一個簡單的近距離警報教程,其中列出了我需要做的事情。我一直在發現沒有解釋的隨機代碼。謝謝你試圖幫助我。 – MillyMonster 2012-02-16 13:38:08

+0

你有沒有試過這個[教程](http://www.javacodegeeks.com/2011/01/android-proximity-alerts-tutorial.html) – jsmith 2012-02-16 15:24:03

+1

自己添加一個答案將有助於解釋它是什麼出現錯誤,以防其他人在同樣的問題中絆倒這個問題。 – 2013-06-18 09:38:44