2012-03-21 8 views
0

私のアプリケーションに近接半径を追加しようとしていますが、半径が可変です。浮動小数点型の整数ですが、addProximityAlertは機能しません。

私はこの

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型の値を返します。 ..

私はradius = 100f;を使用していますので、浮動小数点数は10fなので整数値のように浮動小数点数に変換する必要があると思います。

ありがとうございます!

+0

ここで何が起こっているのかは本当に不明です。あなたはあなたの方法がどのように見えるか、パラメータ、またはあなたがそれをどのように呼んでいるのか、どのようなエラーが出るのかを示さなかった。 http://tinyurl.com/so-hintsを読んでください –

+0

@JonSkeetヒントをお寄せいただきありがとうございます、私は最初の投稿を編集しました。あなたが今理解できることを願っています:) – silentw

+0

本当に - あなたは何を得ていますか? –

答えて

1

これは絶対に良いはずです。 intからfloatへの暗黙的な変換があるので、p.getRadius()intを返す場合は暗黙的にfloatに変換する必要があります。これは、問題がどこにあるのかわからないことを示しています。

  • 、実行している場合は、エラーメッセージ
  • を表示する必要は、コンパイルではないが、あなたはそれが期待どおりに動作していない場合は、あなたが期待するとして、それが動作していないかを説明する必要があります。私は強くあなたが100F使用している場合、それが動作言った

...あなたはあなたが持っていると思うのデータを持っていない疑いがあるが、あなたの実際データが10であることと、そのため、おそらく問題は、ということです近接警報は距離を50のようなものとして推定していますか?

+0

お返事ありがとうございます、今私はそれをよく理解していますし、働いています! :) – silentw

+0

@ silentw:なぜあなたは不必要な変換を示す答えを受け入れましたか? (是非とも私のことを受け入れてはいけませんが、不要なものを受け入れるのは奇妙に思えます。 –

+0

それは私の問題を解決しました。私はGPS座標が近接警報をトリガする。しかし、ええ、そうです、私は上記のような変換は必要ありません。すでに(関数のパラメータで)float radiusを使って変換されています。ありがとう! – silentw

0

float floatValue = Float.parseFloat(radius + "");

+0

これはほとんど決していいことではありません。必要がないときにテキスト変換を使用しないでください。 –

+0

どちらもうまくいきませんでした。 – silentw

+0

@silentwが言っているように、上のどれも彼のために働いていません(奇妙なことですが)、私はいくつか考えました。 – Rajkiran

1

はキャストせずに試してみてください。

float r = radius; 

あなたが明示的にfloat型にint型を変換する必要はありません。 floatからintへの暗黙の変換があります。

+0

うまくいきませんでした:/ – silentw

+0

あなたがハードコードしている場合は、上記のコードが動作するはずです。それ以外の場合は、ログを出力し、半径 –

+0

の値が記録されているかどうかを確認してください。整数値が10の場合と同じように動作します。10.0近辺のアラートは機能しません。/ – silentw

関連する問題