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(); } }
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); } }
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); } }
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 }
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); }