[英]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.