Android模拟器信号强度

6

有没有办法在Android模拟器上模拟信号强度的变化? 我在我的应用程序中使用phonestatelistener记录信号强度。 我也使用telnet连接到模拟器,尝试命令gsm signal 5 5,但我一直得到99作为我的RSSI信号强度和-1作为误码率。


你是想要特定地改变信号强度还是限制网络连接速度? - hwrdprkns
改变信号强度,我就是不明白为什么在telnet中有一个GSM信号命令,但似乎在仿真器中无法工作。 - MEURSAULT
2个回答

1

我认为在这种情况下使用接口进行模拟是个好主意。

interface SignalInformation{
    float signalStrength();
    //etc...
}

创建一些虚拟类进行模拟,然后将其更改为真正的工作类。
class MockSignal implements SignalInformation{

    public float signalStrength(){
        return 3.5; //or whatever behaviour you want (i.e. random number)
    }
}

嗯,我希望你明白我的意思了。


0

我觉得在模拟器中做这件事是不可能的。

来源


当我在谷歌上搜索时,我也得到了那个链接。然而,如果你telnet到模拟器并执行列表操作,会出现一个名为gsm signal的命令。这是否意味着该命令只适用于设备?我原以为telnet命令的整个目的是模拟设备更改... - MEURSAULT
正确,这可能是因为不同设备在不同网络上具有不同的功率(dB)评级。在模拟器上实现这样的功能可能会更加困难。 - hwrdprkns
当然,你可以修补模拟器,做任何你想要的事情......让API返回属性或者数据分区中某个文件的值,这是一个相当简单的黑客攻击。大部分工作只需要重新构建它(或者在不重建整个应用的情况下进行修补)。但是,可能更简单的方法是在代码中包装api,并在真实设备上测试它 - 也许可以尝试使用防静电袋作为边缘法拉第笼。 - Chris Stratton
只是出于好奇,如果要修补仿真器以执行此类操作,应该怎么做(我可能最终会在自己的类中克隆功能以在仿真器上进行测试,并在连接到设备时钩住真实侦听器)。仍然只是想知道。 - MEURSAULT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接