我正在尝试在我的应用程序中添加一个接近警报但是半径可变。
如果我像这样使用半径值
float radius = 100f;
有效!
但我正试图这样做:
private void setProximityAlert(String Title, double lat, double lon, float radius, final int id, int requestCode){
// Expiration is 10 Minutes (10mins * 60secs * 1000milliSecs)
long expiration = 600000;
LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Intent intent = new Intent(PROXIMITY_INTENT_ACTION);
intent.putExtra("id", id);
intent.putExtra("Title", Title);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
locManager.addProximityAlert(lat, lon, radius, expiration, pendingIntent);
}
我正在以这种方式设置接近警报:
this.dh = new DataHelper(ShowMap.this);
List<Pontos> list = this.dh.selectAll();
int count = 0;
for(Pontos p : list){
markerPlaces.add(new OverlayItem(p.getName().toString(), Integer.toString(p.getId()), new GeoPoint(p.getLat(), p.getLng())));
setProximityAlert(p.getName().toString(), p.getLat(), p.getLng(), p.getRadius(), p.getId(), count);
count++;
}
注意:p.getRadius()返回int value ...
我的问题是我使用radius = 100f;
它工作正常,所以我认为我需要以相同的方式转换为float,就像整数值为10所以float将是10f。
谢谢!
答案 0 :(得分:1)
应该绝对没问题。存在从int
到float
的隐式转换,因此如果p.getRadius()
返回int
,则应隐式转换为float
- 这表明问题不是你认为它在哪里。
你已经说过,如果你使用100f,但你的实际数据是10,那么它可能有效。所以问题是接近警报估计的距离是50?
答案 1 :(得分:1)
尝试不投射:
float r = radius;
您不需要显式地将int转换为float。有一个从float到int的隐式转换。
答案 2 :(得分:0)
float floatValue = Float.parseFloat(radius +“”);