public void OnDeviceFound(BluetoothDevice bluetoothDevice, BluetoothClass bluetoothClass)
        {
            if (bluetoothDevice == null)
            {
                return;
            }

            bool found = false;

            // in case of rescan check the one found isn't already in our list
            foreach (BluetoothDevice device in mBluetoothDevices)
            {
                if (device.Address == bluetoothDevice.Address)
                {
                    found = true;
                    break;
                }
            }

            if (!found)
            {
                mBluetoothDevices.Add(bluetoothDevice);
                mBluetoothArrayAdapter.Add(String.Format("{0} # {1}", bluetoothDevice.Name, bluetoothDevice.Address));
                mBluetoothArrayAdapter.NotifyDataSetChanged();
            }
        }
Example #2
0
        internal static ClassOfDevice ConvertCoDs(BluetoothClass codAndroid)
        {
            DeviceClass  dc = (DeviceClass)(int)codAndroid.DeviceClass;
            ServiceClass sc = FindSetServiceBits(codAndroid);

            return(new ClassOfDevice(dc, sc));
        }
        public static BluetoothClass GetMinorDeviceClass(this BluetoothClass @class)
        {
            switch (@class.GetMajorDeviceClass())
            {
            case BluetoothClass.Computer:
                return(@class & BluetoothClass.Computer_FieldMask);

            case BluetoothClass.Phone:
                return(@class & BluetoothClass.Phone_FieldMask);

            case BluetoothClass.LAN:
                return(@class & BluetoothClass.AudioVideo);

            case BluetoothClass.Peripheral:
                return(@class & BluetoothClass.Peripheral_FieldMask);

            case BluetoothClass.Imaging:
                return(@class & BluetoothClass.Imaging_FieldMask);

            case BluetoothClass.Wearable:
                return(@class & BluetoothClass.Wearable_FieldMask);

            case BluetoothClass.Toy:
                return(@class & BluetoothClass.Toy_FieldMask);

            case BluetoothClass.Health:
                return(@class & BluetoothClass.Health_FieldMask);

            default:
                return(BluetoothClass.Unknown);
            }
        }
Example #4
0
        internal static AndroidBthDeviceInfo CreateFromInquiry(
            AndroidBthFactoryBase fcty, BluetoothDevice dev,
            BluetoothClass cod, string nameOpt, short rssiOpt)
        {
            var bdi = new AndroidBthDeviceInfo(fcty, dev);

            bdi._discoTime   = DateTime.UtcNow;
            bdi._cod         = AndroidBthUtils.ConvertCoDs(cod);
            bdi._rssiAtDisco = rssiOpt;
            Debug.Assert(bdi._dev.Name == nameOpt);
            return(bdi);
        }
        public static BluetoothClass GetSubMinorDeviceClass(this BluetoothClass @class)
        {
            switch (@class.GetMajorDeviceClass())
            {
            case BluetoothClass.LAN:
                return(@class & BluetoothClass.LAN_SubFieldMask);

            case BluetoothClass.Peripheral:
                return(@class & BluetoothClass.Peripheral_SubFieldMask);

            case BluetoothClass.Imaging:
                return(@class & BluetoothClass.Imaging_SubFieldMask);

            default:
                return(BluetoothClass.Unknown);
            }
        }
Example #6
0
        private static ServiceClass FindSetServiceBits(BluetoothClass codAndroid)
        {
            Assert(ServiceClass.Information, Android.Bluetooth.ServiceClass.Information);
            Assert(ServiceClass.LimitedDiscoverableMode, Android.Bluetooth.ServiceClass.LimitedDiscoverability);
#if false
            // For playing don't use FindSetServiceBits
            return(ServiceClass.None);
#else
            ServiceClass sum = ServiceClass.None;
            for (var ian = (int)Android.Bluetooth.ServiceClass.LimitedDiscoverability;
                 ian <= (int)Android.Bluetooth.ServiceClass.Information;
                 ian <<= 1)
            {
                var san = (Android.Bluetooth.ServiceClass)ian;
                if (codAndroid.HasService(san))
                {
                    var i = ConvertServiceClassAndroidTo32feet(ian);
                    var s = (ServiceClass)i;
                    sum |= s;
                }
            }//for
            return(sum);
#endif
        }
