As I read from discussion on http://code.google.com/p/android/issues/detail?id=6348#makechanges , We can make Android Bluetooth Discoverable for unlimited time,I see that honeycomb 3.1 now publically available ,Anyone can explain using honeycomb 3.1 Development environment how I can make Bluetooth constantly discoverable ? I explore the docs but can't find any suitable method for my solution . . Thanks in advance . .
Asked
Active
Viewed 7,389 times
4 Answers
1
You can try this:
try {
Method bluetoothDeviceVisibility;
bluetoothDeviceVisibility = mBluetoothAdapter.getClass().getMethod("setScanMode", int.class, int.class);
bluetoothDeviceVisibility.invoke(mBluetoothAdapter, BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE, 0);
} catch (Exception e) {
e.printStackTrace();
}

Dhruv
- 91
- 7
-
This is unsafe, but it was useful for me. Thanks – Khalid Taha Aug 09 '20 at 23:16
1
I believe that BluetoothAdapter.startDiscovery()
keeps the bluetooth adapter discoverable until you call BluetoothAdapter.cancelDiscovery()
.

ahodder
- 11,353
- 14
- 71
- 114
-
1Dear Aedon thanks for quick reply ,but if you read the doc(API) for this method there is also mentioned this > "Start the remote device discovery process.The discovery process usually involves an inquiry scan of about 12 seconds, followed by a page scan of each new device to retrieve its Bluetooth nam" . Note is do the discovery for 12 minutes.my 2nd issue is how to make my device visible(discoverable for other devices) for other devices for unlimited time ? – aftab Jun 21 '11 at 14:54
-
-
I see a method given on discussion on >http://stackoverflow.com/questions/3190623/make-bluetooth-on-android-2-1-discoverable-indefinitely , As public void setDiscoverableTimeout(int timeout) you can set Discoverable Time manually . .I will try this solution,my second issue regarding to make bluetooth discoverable (visible for other devices) for unlimited time . . right now we can just make it visible for max 300Sec=5 min. . . .Anyone can explain how I can make bluetooth visible for unlimited time . .Thanks – aftab Jun 21 '11 at 15:31
-
@Aftab - Ya your right, my bad. Well I was looking through the source, an I think I may have found a way but unfortunately, developers can't access it. Aside from recompiling your OS I can't think of another way to do it. – ahodder Jun 21 '11 at 15:32
0
Following intent should do it.
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0); startActivity(discoverableIntent);
'You can define a different duration by adding the EXTRA_DISCOVERABLE_DURATION Intent extra. The maximum duration an app can set is 3600 seconds, and a value of 0 means the device is always discoverable.'
Source: http://developer.android.com/guide/topics/connectivity/bluetooth.html

Alok Vaish
- 922
- 8
- 14
-2
inside the broadcast receiver:
if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
// When discovery is finished, change the Activity title
Log.d("***","Discovery finished");
mBluetoothAdapter.startDiscovery();
Log.d("","starting discovery..");
}
its not the perfectly solution but it works for my needs

brux
- 3,197
- 10
- 44
- 78