Nokia N95 e PYS60 con i moduli sensore e Xprofile
Domanda
Ho realizzato uno script Python che dovrebbe modificare il profilo del telefono in base alla posizione del telefono. Runato sotto ScriptShell funziona alla grande.
Il problema è che è appeso, entrambi con lo script "sis" eseguito su "avvio", sia senza di essa.
Quindi la mia domanda è cosa c'è di sbagliato nel codice e anche se devo passare parametri speciali per sistemare?
import appuifw, e32, sensor, xprofile
from appuifw import *
old_profil = xprofile.get_ap()
def get_sensor_data(status):
#decide profile
def exit_key_handler():
# Disconnect from the sensor and exit
acc_sensor.disconnect()
app_lock.signal()
app_lock = e32.Ao_lock()
appuifw.app.exit_key_handler = exit_key_handler
appuifw.app.title = u"Acc Silent"
appuifw.app.menu = [(u'Close', app_lock.signal)]
appuifw.app.body = Canvas()
# Retrieve the acceleration sensor
sensor_type= sensor.sensors()['AccSensor']
# Create an acceleration sensor object
acc_sensor= sensor.Sensor(sensor_type['id'],sensor_type['category'])
# Connect to the sensor
acc_sensor.connect(get_sensor_data)
# Wait for sensor data and the exit event
app_lock.wait()
Lo script inizia allo stivale, usando Ensymble e il mio certificato per sviluppatori.
Grazie in anticipo
Soluzione
Uso spesso qualcosa del genere in cima ai miei script:
import os.path, sys
PY_PATH = None
for p in ['c:\\Data\\Python', 'e:\\Data\\Python','c:\\Python','e:\\Python']:
if os.path.exists(p):
PY_PATH = p
break
if PY_PATH and PY_PATH not in sys.path: sys.path.append(PY_PATH)
Altri suggerimenti
XProfile non è una libreria standard, assicurati di aggiungere un percorso ad essa. La mia ipotesi è che quando viene eseguita come SIS, non trova XProfile e riattacca. Quando si rilasciano la SIS, istruiranno che gli utenti lo installano separatamente o includano all'interno di tuo SIS.
Dove lo avresti installato, usa quel percorso. Ecco la directory predefinita di Python come campione:
# PyS60 1.9.x and above
sys.path.append('c:\\Data\\Python')
sys.path.append('e:\\Data\\Python')
# Pys60 1.4.x or below
sys.path.append('c:\\Python')
sys.path.append('e:\\Python')
BTW Fai un'uscita pulita, fallo:
appuifw.app.menu = [(u'Close', exit_key_handler)]