Mobile 如何在诺基亚S60 SDK模拟器中设置特定IMEI

Mobile 如何在诺基亚S60 SDK模拟器中设置特定IMEI,mobile,symbian,nokia,mobile-devices,Mobile,Symbian,Nokia,Mobile Devices,我还对其他允许设置模拟器IMEI的Symbian SDK感兴趣。我从未真正尝试过,但这里是我最好的猜测: 模拟器没有正确的电话实现,除非: 您可以通过红外/usb/串行将其链接到实际手机。在这种情况下,emulator telephony组件需要配置以使用AT命令引导手机(即使手机不是Symbian手机)。这允许您拨打电话、发送和接收SMS/MMS,但肯定不会更改IMEI 您可以使用SIMTSY模块。这是一个使用配置文件模拟电话事件的组件。它可以假装发送短信/彩信,假装你正在接到电话……你知道

我还对其他允许设置模拟器IMEI的Symbian SDK感兴趣。

我从未真正尝试过,但这里是我最好的猜测:

模拟器没有正确的电话实现,除非:

  • 您可以通过红外/usb/串行将其链接到实际手机。在这种情况下,emulator telephony组件需要配置以使用AT命令引导手机(即使手机不是Symbian手机)。这允许您拨打电话、发送和接收SMS/MMS,但肯定不会更改IMEI

  • 您可以使用SIMTSY模块。这是一个使用配置文件模拟电话事件的组件。它可以假装发送短信/彩信,假装你正在接到电话……你知道,所有这些都不会产生任何网络流量。我假设IMEI在配置文件中,但我不希望您在不重新启动仿真器的情况下正确地更改它。我从未见过SIMTSY在Symbian之外使用,所以我不知道第三方开发者是否可以使用它。不过,它应该在未来2年内与操作系统的其他部分开源


还有一种可能性是,SDK本身的构建方式使用构建时宏禁用了emulator的大部分电话框架。你应该检查一下

我处理这类事情的一般方法是用软件来做

  • 将IMEI获取代码放入一个全局可访问的函数中,并且仅将此函数用于IMEI获取
  • < List> <代码> > IFIFF,WiSnSu <强>可用于C++代码中,以选择性地编译您想在模拟器中返回的硬编码IMEI。在Java中,您可能可以通过其他方式(例如,如果IMEI返回的值在仿真器中是一个固定的怪异值)来判断您在仿真器中,并相应地采取行动
  • 您可以更进一步,拥有一个动态IMEI。一旦你这样做了,你会发现用不同的IMEI测试你的代码变得容易多了

  • Emulator已硬编码IMEI为“000000000000000”。用你想用的东西替换什么,然后继续运行你的代码

    Symbian C++:

        TPlpVariantMachineId imei;
        PlpVariant::GetMachineIdL(imei); 
        imei.Copy(_L("123456789012345"));
    
    Python for S60(PyS60):


    我需要更改哪些配置文件或调用哪些API来执行此操作?没有配置文件,正常的API。这就是emulator开箱即用的工作方式:使用“普通”IMEI请求函数调用,您可以在真实设备中获得真实的IMEI,但在emulator中为零。出于实际原因,我现在喜欢PyS60,你们可以这样做:导入sysinfo sysinfo.imei()…但最初的问题提到了C++:#包括TPlpVariantMachineId imei;PlpVariant::GetMachineIdL(imei);在emulator中运行的代码中,只需将收到的IMEI替换为任何内容,然后继续。每个应用程序都需要自己完成。没有通用的一次性解决方案。据我所知,您建议使用以下代码:TPlpVariantMachineId imei;PlpVariant::GetMachineIdL(imei);imei.副本(_L(“123456789012345”);请将其添加到您的答案中,以便正确格式化。
        import sysinfo
        my_imei = sysinfo.imei()
        my_imei = u"123456789012345"