Example #7
0
        public override void OnReceive(Context context, Intent intent)
        {
            string action = intent.Action;

            switch (action)
            {
            case BluetoothDevice.ActionFound:
            {
                BluetoothDevice device      = (BluetoothDevice)intent.GetParcelableExtra(BluetoothDevice.ExtraDevice);
                BluetoothClass  deviceClass = (BluetoothClass)intent.GetParcelableExtra(BluetoothDevice.ExtraClass);

                // only interested in devices not already paired
                if (device.BondState == Bond.None)
                {
                    if (_fragment != null)
                    {
                        _fragment.OnDeviceFound(device, deviceClass);
                    }
                    else if (_activity != null)
                    {
                        _activity.OnDeviceFound(device, deviceClass);
                    }
                }
            }
            break;

            case BluetoothAdapter.ActionDiscoveryStarted:
            {
                if (_fragment != null)
                {
                    _fragment.OnScanStarted();
                }
                else if (_activity != null)
                {
                    _activity.OnScanStarted();
                }
            }
            break;

            case BluetoothAdapter.ActionDiscoveryFinished:
            {
                if (_fragment != null)
                {
                    _fragment.OnScanComplete();
                }
                else if (_activity != null)
                {
                    _activity.OnScanComplete();
                }
            }
            break;

            case BluetoothAdapter.ActionRequestDiscoverable:
            {
                //if (mFragment != null)
                //    mFragment.OnScanComplete();
                //((BluetoothUtilsActivity)mActivity).OnScanComplete();
            }
            break;

            case BluetoothDevice.ActionPairingRequest:
            {
                BluetoothDevice device      = (BluetoothDevice)intent.GetParcelableExtra(BluetoothDevice.ExtraDevice);
                BluetoothClass  deviceClass = (BluetoothClass)intent.GetParcelableExtra(BluetoothDevice.ExtraClass);

                //_fragment.OnPairDevice(device, (int)Bond.None);
            }
            break;

            case BluetoothDevice.ActionBondStateChanged:
            {
                Bonding         state     = (Bonding)intent.GetIntExtra(BluetoothDevice.ExtraBondState, BluetoothDevice.Error);
                Bonding         prevState = (Bonding)intent.GetIntExtra(BluetoothDevice.ExtraPreviousBondState, BluetoothDevice.Error);
                BluetoothDevice device    = (BluetoothDevice)intent.GetParcelableExtra(BluetoothDevice.ExtraDevice);

                // device has successfully paired
                if (state == Bonding.Bonded && prevState == Bonding.Bonding)
                {
                    if (_fragment != null)
                    {
                        _fragment.OnPairDevice(device, (int)state);
                    }
                    else if (_activity != null)
                    {
                        _activity.OnPairDevice(device, (int)state);
                    }
                    return;
                }

                // device has successfully unpaired
                if (state == Bonding.None && prevState == Bonding.Bonded)
                {
                    if (_fragment != null)
                    {
                        _fragment.OnPairDevice(device, (int)state);
                    }
                    else if (_activity != null)
                    {
                        _activity.OnPairDevice(device, (int)state);
                    }
                    return;
                }

                // device pairing was cancelled
                if (state == Bonding.None && prevState == Bonding.Bonding)
                {
                    if (_fragment != null)
                    {
                        _fragment.OnPairDevice(device, (int)Bonding.Cancelled);
                    }
                    else if (_activity != null)
                    {
                        _activity.OnPairDevice(device, (int)Bonding.Cancelled);
                    }
                    return;
                }

                if (state == Bonding.None && prevState == Bonding.None)
                {
                    if (_fragment != null)
                    {
                        _fragment.OnPairDevice(device, (int)state);
                    }
                    else if (_activity != null)
                    {
                        _activity.OnPairDevice(device, (int)state);
                    }
                    return;
                }
            }
            break;

            default:
                break;
            }
        }
 public static BluetoothClass GetMajorDeviceClass(this BluetoothClass @class)
 {
     return(@class & BluetoothClass.MajorDeviceClassesMask);
 }