5

セル信号強度を収集する Android アプリケーションを作成しています。「現在の」セルの信号強度を取得するのに問題がありますが、「隣接する」セルの信号強度を取得するのに問題はありません。

現在のセルの信号強度を取得するために、PhoneStateListener を作成し、onSignalStrengthChanged コールバックを実装しました。それは機能しますが、あまりうまくいきません。信号強度はほとんど変化しないようで、解像度はわずか数に跳ね上がります。信号強度ハードウェアの解像度が粗いという答えを受け入れますが、TelephonyManager の getNeighboringCellInfo() メソッドを使用すると、はるかにうまく機能します。隣接するセルからの信号強度の読み取り値は頻繁に変化し、解像度が大幅に向上します。

では、隣接セルの強度を取得するのと同じ方法で、現在のセルの信号強度を取得するにはどうすればよいでしょうか? 隣接するセルの機能が現在のセルよりも優れているのは奇妙に思えます。ここで何か不足していますか?

また、可能であれば、リスナーではなく、テレフォニー マネージャーからメソッドを直接呼び出して、現在のセル強度を取得したいと考えています。誰かが方法を知っているなら、私に知らせてください。ありがとう。

4

2 に答える 2

8

Android 1.5 ソース (BatteryStatsImpl.java) に基づいて、次の状態の間で信号が変化した場合にのみ通知が送信されます。

SIGNAL_STRENGTH_NONE_OR_UNKNOWN (99)
SIGNAL_STRENGTH_GREAT (16-32)
SIGNAL_STRENGTH_GOOD (8-15)
SIGNAL_STRENGTH_MODERATE (4-7)
SIGNAL_STRENGTH_POOR (0-3)

したがって、あなたの場合、信号強度は同じ範囲内で変化し、通知を受け取りません。

バッテリーの寿命を延ばすためにこのようにしていると思います。

于 2010-09-15T18:36:23.417 に答える
1

onSignalStrengthChanged()javadoc に書かれているように、api 2.0 から廃止され、 (「s」に注意) に置き換えられたため、このメソッドはうまく機能していないと思いますonSignalStrengthsChanged()が、残念ながらこのメソッドは private です!

それについては未解決の問題があります。Google は不明な理由でメソッドを削除したようです (おそらく、お気づきのようにうまく機能していないため)。次の SDK リリースで利用できるようになります。

辛抱強く、ここで投票して、開発プロセスをスピードアップする必要があります。

于 2010-01-06T09:59:01.550 に答える