2016-12-29 12 views
0

いくつかのログを記録する目的で、デバイスでBluetooth HCIログを有効にする必要があります。もちろんこれはDevelopers Settingsメニューから簡単に行うことができますが、私のユーザのほとんどはそれに精通しておらず、プログラマチックにやりたいと思います。これらのデバイスはルートされないので、手動でbt_stack.confファイルを編集することはできません。プログラムでBluetooth HCIログを有効にする

インターネット経由で検索しているうちに、非表示のAPIメソッドBluetoothAdapter.configHciSnoopLog()が見つかりました。私は本当にSDKのjarファイルを台無しにしたくないので、私は、このメソッドにアクセスするためにリフレクションを使用したい、このように:

Method configHciSnoopLogMethod = BluetoothAdapter.class.getDeclaredMethod("configHciSnoopLog", boolean.class); 
Object r = configHciSnoopLogMethod.invoke(BluetoothAdapter.getDefaultAdapter(), true); 

これは程度にうまく機能〜私がテストしたデバイスの20%(trueを返します。 )残りの部分はfalse(約20種類のデバイスのうち)を返します。私はアプリに正しいBLUETOOTH_ADMIN権限を与えているので、なぜそれが動作しているのか分かりません。メインの設定アプリケーション用のAOSPソースコードを見てみると、これはまさに内部で行っていることです(もちろん反映されません)。私が紛失しているものはありますか?いくつかの権限を追加する必要がありますか?

ありがとうございました!

答えて

1
Settings.Secure.putInt(context.getContentResolver(), "bluetooth_hci_log", 1); 
関連する問題