Python中的GSM定位

4 投票
2 回答
857 浏览
提问于 2025-04-16 02:07

我在S60上运行一个Python脚本文件:

import location

def current_location():
 gsm_loc = location.gsm_location()
 print gsm_loc

current_location()

结果它打印出来的是None,而不是包含mcc、mnc、lac和cellId的元组。

在我的Python命令行上,我看到位置在包含的权限列表之间。

这可能是什么问题呢?

情况的发展:

我想,也许我的问题是缺少权限。所以我去给PythonScriptShell文件签名。 我使用了OPDA网站 - 我知道他们会签署所有权限,除了三个我不使用的权限。 我把签名后的PythonScriptShell文件安装到我的手机(N95)上。权限列表的顶部没有变化。然后我又尝试运行脚本: 结果还是一样 - 打印出None。

如果有人能帮我解决这个问题,那真的很重要。

谢谢。

2 个回答

0

我在使用所有必要的脚本功能时遇到了同样的问题,包括:'PowerMgmnt'(电源管理)、'ReadDeviceData'(读取设备数据)、'WriteDeviceData'(写入设备数据)、'TrustedUI'(可信用户界面)、'ProtServ'(保护服务)、'SwEvent'(软件事件)、'Network services'(网络服务)、'LocalServices'(本地服务)、'ReadUserData'(读取用户数据)、'WriteUserData'(写入用户数据)、'Location'(位置)、'SurroundingsDD'(环境数据)、'UserEnviroment'(用户环境)。

我们来看一下来自 PythonForS60/module-repo/dev-modules/location.py 的源代码:

import e32
import _location

def gsm_location():
    if e32.s60_version_info>=(3,0):
        ret = _location.gsm_location()
        if ret[4]==1: # relevant information ?
            return (int(ret[0]),int(ret[1]),ret[2],ret[3])
        else:
            return None # information returned by _location.gsm_location() not relevant
    else:
        return _location.gsm_location()

在我的诺基亚 E71 上,e32.s60_version_info == (3,1),我也得到了 None 的值。

我不太明白“无关紧要”是什么意思,但直接调用

>>> import _location
>>> _location.gsm_location()
(u'257', u'01', 555, 11, 0)

返回的结果与我的实际目标相近。

2

我觉得我现在可以回答这个问题的一部分:

打印出None的原因是因为还需要一个额外的功能:ReadDeviceData,但这个功能没有包含在Python命令行上方的功能列表里。

不过,问题的另一部分仍然没有解决,为什么在我签署PythonScriptShell文件时,这个功能没有被包含进去?它并不是三个受限功能之一。

撰写回答