/// <summary>
        /// Requests temporary permission for the given package to access the accessory.
        /// This may result in a system dialog being displayed to the user if permission had not already been granted.
        /// </summary>
        /// <returns>The observable sequence of permission values.</returns>
        /// <param name="manager">The UsbManager system service.</param>
        /// <param name="context">The Context to request the permission from.</param>
        /// <param name="accessory">The UsbAccessory to request permission for.</param>
        public static IObservable <bool> PermissionRequested(this UsbManager manager, Context context, UsbAccessory accessory) => // TODO: Create Test
        Observable.Create <bool>(observer =>
        {
            var usbPermissionReceiver = new UsbAccessoryPermissionReceiver(observer, accessory);
            context.RegisterReceiver(usbPermissionReceiver, new IntentFilter(ActionUsbPermission));

            var intent = PendingIntent.GetBroadcast(context, 0, new Intent(ActionUsbPermission), 0);
            manager.RequestPermission(accessory, intent);

            return(Disposable.Create(() => context.UnregisterReceiver(usbPermissionReceiver)));
        });
        /// <summary>
        /// Requests temporary permission for the given package to access the accessory. 
        /// This may result in a system dialog being displayed to the user if permission had not already been granted.
        /// </summary>
        /// <returns>The observable sequence of permission values.</returns>
        /// <param name="manager">The UsbManager system service.</param>
        /// <param name="context">The Context to request the permission from.</param>
        /// <param name="accessory">The UsbAccessory to request permission for.</param>
        public static IObservable<bool> PermissionRequested(this UsbManager manager, Context context, UsbAccessory accessory)
        {
            return Observable.Create<bool> (observer => {
                var usbPermissionReceiver = new UsbAccessoryPermissionReceiver (observer, accessory);
                context.RegisterReceiver (usbPermissionReceiver, new IntentFilter (ACTION_USB_PERMISSION));

                var intent = PendingIntent.GetBroadcast (context, 0, new Intent (ACTION_USB_PERMISSION), 0);
                manager.RequestPermission (accessory, intent);

                return Disposable.Create (() => context.UnregisterReceiver (usbPermissionReceiver));
            });
        }