Android 位置经理ProxmityAlert总是说进入
我想在用户靠近特定位置时提醒他。为此,我在我的应用程序中包括了一个ProxmityAlert和一个相应的服务。但无论我给出什么坐标,它总是显示“谢谢你访问我的区域!!进入”我这样做是不是错了 我就是这样做的:Android 位置经理ProxmityAlert总是说进入,android,locationmanager,geofencing,Android,Locationmanager,Geofencing,我想在用户靠近特定位置时提醒他。为此,我在我的应用程序中包括了一个ProxmityAlert和一个相应的服务。但无论我给出什么坐标,它总是显示“谢谢你访问我的区域!!进入”我这样做是不是错了 我就是这样做的: public class ProxTest extends Activity { LocationManager lm; double lat = 30.085514, long1 = 77.082603; float radius = 50; @Override public void
public class ProxTest extends Activity {
LocationManager lm;
double lat = 30.085514, long1 = 77.082603;
float radius = 50;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
Intent i = new Intent();
i.setAction("com.example.test.proximityalert");
PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(),
-1, i, 0);
lm.addProximityAlert(lat, long1, radius, -1, pi);
sendBroadcast(i);
System.out.println("Prox alert added ");
}
public class ProximityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
String k = LocationManager.KEY_PROXIMITY_ENTERING;
boolean state = arg1.getBooleanExtra(k, false);
if (state) {
Toast.makeText(arg0, "Welcome to my Area", Toast.LENGTH_LONG)
.show();
} else {
Toast.makeText(arg0, "Thank you for visiting my Area!!"+k,
Toast.LENGTH_LONG).show();
}
}
}
<receiver android:name="ProximityReceiver">
<intent-filter>
<action android:name="com.example.test.proximityalert">
</action>
</intent-filter>
</receiver>
}
这是接收者:
public class ProxTest extends Activity {
LocationManager lm;
double lat = 30.085514, long1 = 77.082603;
float radius = 50;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
Intent i = new Intent();
i.setAction("com.example.test.proximityalert");
PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(),
-1, i, 0);
lm.addProximityAlert(lat, long1, radius, -1, pi);
sendBroadcast(i);
System.out.println("Prox alert added ");
}
public class ProximityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
String k = LocationManager.KEY_PROXIMITY_ENTERING;
boolean state = arg1.getBooleanExtra(k, false);
if (state) {
Toast.makeText(arg0, "Welcome to my Area", Toast.LENGTH_LONG)
.show();
} else {
Toast.makeText(arg0, "Thank you for visiting my Area!!"+k,
Toast.LENGTH_LONG).show();
}
}
}
<receiver android:name="ProximityReceiver">
<intent-filter>
<action android:name="com.example.test.proximityalert">
</action>
</intent-filter>
</receiver>
在清单中,我添加了:
public class ProxTest extends Activity {
LocationManager lm;
double lat = 30.085514, long1 = 77.082603;
float radius = 50;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
Intent i = new Intent();
i.setAction("com.example.test.proximityalert");
PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(),
-1, i, 0);
lm.addProximityAlert(lat, long1, radius, -1, pi);
sendBroadcast(i);
System.out.println("Prox alert added ");
}
public class ProximityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
String k = LocationManager.KEY_PROXIMITY_ENTERING;
boolean state = arg1.getBooleanExtra(k, false);
if (state) {
Toast.makeText(arg0, "Welcome to my Area", Toast.LENGTH_LONG)
.show();
} else {
Toast.makeText(arg0, "Thank you for visiting my Area!!"+k,
Toast.LENGTH_LONG).show();
}
}
}
<receiver android:name="ProximityReceiver">
<intent-filter>
<action android:name="com.example.test.proximityalert">
</action>
</intent-filter>
</receiver>
在我看来,你应该使用多重地理围栏,这是实现你想要的最简单的方法。你可以做一些类似于目标区域的事情。因此,目标眼睛是您希望用户离开或实现目标的中心
(来源:) 例如,像在这个目标图像中,你将从外到内计数,总共有6个地理围栏。距离目标最近,地理围栏ID 6越高,距离目标最远的区域将是地理围栏ID 1。基本上,您需要协调多个地理围栏以实现您的愿望。因此,与边界区域分开的地理围栏不同,您将使用中心地理围栏 每次你的用户得到一个地理围栏更高的值时,一个意图就会发出一个信号或音调,例如:“你越来越近了”。另一种情况也是如此,对于用户正在远离目标区域的情况:“您的地理围栏ID从3变为2,您正在从目标目的地向相反方向移动” 您当前的代码没有对与地理围栏相关的不同方向进行这种区分,也没有显示对多个地理围栏的处理。这就是代码没有按您希望的方式运行的原因