整数浮动但addProximityAlert不起作用

时间:2012-03-21 11:05:12

标签: java android

我正在尝试在我的应用程序中添加一个接近警报但是半径可变。

如果我像这样使用半径值

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。

谢谢!

3 个答案:

答案 0 :(得分:1)

应该绝对没问题。存在从intfloat的隐式转换,因此如果p.getRadius()返回int,则应隐式转换为float - 这表明问题不是你认为它在哪里。

  • 如果没有编译,则需要显示错误消息
  • 如果它正在运行,但没有按照您期望的方式运行,您应该解释 它的行为与您的预期不符。我强烈怀疑你没有得到你认为有的数据......

你已经说过,如果你使用100f,但你的实际数据是10,那么它可能有效。所以问题是接近警报估计的距离是50?

答案 1 :(得分:1)

尝试不投射:

 float r = radius;

您不需要显式地将int转换为float。有一个从float到int的隐式转换。

答案 2 :(得分:0)

float floatValue = Float.parseFloat(radius +“”);