Android网络提供商RSSI:在textview中显示dBm

时间:2012-04-01 08:02:52

标签: android android-2.3-gingerbread

我正在尝试显示dBm,就像你在下面看到的那样:

  

设置>关于手机>状态..

到目前为止,我已经达到应用程序不会崩溃的程度。

现在,它只是在textview中不显示任何内容。

我在这里看了很多帖子,每个帖子都与我想要的东西不同。认为这将是一个简单的搜索和发现,事实证明它不是。

不确定我在这里做错了什么,在LogCat中没有错误任何人都有任何想法会很棒。

开发人员引用根本不帮助我,除非它有一些东西向我展示它是如何使用/工作所以我可以理解它。我试过并且失败大声笑,无论如何是我的代码:

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.NeighboringCellInfo;
import android.telephony.TelephonyManager;
import android.widget.TextView;

public class Screen extends Activity {

    TextView dbm;
    String dBm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainfull);
        dbm = (TextView) findViewById(R.id.Signal);

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

        List<NeighboringCellInfo> NeighboringList = telephonyManager
                .getNeighboringCellInfo();

        for (int i = 0; i < NeighboringList.size(); i++) {

            int rssi = NeighboringList.get(i).getRssi();

            if (rssi == NeighboringCellInfo.UNKNOWN_RSSI) {
                dBm = "Unknown RSSI";
            } else {
                dBm = String.valueOf(-113 + 2 * rssi) + " dBm";
            }

        }

        dbm.setText(dBm);

    }
}

不确定我是否遗漏了任何可能有用的信息,如果是这样,请告诉我

1 个答案:

答案 0 :(得分:3)

也许NeighboringList是空的?

您真的想要相邻小区当前小区的RSSI吗? 要获取当前单元格的RSSI,您可以注册this listener

public class AndroidPhoneStateListener extends PhoneStateListener {
    public static int signalStrengthValue;

    @Override
    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
        super.onSignalStrengthsChanged(signalStrength);
        if (signalStrength.isGsm()) {
            if (signalStrength.getGsmSignalStrength() != 99)
                signalStrengthValue = signalStrength.getGsmSignalStrength() * 2 - 113;
            else
                signalStrengthValue = signalStrength.getGsmSignalStrength();
        } else {
            signalStrengthValue = signalStrength.getCdmaDbm();
        }
    }

}