Archivi categoria: Android

Guardian per Android


Ho appena pubblicato sull’Android Market Guardian, una piccola utility che vorrebbe aiutare a recuperare il proprio cellulare in caso di furto. Il funzionamento e’ molto semplice (e analogo a utility simili disponibili per altri sistemi operativi): Guardian registra il seriale della SIM installata sul terminale Android e un numero di telefono a cui inviare un eventuale messaggio di allarme: nel caso in cui la SIM registrata venga sostituita con un’altra (verosimile dopo un furto…), Guardian invia un messaggio al numero impostato notificando il numero di telefono associato alla nuova SIM (sara’ il mittente del messaggio), il seriale della SIM, l’operatore a cui appartiene e la relativa country, la rete a cui e’ attualmente registrata anch’essa con la country. Tutte queste informazioni saranno utili in fase di denuncia del furto (permettera’, infatti, alle forze di sicurezza di effettuare indagini piu’ mirate).

Guardian_1_0

Per effettuare la configurazione di Guardian e’ necessario riavviare il telefono subito dopo l’installazione. Per associare una nuova SIM e’ necessario disinstallare Guardian, installarlo nuovamente e riavviare il terminale.

Ovviamente Guardian non e’ la soluzione definitiva: il ladro potrebbe essere abbastanza esperto da saper disinstallare le applicazioni o resettare il telefono. In ogni caso, puo’ essere un valido aiuto per il ladro poco geek 😉

L’applicazione e’ gia’ disponibile nell’Android Market nella sezione Tools.

Java ME SDK per Mac OS X (early access)

Grande notizia: e’ finalmente disponibile il Java ME SDK per Mac OS X.

Tempismo perfetto, cara Sun, ora che tutti gli sviluppatori che usano Mac sono gia’ da tempo passati a iPhone o Android. Cio’ che mi chiedo, pero’, e’ perche’ si sia fatta ora una cosa che poteva essere fatta anni fa, visto che Java c’e’ da sempre su Mac OS X. Non avendolo fatto finora, a che pro spendere energie per farlo proprio adesso che Java ME non interessa piu’ nessuno? Sara’ il cavallo di troia per il futuro netbook basato su JME? Secondo me non ci crede neppure Oracle!

L’unica possibilita’ di recupero per JME e’ la Internet of Things: Sun SPOT, Motorola G24 e cosi’ via. Nessun tecnologia puo’ vantare la potenza di JME e dell’enorme collezione di librerie ed esperienze maturate negli anni su device con prestazioni limitate. IoT e’ l’unico futuro possibile per JME.

Oggi, contrastare iPhone e Android e’ del tutto inutile.

Android Bluetooth API 0.3

Ho appena pubblicato la nuova versione della Android Bluetooth API (giunta alla release 0.3). Questa versione risolve alcuni bug delle precedenti (ad esempio, uno stack overflow che capitava talvolta durante il discovery di nuovi device) e ora consente di aprire la finestra di sistema per l’imissione del PIN di pairing e, contentualmente, di far sparire l’avviso sulla notification bar.

La libreria e’ stata testata con successo sui seguenti terminali:

  • ADP 1 (Android 1.1, 1.5, 1.6)
  • HTC Dream (Android 1.1, 1.5, 1.6)
  • HTC Magic (Android 1.5)
  • HTC Tattoo (Android 1.6)
  • Samsung Galaxy (Android 1.5)

Jar, sorgente e javadoc sono disponibili presso:

http://code.google.com/p/android-bluetooth

Android Bluetooth API 0.2


Con un po’ di ritardo rispetto alla tabella di marcia, e’ finalmente pronta (e pubblicata su Google Code) la versione 0.2 della (unofficial) Android Bluetooth API. Questa nuova release include:

  • Bug fixing su RSSI (per la lettura del livello di segnale di ciascun dispositivo rilevato in fase di discovery) e gestione I/O stream
  • Supporto SDP (Service Discovery Protocol), che consente, dato un device remoto e un servizio di interesse, di conoscere il canale RFCOMM assegnato a tale servizio

