Сделать Bluetooth на Android 2.1 доступным на неопределенный срок - PullRequest
7 голосов
/ 07 июля 2010

Я работаю над исследовательским проектом, в котором участвуют Bluetooth и ОС Android. Мне нужно сделать Bluetooth обнаруживаемым на неопределенный срок, чтобы проект мог продолжаться.

Проблема:

  • Android ограничивает обнаружение до 300 секунд.
  • Я не могу просить пользователя каждые 300 секунд снова включать возможность обнаружения, поскольку мое приложение предназначено для работы в фоновом режиме, не мешая пользователю.
  • Насколько мне известно , нет никакого способа увеличить время, хотя графический интерфейс Android. Некоторые источники назвали это функцией безопасности, другие назвали это ошибкой. Там может быть немного правды в обоих ...

Что я пробовал / пробовал:

  • Я пытаюсь отредактировать стабильную версию cyanogenmod , чтобы отключить таймер обнаруживаемости (возможно; есть файл конфигурации, для которого необходимо изменить одно число). Это не работает, потому что у меня проблемы с проверкой полученного пакета.
  • В течение прошлой недели я скачал исходный код cyanogenmod , изменил соответствующий класс в надежде, что это сделает Bluetooth обнаруживаемым на неопределенное время, и попытался перекомпилировать. Это не работать, потому что (а) репо часто изменяется, что приводит к нестабильной базе кода, которая не компилируется (ИЛИ, возможно, я использую ее неправильно; просто потому, что во многих случаях это выглядело как ошибка кода, не ' Я имею в виду, что я должен винить в этом все проблемы, с которыми я столкнулся!) и (б) репо решает периодически «игнорировать» меня (но , а не всегда, как я уже получил кодовую базу раньше!), отвечая на мои попытки синхронизации / подключения с:

    роковой: удаленный конец неожиданно зависает

    1036 **

Как вы можете себе представить, вышеупомянутые две проблемы проблематичны и очень разочаровывают.
Подробнее:

  • Я использую Android 2.1 через cyanogenmod (я верю, v5). Это означает, что телефон тоже рутирован.
  • У меня телефон разработчика, что означает, что загрузчик разблокирован.
  • Мой телефон - HTC Magic (32B).

Большой вопрос:

  • Как я могу сделать Bluetooth на неопределенное время доступным для Android?

Ответы [ 2 ]

8 голосов
/ 08 июня 2012

См. Следующую ссылку: http://developer.android.com/guide/topics/wireless/bluetooth.html#ConnectingDevices

В частности, последнее предложение в абзаце ниже:

Включение возможности обнаружения
Если вынапример, чтобы сделать локальное устройство доступным для других устройств, вызовите startActivityForResult(Intent, int) с намерением действия ACTION_REQUEST_DISCOVERABLE.Это выдаст запрос на включение режима обнаружения через настройки системы (без остановки приложения).По умолчанию устройство станет доступным для обнаружения в течение 120 секунд.Вы можете определить другую продолжительность, добавив EXTRA_DISCOVERABLE_DURATION Intent extra.Максимальная продолжительность, которую может установить приложение, составляет 3600 секунд, а значение 0 означает, что устройство всегда доступно для обнаружения.

Итак, это должно работать:

Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
startActivity(discoverableIntent);
0 голосов
/ 03 июня 2011

Если вы извлекаете класс BluetoothAdapter

вы найдете скрытый метод:

public void setDiscoverableTimeout(int timeout)

Теперь вам нужно только выяснить, как его использовать. Для этого вам нужно вызвать метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...