main:
public class MainActivity extends Activity {
LocationManager lm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lm=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
//定义经纬度
double longitude=104.10;
double latitude=30.67;
//定义半径
float radius=5000;
//定义Intent
Intent intent=new Intent(this,ProximityAlertReceiver.class);
//将Intent包装成PendingIntent
PendingIntent pi=PendingIntent.getBroadcast(this, -1, intent, 0);
//添加临近警告
/**
* 参数说明
* 维度
* 经度
* 半径
* 过期时间 -1永不过期
*/
lm.addProximityAlert(latitude, longitude, radius, -1, pi);
}
广播接受者:
public class ProximityAlertReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//获取是否进入指定区域
boolean isEnter=intent.getBooleanExtra(LocationManager.KEY_PROXIMITY_ENTERING, false);
Log.e("isEnter", isEnter+"");
if(isEnter){
Toast.makeText(context, "您已经进入到B8", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(context, "您已经离开奇虎B8", Toast.LENGTH_LONG).show();
}
}
}
动态权限也加了,但不管在模拟器还是手机当中,都出不来Toast
as 是3.6版本,问题的原因应该与广播发送和接收有关
1、关于广播是否有发送,可以看没有任何过滤的log,或者直接过滤你的监听的action
2、室内是无法使用GPS的,除非你有GPS放大器,把室外的信号引到室内
3、你了解一下火星坐标
4、如果可以,请使用第三方引擎,比如说百度、高德、腾讯地图