私はいくつかの調査の後で、ユーザーのやりとりなしに発見可能なタイムアウトを設定することは、(以前の回答で既に提案されているように)ルートアクセスでのみ可能であると結論付けました。
private void ensureBluetoothDiscoverability() {
try {
IBluetooth mBtService = getIBluetooth();
Log.d("TESTE", "Ensuring bluetoot is discoverable");
if(mBtService.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
Log.e("TESTE", "Device was not in discoverable mode");
try {
mBtService.setDiscoverableTimeout(100);
// mBtService.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE, 1000);
} catch(Exception e) {
Log.e("TESTE", "Error setting bt discoverable",e);
}
Log.i("TESTE", "Device must be discoverable");
} else {
Log.e("TESTE", "Device already discoverable");
}
} catch(Exception e) {
Log.e("TESTE", "Error ensuring BT discoverability", e);
}
}
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
そして、新しいパッケージを作成android.bluetooth IBluetooth.aidlとIBluetoothCallback.aidl内の2つのファイルを配置し、置く:しかし、誰かのためにここに必要なソリューションであることを必要とする人図のようにコード内にhere。
標準APIでは利用できない関数にアクセスすることができますが、その中には "安全な設定を書き込む"権限が必要なものがあります(上のコメント行は、プロセス/ユーザの)。
こんにちは、私はこのコードを試してみました。しかし、私は成功を収めていません。私はLG 2.3.4でテストしました。私が間違っているところを教えてくれますか? –
どこでIBluetoothクラス@Tiagoを取得しますか? @AnasAzeem? – gumuruh