Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android获取移动数据信号强度(API<;17)_Android - Fatal编程技术网

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

Android获取移动数据信号强度(API<;17),android,Android,我正在制作一个可以获取Wi-Fi和移动数据信息的应用程序。应用程序的Wi-Fi部分工作正常,但数据部分似乎无法正常工作。我在三星手机上听说过类似的问题(我正在测试一款),我需要一个不超过API级别15的解决方案 这是我目前的代码: class myPhoneStateListener extends PhoneStateListener { @Override public void onSignalStrengthsChanged(SignalStrength signalS

我正在制作一个可以获取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();

        }
    }
}

但是它返回
null

您是否在AndroidManifest.xml文件中设置了权限

如果不是,则将其设置为读取手机状态

你诚挚的


Flemming

您是否在AndroidManifest.xml文件中设置了权限

/**
 * 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;
    }
}
如果不是,则将其设置为读取手机状态

你诚挚的

弗莱明

/**
/**
 * 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;
    }
}
*从SignalStrength中获取信号电平,作为 *范围0-4。此信息对公共API是隐藏的,因此此方法 *通过反射获得它。 * *@返回信号电平,如果谷歌破解,返回0 */ 公共静态信号电平(最终信号强度信号){ 试一试{ 最终方法m=SignalStrength.class.getDeclaredMethod(“getLevel”,(class[])null); m、 setAccessible(true); 返回(整数)m.invoke(信号,(对象[])null); }捕获(例外e){ debug(标签“Google讨厌开发者”,e); 返回0; } }
/**
*从SignalStrength中获取信号电平,作为
*范围0-4。此信息对公共API是隐藏的,因此此方法
*通过反射获得它。
*
*@返回信号电平,如果谷歌破解,返回0
*/
公共静态信号电平(最终信号强度信号){
试一试{
最终方法m=SignalStrength.class.getDeclaredMethod(“getLevel”,(class[])null);
m、 setAccessible(true);
返回(整数)m.invoke(信号,(对象[])null);
}捕获(例外e){
debug(标签“Google讨厌开发者”,e);
返回0;
}
}

仍然返回
null
。仍然返回
null
。它返回4(我假设这是最好的)。有没有办法从0-100分开始?如果没有,我是否应该使用
[result]*25的
[result]*20
?@AngryCupcake274如果您想了解该方法如何得出一个值,请在AOSP中查找并根据您的目的进行调整。就我个人而言,我觉得默认实现中存在一定程度的“条形膨胀”。您知道一种获得移动数据速度的方法,如
WifiInfo.getLinkSpeed()
?我不在乎它是什么样的网络,我只需要一个号码。(我必须在这里提问,因为我90分钟内无法发布)另外,您如何根据需要获得信号强度?我不想等到信号强度改变时再去做。@AngryCupcake274我不知道有什么办法可以在API 17之前按需获得它。当我的应用程序启动时,我注册了一个监听器,希望它在我需要它之前改变。我从未尝试过确定移动数据速度。它返回4(我认为这是最好的)。有没有办法从0-100分开始?如果没有,我是否应该使用
[result]*25的
[result]*20
?@AngryCupcake274如果您想了解该方法如何得出一个值,请在AOSP中查找并根据您的目的进行调整。就我个人而言,我觉得默认实现中存在一定程度的“条形膨胀”。您知道一种获得移动数据速度的方法,如
WifiInfo.getLinkSpeed()
?我不在乎它是什么样的网络,我只需要一个号码。(我必须在这里提问,因为我90分钟内无法发布)另外,您如何根据需要获得信号强度?我不想等到信号强度改变时再去做。@AngryCupcake274我不知道有什么办法可以在API 17之前按需获得它。当我的应用程序启动时,我注册了一个监听器,希望它在我需要它之前改变。我从未尝试过确定移动数据的速度。