2010-07-31 24 views
4

J'ai ce fichier de script en Python démarrés sur S60:gsm en python emplacement

import location 

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

current_location() 

au lieu d'imprimer un tuple de mcc, RNM, lac et Cellid il imprime Aucun.

sur mon shell python, je vois l'emplacement entre les capacités incluses.

quel peut être le problème?

développement de la situation:

Je pensais que peut-être quand même, mon problème est le manque de capacités. Donc je suis allé signer le fichier PythonScriptShell. J'ai utilisé le site Web OPDA - je sais qu'ils signent toutes les fonctionnalités sauf trois - que je n'utilise pas. J'ai installé le fichier PythonScriptShell signé sur mon téléphone (N95). En haut, la liste des capacités n'a pas changé. essayé de lancer le script à nouveau: même résultat - imprime Aucun.

Si quelqu'un peut m'aider avec ceci, c'est vraiment important.

merci.

Répondre

2

Je pense que je peux maintenant répondre à une partie du problème:

la raison pour l'impression Aucun est parce qu'il faut une autre capacité: ReadDeviceData qui ne figurait pas dans la liste des capacités sur le dessus de la coque de python.

Toujours, restant l'autre partie du problème, pourquoi cette fonctionnalité n'a pas été incluse lorsque j'ai signé le fichier PythonScriptShell? Ce n'est pas l'une des trois capacités restreintes.

0

J'ai même problème avec toutes les capacités de scriptshell nécessaires: 'PowerMgmnt', 'ReadDeviceData', 'WriteDeviceData', 'TrustedUI', 'ProtServ', 'SwEvent', 'Services réseau', 'LocalServices', ' ReadUserData ',' WriteUserData ',' Emplacement ',' EnvironnementsDD ',' UtilisateurEnviroment '.

Jetons un coup d'oeil à code source 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() 

Sur mon Nokia E71 e32.s60_version_info == (3,1) et je reçois None valeur aussi.

Je ne sais pas vraiment ce que signifie « non pertinent », mais directement appeler

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

retours quelque chose proche de ma réalité objective.