2009-09-14 2 views
12

Два вопроса по разработке Bluetooth на Android:Android - Как включить Bluetooth, чтобы он всегда был включен?

  1. Есть ли способ, чтобы включить Bluetooth, чтобы всегда быть на (я мог бы иметь длинную фазу обнаружения устройств в моем приложении) в Android? Насколько я вижу, значение по умолчанию - это отсчет от 120 секунд.

  2. Существует ли какой-либо открытый API-интерфейс Bluetooth API?

ответ

9

Реализация Bluetooth теперь доступна в Android 2.0 API. См. this и this.

+0

Да, я тоже видел новости.Наконец, доступно :) –

+0

Bluetooth доступен в SDK, но AVD не поддерживает 2.0 API (уровень 5), или документ не обновляется: http://developer.android.com/guide/developing/ tools/avd.html –

+1

Обзорная ссылка может быть лучшим стартовым местом, чем две другие ссылки: http://developer.android.com/intl/zh-CN/guide/topics/wireless/bluetooth.html – RickNotFred

2

Включение Bluetooth, чтобы быть всегда включенным, может не быть хорошим решением, если ваша единственная проблема - длительная задержка обнаружения («время автономной работы»).

Что касается сторонних интерфейсов Bluetooth, единственное, о чем я слышал, это iAnywhere Blue SDK (от Sybase, а не бесплатно, доступна только оценочная версия), которая охватывает некоторые функции, которые будут поддерживаться в будущем от системы /bluetooth и bluez упаковки.

Согласно Android Bluetooth roadmap, большинство долгожданных вещей, таких как Java API, Bluetooth 2.1 + EDR будут реализованы в какой-то момент в будущем.

Удачи вам в вашем проекте.

+0

Спасибо за ваши советы батареи, но на данном этапе в проекте я делаю не заботятся о батарее, только о постоянном Bluetooth :) –

1

Стек Bluez на Linux - это реализация с открытым исходным кодом. Он также доступен в Windows, но API гораздо более полно работает в Linux.

Когда вы говорите: «Включите Bluetooth всегда включен», вы имеете в виду, всегда пытаясь обнаружить другие устройства?

Большинство чипов bluetooth имеют режим глубокого спящего режима, где чип в основном отсутствует и просто появляется для проверки активности на любых установленных ссылках. Он только просыпается до полной мощности, когда вы хотите что-то сделать (обнаружение, соединение) или активность по существующей ссылке.

Да, он использует больше энергии аккумулятора, чем если бы Bluetooth был полностью выключен, но это не полный вампир.

+0

Да, всегда с этим я подразумеваю постоянное обнаружение клиента. «Проблема» с андроидом - это обратный отсчет 120 секунд по умолчанию. Является ли это изменчивым? Скажем, 600? –

0

BlueCove - это реализация bluetooth с открытым исходным кодом для Java.

Он работает на множестве разных машин, и если это так, то есть версия, совместимая с Android.

1
private void ensureDiscoverable() { 
    if(D) Log.d(TAG, "ensure discoverable"); 
    if (mBluetoothAdapter.getScanMode() != 
     BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) { 
     Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
     discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); 
     startActivity(discoverableIntent); 
    } 

http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#ACTION_REQUEST_DISCOVERABLE

+0

Это не всегда на (или обнаруживаемом как исходный запрос для искателей), это вызывает подтверждение пользователя. – Tiago

+1

Мы никогда не сможем сделать устройство всегда видимым в андроиде, но мы можем продлить его время от 120 до 300 секунд. –

2

На 2.3.6 я могу держать устройство всегда видим, помещая задержку 0:

Intent di = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
di.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0); 
Смежные вопросы