1

这是我的第一个问题:

我正在尝试配置将从数据库和网络服务提供商提供的接近警报;但我在配置简单的接近警报进行测试时遇到问题。我设法创建了警报,但它从未被触发,我现在只在模拟器中尝试,不知道是否需要一些额外的代码来触发警报。

我在某处读到禁用 GPS 提供商,因此可以使用网络提供商来触发模拟器上的警报。

我的代码如下所示:

接近意图声明

private String proximityIntentAction = new String("gpsdelivery.gpship.getLocation.GPS_PROXIMITY_ALERT");    

在设置警报参数的 onStart() 内部

IntentFilter intentFilter = new IntentFilter(proximityIntentAction);
registerReceiver(new ProximityAlert(), intentFilter);
setProximityAlert(45.150344, 9.999815, -1);        

创建警报的接近警报功能

private void setProximityAlert(double lat, double lon, int requestCode)
{
    // 100 meter radius
    float radius = 100f;
    // Expiration is 10 Minutes
    long expiration = 600000;
    LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    Intent intent = new Intent(proximityIntentAction);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    locManager.addProximityAlert(lat, lon, radius, expiration, pendingIntent);

}

最后是我与广播接收器的接近警报类

public class ProximityAlert extends BroadcastReceiver
    {
        @Override
        public void onReceive(Context context, Intent intent) 
        {
            Log.v("SomeTag","Proximity alert received");

        }

    }       

请让我知道我错过了什么或我做错了什么。在此先感谢,任何源代码将不胜感激。

4

1 回答 1

0

好吧,我相信你setProximityAlert(45.150344, 9.999815, -1);是不正确的。具体来说,您的 -1。它不包含locManager.addProximityAlert(lat, lon, radius, expiration, pendingIntent);.

于 2015-07-21T15:01:28.447 回答