Ricordo le caratteristiche gia’ implementate nella prima release:

  • Accensione/spegnimento servizio Bluetooth del telefono
  • Discovery dei dispositivi Bluetooth remoti
  • Supporto connessioni RFCOMM client

La (unofficial!) Bluetooth API non richiede alcun hacking sul telefono ed e’ stata testata su Android 1.1 e 1.5, su HTC Dream, HTC Magic e Samsung Galaxy. La libreria, completa di sorgente, e’ sempre disponibile su Google Code:

http://code.google.com/p/android-bluetooth

ed e’ distribuita con licenza Apache 2.0.

Bluetooth Counter


In attesa di rilasciare la versione 0.2 della Android Bluetooth API (che includera’ il supporto al Service Discovery Protocol), ho scritto un altro piccolo app widget che mostra l’utilizzo della libreria. Si tratta del Bluetooth Counter (gia’ disponibile sull’Android Market) che indica quanti dispositivi Bluetooth ci sono accanto a noi.

Piccolo gadget, niente di piu’, ma ci da’ un’idea di quanto anche Bluetooth contribuisca, nel suo piccolo, al crescente inquinamento elettromagnetico.

bluetooth_counter.png

Android Bluetooth API


Android e iPhone OS hanno tante cose in comune, ma una e’ davvero fastidiosa e castrante per gli sviluppatori: lo stack Bluetooth e’ accessibile solo alle applicazioni di sistema ed e’ stato totalmente escluso dalle API pubbliche disponibili sugli SDK ufficiali.

Questo significa essenzialmente che e’ impossibile scrivere applicazioni in grado di connettersi a GPS esterni (o a qualsiasi altro tipo di sensore dotato di questa interfaccia), LEGO Mindstorms NXT, Arduino Bluetooth, lettori RFID con interfaccia Bluetooth e via dicendo. Si tratta certamente di una nicchia, ma resta comunque una nicchia piuttosto interessante e chi ci lavora spesso lo fa per divertimento o sperimentazione di frontiera. Senza contare le innumerevoli applicazioni industriali. Perche’ privarsene?

Leggendo il sorgente (http://source.android.com) e usando sistematicamente la reflection di Java, ho definito una API e scritto una libreria che consente di accedere alle funzionalità base dello stack Bluetooth di Android. In particolare la libreria consente di:

  • attivare/disattivare il servizio Bluetooth (e leggerne lo stato corrente)
  • effettuare una scansione dei dispositivi Bluetooth limitrofi (e conoscerne l’indirizzo, la classe e il friendly name
  • effettuare il pairing con un device remoto
  • aprire una connessione seriale RFCOMM verso un dispositivo remoto

La Experimental Android Bluetooth Library e’ pubblicata gratuitamente sotto licenza Apache 2.0 ed e’ disponibile su:

http://code.google.com/p/android-bluetooth/

Rispetto a progetti simili, questa API (e la relativa implementazione) non richiede che l’accesso root al terminale. In altre parole, funziona su qualsiasi terminale commerciale, senza che sia necessario effettuare alcuna modifica al firmware. Essendo basata sulla reflection, funziona… finché Google non decidera’ di cambiare lo stack Bluetooth di Android (ed è verosimile che cambi, visto che il ramo del sorgente piu’ recente contiene pezzi di una nuova API e chiamate alla vecchia libreria precedente alla 0.9). Ho testato l’API con successo su Cupcake e sulla versione 1.1, il funzionamento sembra abbastanza stabile.

Una applicazione (chiamata “Bluetooth Samples”) che mostra funzionalità fornite dalla libreria è disponibile sull’Android Market. Il sorgente dell’applicazione e’ pubblicato insieme alla libreria su Google Code. L’applicazione consente anche di testare la connession RFCOMM, permettendo di connettersi ad un GPS Bluetooth del quale e’ visualizzato lo stream NMEA. Qui di seguito alcuni snapshot dell’applicazione:

bluetooth_samples_01.png

bluetooth_samples_02.png

bluetooth_samples_03.png

bluetooth_samples_05.png

bluetooth_samples_08.png

bluetooth_samples_09.png

bluetooth_samples_10.png

bluetooth_samples_11.png

bluetooth_samples_12.png

bluetooth_samples_13.png