web-dev-qa-db-ja.com

Androidで携帯電話サービスの信号強度を取得するにはどうすればよいですか?

現在のセルの信号強度をチェックする非常にシンプルなAndroid=アプリケーションを作成しようとしています。これまでのところ、getNeighboringCellInfo()と呼ばれるものしか見つけていませんが、現在のセルが含まれているかどうかは本当にわかりません。

Androidで現在のセル信号強度を取得するにはどうすればよいですか?

getNeighborCellInfo()は現在のセルを取得しますか?それは私がそれを使って得ることができた結果に基づいているようではないようです。これが私の現在のコードです:

List<NeighboringCellInfo> n = tm.getNeighboringCellInfo();

//Construct the string
String s = "";
int rss = 0;
int cid = 0;
for (NeighboringCellInfo nci : n)
{
    cid = nci.getCid();
    rss = -113 + 2*nci.getRssi();
    s += "Cell ID: " + Integer.toString(cid) + "     Signal Power (dBm): " + 
            Integer.toString(rss) + "\n";
}

mainText.setText(s);
22
Doughy

PhoneStateListener を作成し、onSignalStrengthChangedコールバックを処理します。アプリが初期化されると、最初の通知が表示されます。これは1.xにあります。 2.xでは、これについてオープンな issue があります。

19
jspcal

このコードは役立つかもしれません:

PhoneStateListener phoneStateListener = new PhoneStateListener() {
public void onCallForwardingIndicatorChanged(boolean cfi) {}
public void onCallStateChanged(int state, String incomingNumber) {}
public void onCellLocationChanged(CellLocation location) {}
public void onDataActivity(int direction) {}
public void onDataConnectionStateChanged(int state) {}
public void onMessageWaitingIndicatorChanged(boolean mwi) {}
public void onServiceStateChanged(ServiceState serviceState) {}
public void onSignalStrengthChanged(int asu) {}
};

独自の電話状態リスナーを作成したら、次のコードスニペットに示すように、リッスンするイベントを示すビットマスクを使用してテレフォニーマネージャーに登録します。

TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);

telephonyManager.listen(phoneStateListener,
PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR |
PhoneStateListener.LISTEN_CALL_STATE |
PhoneStateListener.LISTEN_CELL_LOCATION |
PhoneStateListener.LISTEN_DATA_ACTIVITY |
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE |
PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR |
PhoneStateListener.LISTEN_SERVICE_STATE |
PhoneStateListener.LISTEN_SIGNAL_STRENGTH);

また、これらをAndroidManifest.xmlに追加する必要があります。

<uses-permission Android:name="Android.permission.READ_PHONE_STATE"/>
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>
13
tunc olcay