在做GPS开发,发现LocationManager有一个API , addProximityAlert(double latitude,double longitude,float radius,long expiration,PendingIntent intent);
参数分别为经度纬度 半径, 到达指定区域之后 就触发intent对应的组件。
我的做法是:
Intent intent = new Intent(this,ProximituAlertReciever.class);
//包装intent
PendingIntent pi = pendingIntent.getBroadcast(this,-1,this,0);
//添加临近警告
locationManager.addProximityAlert(100,200,5000,-1,this);
在ProximityAlertReviever中
public void onReceive(Context context, Intent intent) {
boolean isEnter = intent.getBooleanExtra(LocationManager.KEY_PROXIMITY_ENTERING, false);
if(isEnter){
Toast.makeText(context, "您已经入指定区域",Toast.LENGTH_LONG).show();
}else {
System.out.println("break");
Toast.makeText(context, "您已离开指定区域", Toast.LENGTH_LONG).show();
}
}
静态注册 一切都非常顺利。。。。。那么 问题来了。
我想让这个ProximityAlertReciever的广播接收器定义在MainActivity类内。因为如果接到广播了想调用里面的方法 ,
我改用静态注册, 自己定义了setAction,注册成功了。但是GPS再进入指定区域 却不发送广播,这是为什么? 我怀疑我注册失败了,然后sendBroadRecievr ,发送广播成功,接收成功。 但是,进入临街区域就不自动发送广播。
是不是我那个intent参数也要改啊? Intent intent = new Intent(this,ProximityAlertReciever.class) 仍然这么写对么?
为什么独立出去的类就可以正常接收,写在Activity类内就不接收了呢。。。。。。。。。
参数分别为经度纬度 半径, 到达指定区域之后 就触发intent对应的组件。
我的做法是:
Intent intent = new Intent(this,ProximituAlertReciever.class);
//包装intent
PendingIntent pi = pendingIntent.getBroadcast(this,-1,this,0);
//添加临近警告
locationManager.addProximityAlert(100,200,5000,-1,this);
在ProximityAlertReviever中
public void onReceive(Context context, Intent intent) {
boolean isEnter = intent.getBooleanExtra(LocationManager.KEY_PROXIMITY_ENTERING, false);
if(isEnter){
Toast.makeText(context, "您已经入指定区域",Toast.LENGTH_LONG).show();
}else {
System.out.println("break");
Toast.makeText(context, "您已离开指定区域", Toast.LENGTH_LONG).show();
}
}
静态注册 一切都非常顺利。。。。。那么 问题来了。
我想让这个ProximityAlertReciever的广播接收器定义在MainActivity类内。因为如果接到广播了想调用里面的方法 ,
我改用静态注册, 自己定义了setAction,注册成功了。但是GPS再进入指定区域 却不发送广播,这是为什么? 我怀疑我注册失败了,然后sendBroadRecievr ,发送广播成功,接收成功。 但是,进入临街区域就不自动发送广播。
是不是我那个intent参数也要改啊? Intent intent = new Intent(this,ProximityAlertReciever.class) 仍然这么写对么?
为什么独立出去的类就可以正常接收,写在Activity类内就不接收了呢。。。。。。。。。