Android 获取移动数据信号强度(API <17)

Ang*_*274 1 android

我正在制作一个获取 Wi-Fi 和移动数据信息的应用程序。应用程序的 Wi-Fi 部分工作正常,但我似乎无法让数据部分工作。我在三星手机上听说过这样的问题(我正在测试一个),我需要一个不超过我的 API 级别 15 的解决方法。

这是我当前的代码:

class myPhoneStateListener extends PhoneStateListener {

    @Override
    public void onSignalStrengthsChanged(SignalStrength signalStrength) {

        super.onSignalStrengthsChanged(signalStrength);
        if (signalStrength.isGsm()) {

            mobileStrength = signalStrength.getGsmSignalStrength();
            mobileStrength = (2 * mobileStrength) - 113;

        } else {

            mobileStrength = signalStrength.getCdmaDbm();

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但它返回null

Kev*_*ede 5

/**
 * Gets the signal level from a <tt>SignalStrength</tt> as a value in the
 * range 0-4.  This info is hidden from the public API, so this method
 * obtains it via reflection.
 *
 * @return the signal level, or 0 if Google has broken the hack
 */
public static int getSignalLevel(final SignalStrength signal) {
    try {
        final Method m = SignalStrength.class.getDeclaredMethod("getLevel", (Class[]) null);
        m.setAccessible(true);
        return (Integer) m.invoke(signal, (Object[]) null);
    } catch (Exception e) {
        Log.debug(TAG, "Google hates developers", e);
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)