5

現在、設定された間隔で信号強度に関するデータを収集したいクライアント向けのアプリケーションを作成しています。

現在、私はこのコードを使用しています:

private static class MyPhoneStateListener extends PhoneStateListener
{
  @Override
  public void onSignalStrengthsChanged(SignalStrength signalStrength)
  {
     super.onSignalStrengthsChanged(signalStrength);
     telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
     InfoStore.setSignal(String.valueOf(signalStrength.getGsmSignalStrength()));
  }
};

これは問題なく動作しますが、クライアントは両方のレベル (バーはいくつだと思いますか?)、DBM、および ASU の信号強度を求めています。

これらのさまざまな形式を使用して信号強度を読み取る方法を知っている人はいますか?

4

3 に答える 3

2

Android 4.x では、SignalStrength クラスに getAsuLevel、getDbm、および getLevel (バー) メソッドがあります。

これが古い Android バージョンで機能する必要がある場合は、ソース コードを見て、それらのメソッドの実装をコピーできます。 http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.1.2_r1/android/telephony/SignalStrength.java/

取得できない唯一のものは、古い Android バージョンの Lte 測定値ですが、おそらく Java リフレクションを使用して getLte* メソッドが存在するかどうかを確認し、それを呼び出すことができます。

于 2013-02-27T20:01:49.020 に答える