Запустить Bluetooth в службе AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Запустить Bluetooth в службе Android

Сообщение Anonymous »

Я разрабатываю приложение, которое должно запускать сканирование Bluetooth в службе Android (не запрашивая пользователя включить Bluetooth, поскольку приложение вообще неактивно), и у моего приложения нет пользовательского интерфейса, или, точнее, у моего устройства нет ЖК-/светодиодного дисплея. После исчерпывающего поиска и ссылок на ссылки в Google и stackoverflow я смог частично найти решение и написал приведенный ниже код.

Вот запускаю сервис с широковещательного приёмника, а в сервисе запускаю блютуз, но блютуз вроде не включается, пробовал включить блютуз напрямую с помощью кода

Код: Выделить всё

BluetoothAdapter.getDefaultAdapter().enable()
и тоже пробовал

Код: Выделить всё

Intent btIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
btIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
serviceContext.startActivity(btIntent);
Но в обоих случаях Bluetooth не включается.

Вот файл манифеста:

Код: Выделить всё

android:versionCode="1"
android:versionName="1.0" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
















Вот класс приемника широковещательной передачи:

Код: Выделить всё

public class StartReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
Intent receiverIntent = new Intent(context, StartService.class);
context.startService(receiverIntent);
Log.i("Autostart", "started");
}
}
И класс обслуживания:

Код: Выделить всё

public class StartService extends Service{

private static final String TAG = "BluetoothService";
BluetoothAdapter btAdapter;
BluetoothDevice device;

Context serviceContext;

@Override
public IBinder onBind(Intent arg0) {
return null;
}

@Override
public void onStart(Intent intent, int startid){
Toast.makeText(this, "Bluetooth Service Started", Toast.LENGTH_LONG).show();
Log.d(TAG, "OnStart");

BluetoothAdapter.getDefaultAdapter().enable();
//Intent btIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
//btIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//serviceContext.startActivity(btIntent);

registerReceiver(bcReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));

btAdapter.startDiscovery();

}

@Override
public void onDestroy(){
BluetoothAdapter.getDefaultAdapter().disable();
unregisterReceiver(bcReceiver);
btAdapter.cancelDiscovery();
}

private final BroadcastReceiver bcReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {

String action = intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(action)){

//Do Something
}
}
};
}
Кроме того, не отображается всплывающее сообщение, используемое в классе обслуживания.

Что может быть не так в моем коде из-за отсутствия включения и сканирования Bluetooth?

Подробнее здесь: https://stackoverflow.com/questions/157 ... id-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»