簡體   English   中英

Android鄰近警報未觸發

[英]Android Proximity alert is not firing

我正在嘗試在下面設置接近警報,這是我的代碼,但根本沒有觸發

Intent intent = new Intent(ACTION_PROXIMITY_ALERT);
pendingIntent = PendingIntent.getBroadcast(GMapsActivity.this, 0, intent, 0);
locationManager.addProximityAlert(mNavigationDatas.get(CURRENT_INDEX).startCordinates.latitude,
                        mNavigationDatas.get(CURRENT_INDEX).startCordinates.longitude, 100f, -1, pendingIntent);
IntentFilter filter = new IntentFilter(ACTION_PROXIMITY_ALERT); 
registerReceiver(new ProximityBroadcastListener(), filter);

權限如下

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

我正在發送模擬位置以在真實設備上測試Android v4.1.2模擬位置遵循正確的路徑,但未調用廣播偵聽器

public class ProximityBroadcastListener extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        final String key = LocationManager.KEY_PROXIMITY_ENTERING;
        final Boolean entering = intent.getBooleanExtra(key, false);

        if (entering) {
            String instruction = mNavigationDatas.get(CURRENT_INDEX).drivingInstuctions;
            instruction = instruction.replaceAll("<[^>]*>", "");
            Log.e("", instruction);
            tts.speak(instruction, TextToSpeech.QUEUE_FLUSH, null);
            Toast.makeText(context, "entering", Toast.LENGTH_SHORT).show();
        } else {
            locationManager.removeProximityAlert(pendingIntent);
            CURRENT_INDEX++;
            locationManager.addProximityAlert(mNavigationDatas.get(CURRENT_INDEX).startCordinates.latitude,
                    mNavigationDatas.get(CURRENT_INDEX).startCordinates.longitude, 100f, -1, pendingIntent);
            Toast.makeText(context, "exiting", Toast.LENGTH_SHORT).show();
        }
    }

謝謝索拉卜

首先,我建議在添加鄰近警報之前先注冊BroadcastReceiver。 如果您的設備已經在該位置,則它可能會在接收器准備好收聽之前觸發該意圖。

您可能還想通過手動觸發PendingIntent(例如通過AlarmManager,通知或僅按一個按鈕)來檢查接收器是否已正確注冊。

如果以上方法均無效,請考慮嘗試使用物理設備,因為模擬器上的位置事件存在一些問題。 例如, 由於仿真器中的錯誤,傳入位置的時間偏移設置為午夜,因此您的位置條件可能與之不匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM