Topic: versione del SO su Android  (Letto 1720 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Tungsteno

  • python erectus
  • ***
  • Post: 183
  • Punti reputazione: 0
    • Mostra profilo
versione del SO su Android
« il: Agosto 09, 2015, 19:47 »
Ho notato che sul mio Galaxy S3 Neo se provo a verificare il sistema operativo in uso mi ritorna un SO Linux:

[codice]import os, platform, sys
print os.name
print platform.platform()
print sys.platform[/codice]

e ritorna le seguenti stringhe:

Citazione
posix
Linux-3.4.0-2688263-armv7l-with-libc
linux4

Ora mi domando, come faccio a distinguere un sistema operativo android da un SO linux in maniera semplice e sicura?
L'ho testato con QPython.

Grazie a tutti.
« Ultima modifica: Agosto 09, 2015, 19:53 da Tungsteno »

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.658
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: versione del SO su Android
« Risposta #1 il: Agosto 10, 2015, 12:08 »
Potresti provare un workaround, come provare ad importare un modulo presente solo su android e catturare l'import error.

Offline Tungsteno

  • python erectus
  • ***
  • Post: 183
  • Punti reputazione: 0
    • Mostra profilo
Re: versione del SO su Android
« Risposta #2 il: Agosto 11, 2015, 01:41 »
Ci avevo già pensato, ma il problema è che non trovo moduli "affidabili" che sicuramente girano su una piattaforma ma non sull'altra.

Per esempio, leggendo in giro (e personalente ho testato solo i primi due metodi) se si importa il modulo android nel SO omonimo da errore (anche se su un forum consigliano proprio questa procedura).
Se invece importo il modulo multiprocessing, che per una questione di implementazione del SO android non è compatibile coi processi "standard", mi da errore di import sul modulo interno  "_multiprocessing" che non trova.
Mentre se importo lo stesso modulo di prima in PY4A lo rileva correttamente, ma da errore nel compilatore di java appena uso il metodo Process (quindi siamo di nuovo punto a capo).

Mi sembra strano che non ci sia ancora un identificatore per la piattaforma Android, qualcuno di voi ha delle informazioni in più a riguardo?

p.s.: scusate avevo sbagliato a scrivere il nome del modulo che non era multithreading ma multiprocessing.
« Ultima modifica: Agosto 12, 2015, 03:20 da Tungsteno »

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re: versione del SO su Android
« Risposta #3 il: Agosto 11, 2015, 20:44 »
Mi sembra strano che non ci sia ancora un identificatore per la piattaforma Android

Nel senso che l'API Python non la prevede?
http://stackoverflow.com/questions/3093365/how-can-i-check-the-system-version-of-android

Offline Tungsteno

  • python erectus
  • ***
  • Post: 183
  • Punti reputazione: 0
    • Mostra profilo
Re: versione del SO su Android
« Risposta #4 il: Agosto 12, 2015, 03:37 »
Scusate ho corretto un erroraccio del modulo che ho provato ad importare nel mio post precedente.

Nel senso che l'API Python non la prevede?

Esatto, da in tutti i casi (che ho testato) un SO linux. Purtroppo non vorrei implementare codice java per verificare la versione del SO (visto che per mia fortuna, anche se forse non vale in questo caso, lo conosco a malapena), ma avrei sperato di usare i metodi standard presenti in python.

Proverò a segnalare la cosa al supporto di QPython (visto che quello di SL4A/PY4A sembra non essere più aggiornato). Però è strano che ancora nessuno abbia segnalato questo fatto e tanto più che il team non abbia subito provveduto a sistemare questa cosa. Sembra quasi che Python sui dispositivi mobili venga snobbato.
Magari poi sono io ad aver tralasciato qualcosa di essenziale per risolvere questo mistero.
« Ultima modifica: Agosto 12, 2015, 04:07 da Tungsteno »

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.658
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: versione del SO su Android
« Risposta #5 il: Agosto 12, 2015, 08:30 »
Potresti usare anche kivy, è cross platform

Offline Tungsteno

  • python erectus
  • ***
  • Post: 183
  • Punti reputazione: 0
    • Mostra profilo
Re: versione del SO su Android
« Risposta #6 il: Agosto 12, 2015, 20:03 »
Già hai ragione, non ci avevo pensato, anche se lo sto usando per la gui.
Ho notato adesso che in kivy c'è il modulo utils che ha dentro una variabile platform che supporta anche i dispositivi mobili.
C'è solo un problema che anche qui per verificare la piattaforma android importano il modulo android ma di da errore di tipo KeyError: 'ANDROID_APP_PATH' e devo vedere se è risolvibile con poco.

Comunque mi auguro che tramite python-for-android e l'apk generato non dia questo problema. Solo che non potrò testarli direttamente.  ;(

Grazie a tutti dell'aiuto.