Allora, in questi giorni ho letto parecchie cose e provato, per quanto possibile alcune combinazioni per superare queste limitazioni.
Premetto che ancora non ho un dispositivo e sto solamente lavorando di emulatore e immaginazione.
Ho sfogliato il codice sorgente di android e ho trovato il fatidico punto nel quale si presenta la limitazione della durata della discovery bluetooth:
file: platform/frameworks/base/core/java/android/server/BluetoothService.java
riga: 859
metodo:
codice:
public synchronized boolean setScanMode(int mode, int duration)
qui questo bel case è cio che fa a caso nostro
codice:
case BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE:
mHandler.removeMessages(MESSAGE_DISCOVERABLE_TIMEOUT);
pairable = true;
discoverable = true;
Message msg = mHandler.obtainMessage(MESSAGE_DISCOVERABLE_TIMEOUT);
mHandler.sendMessageDelayed(msg, duration * 1000);
if (DBG) Log.d(TAG, "BT Discoverable for " + duration + " seconds");
break;
c'è la necessità di eliminare quell'ultimo sendMessageDelayed che nell Handler non fa altro che richiamare nuovamente questo metodo (setScanMode) in questo modo: setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE , -1); disabilitando così la visibilità del dispositivo.
A questo punto però, essendo particolarmente nuovo di android, vorrei sapere cosa dovrei fare per compilare di nuovo android per il mio futuro cellulare HTC Desire, o meglio: è possibile compilare questi sorgenti per l'HTC Desire?
Ho letto molte guide di come flashare una rom e cose simili, ma tutte partono da qualcosa di già bello e pronto, io dovrei compilare kernel e OS, quale guida potrei seguire?
Infine porto un'altra scoperta, e ringrazion Stefano Sanna per la dritta.
Con le reflection è possibile accedere alla suddetta classe BluetoothService e richiamare a piacimento metodi probabilmente utili come:
codice:
setScanMode
setPin
setPasskey
Il mio problema però in questo caso, è che si, posso richiamarli, ma solamente sull'istanza che creo al momento con invoke e non su quella attualmente utilizzata dal sistema. C'è un modo per utilizzare direttamente la classe già istanziata dal sistema?
Grazie ancora,
questo forum è davvero molto interessante