How to pass data from BroadcastReceiver to one other class?

Viewed 71

I am developing an app for scanning devices with bluetooth. From the Android studio's documentation I found how scan devices and perform an action when a device is discovered:

override fun onCreate(savedInstanceState: Bundle?) {
   ...

   // Register for broadcasts when a device is discovered.
   val filter = IntentFilter(BluetoothDevice.ACTION_FOUND)
   registerReceiver(receiver, filter)
}

// Create a BroadcastReceiver for ACTION_FOUND.
private val receiver = object : BroadcastReceiver() {

   override fun onReceive(context: Context, intent: Intent) {
       val action: String = intent.action
       when(action) {
           BluetoothDevice.ACTION_FOUND -> {
               // Discovery has found a device. Get the BluetoothDevice
               // object and its info from the Intent.
               val device: BluetoothDevice =
                       intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)
               val deviceName = device.name
               val deviceHardwareAddress = device.address // MAC address
           }
       }
   }
}

The question is: if I would to create a class for scanning devices, how I can, for each device discovered, pass it to my main class (MainActivity) ?.

I was thinking to use Observer and Observe a specific variable in scanning class, but i dont know if this is a good pratice.

1 Answers
Related