2016-01-11 14 views
0

Мое приложение имеет фоновое обслуживание, которое обнаруживает объекты через bluetooth, и я хочу показать диалог в текущей активности (логика для обнаружения приложения на переднем плане или фона выполняется) при обнаружении объекта BT. Я читал о классе BroadcastReceiver, но я не знаю, как отправить данные из моего сервиса в эфир для моей текущей активности, чтобы показать диалог в Activity.Android - Сервис с BroadcastReceiver

Если вы знаете другое решение, которое будет нормально

ответ

1

Вы можете использовать этот Android service broadcastreceiver example для достижения своей цели.

В качестве альтернативы вам необходимо предоставить класс Service для обратного вызова MainActivity. Вы можете использовать Bound services в качестве отправной точки.

+0

Спасибо. работал на меня –

0

Насколько я понимаю, вы бы не отправить данные из службы в классе. Вы начнете занятия в текущем действии с помощью слушателя, ожидающего ответа от вашей службы. Если получен положительный ответ, отображается диалоговое окно

Класс BroadcastReceiver используется в службе, а не в вашем текущем классе активности.

0

, когда ваша служба обнаружит устройство, вы должны послать широковещательный приемник от службы, как это:

final Intent intent = new Intent(action); 
sendBroadcast(intent); 

А в вашей деятельности зарегистрировать этот приемник с действием.

вы можете обратиться на это, это BLE sample от Google:

0

Самое лучшее, что вы можете сделать, чтобы получать такие передачи, чтобы искать государства Bluetooth Изменено, как documented here. Ваш код будет выглядеть примерно так (Copied from this question, with some modification)

public class BluetoothReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     final String action = intent.getAction(); 

     if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { 
      //See if new bluetooth objects detected 
     } 
    } 
}; 

Далее вам нужно добавить приемник к манифесту. Нужно что-то вроде этого:

<receiver android:name=".BlutoothReceiver" > 
    <intent-filter> 
     <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" /> 
    </intent-filter> 
</receiver>" /> 
</receiver> 

Помимо этого, ознакомьтесь с приведенной выше документацией.

Смежные вопросы