2013-08-28 21 views
5

È possibile avviare Bluetooth da ADB senza l'intervento dell'utente? ho provato:Avvia il Bluetooth da ADB o all'avvio?

am start -a android.bluetooth.adapter.action.REQUEST_ENABLE 

ma questo richiede all'utente di premere OK. E:

service call bluetooth 3 

non fa nulla. Anche l'abilitazione del servizio bluetoothd in init.rc non funziona.

service bluetoothd /system/bin/bluetoothd -n 
    class main 
    socket bluetooth stream 660 bluetooth bluetooth 
    socket dbus_bluetooth stream 660 bluetooth bluetooth 
    # init.rc does not yet support applying capabilities, so run as root and 
    # let bluetoothd drop uid to bluetooth with the right linux capabilities 
    group bluetooth net_bt_admin misc 
    enabled 

E preferirei un comando da ADB. (Se qualcuno si sta chiedendo ne ho bisogno per i test FCC.)

risposta

3

Se funziona per te, un'app può facilmente cambiare lo stato del bluetooth. Il codice è molto semplice, sono sicuro che si ha familiarità con esso:

BluetoothAdapter.getDefaultAdapter().enable() 

Questo potrebbe essere un applicazione "senza testa" con un servizio di solo ascolto per un intento specifico. Potresti installarlo e quindi trasmettere l'intento dell'attivatore.

Se si desidera che l'applicazione non compaia nell'app "cassetto" (solo in Impostazioni-> App), rimuovere i filtri di avvio e di intento principale dal file AndroidManifest.xml. Cioè, eliminare questi:

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

Da questo momento in poi è possibile avviare l'applicazione/servizio con l'intento di definire per essa nel file manifesto. Ad esempio, è possibile creare e registrare un filtro intenti per il servizio con l'azione com.company.service.bluetooth.ON e avviarlo con il comando adb:

am startservice -a com.company.service.bluetooth.ON 

non sembra essere un altro modo per farlo se il telefono è non fissato. Se rootato, il service call bluetooth 3 dovrebbe funzionare.

In questo tutorial è descritta una soluzione di lavoro: How to launch an Android app from adb - And toggle bluetooth. Usano questa app: Bluetooth On/Off Toggle App.

+0

Sì, ho pensato di creare un'app per questa come ultima risorsa (un'app BluetoothON e un'app BluetoothOFF). È possibile nascondere un'app dal cassetto delle app (siamo al 4.1.2)? E poi usa "adb shell am start" per avviarlo. –

+0

aggiornato la risposta con le informazioni di occultamento – allprog

4

Su un dispositivo radicata

adb shell service call bluetooth_manager 8 

lavori per me.

+0

Sfortunatamente, questo in realtà sembra aver bisogno di un dispositivo rooting – raphinesse

+0

@raphinesse sì lo so, ecco perché la prima riga nella mia risposta è "Su un dispositivo rooted" – Danw25

Problemi correlati