Создание сервиса с активацией Bluetooth в Android - PullRequest
0 голосов
/ 06 апреля 2010

Я хочу создать в Android сервис, который первоначально будет запрашивать у пользователя, хотят ли они запустить Bluetooth и установить обнаружение Bluetooth.

Мой вопрос:

  1. Можно ли запустить в сервисе следующие действия?

    if (!mBluetoothAdapter.isEnabled())
    {
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, 0);
    }
    
    // Set Phone Discoverable for 300 seconds.
    Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 600);
    startActivity(discoverableIntent);
    
  2. Я хочу установить обнаружение телефона на время жизни приложения. Возможно ли это?

  3. Я хочу получить доступ к пустому месту на SD-карте. Как мне это сделать?

Заранее спасибо.

1 Ответ

1 голос
/ 06 апреля 2010

1) Вы не можете использовать этот конкретный код, потому что вы не можете позвонить startActivity() из службы. Вам нужно будет использовать следующий код для включения Bluetooth:

BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter();
mAdapter.enable();

В документации написано

boolean enable()

Включите локальный адаптер Bluetooth - не используйте без явных действий пользователя для включения Bluetooth.

Таким образом, вы должны быть уверены, чтобы сначала предложить пользователю. Также вы не можете настроить устройство на обнаружение в службе, потому что единственный способ сделать это с помощью startActivity(), поэтому вам потребуется выполнить эту часть в каком-то задании конфигурации.

2) Нет, обнаружение устройства Bluetooth открывает множество проблем с безопасностью, поэтому это не только невозможно, но и плохая идея.

3) Если вы хотите записать на SDCard, вам просто нужно добавить разрешение WRITE_EXTERNAL_STORAGE в ваш файл манифеста, и тогда вы сможете использовать стандартный ввод-вывод Java File.

...