public void Advertise() { try { bluetoothLeAdvertiser = BluetoothAdapter.DefaultAdapter.BluetoothLeAdvertiser; AdvertiseSettings settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.LowLatency) .SetTxPowerLevel(AdvertiseTx.PowerHigh) .SetTimeout(0) .SetConnectable(true) .Build(); ParcelUuid pUuid = new ParcelUuid(MY_UUID); AdvertiseData data = new AdvertiseData.Builder() .SetIncludeDeviceName(true) .AddServiceUuid(pUuid) .AddServiceData(pUuid, Encoding.UTF8.GetBytes("Data send")) .Build(); myAdvertiseCallback = new MyAdvertiseCallback(); bluetoothLeAdvertiser.StartAdvertising(settings, data, myAdvertiseCallback); } catch (System.Exception ex) { } }
public void AddReadOnlyService( Guid serviceName, Dictionary <Guid, Func <byte[]> > characteristics) { var manager = (BluetoothManager)context.GetSystemService( Context.BluetoothService); var adapter = manager.Adapter; if (!adapter.IsEnabled) { // TODO: restarts the server when the BLE adapter goes down. adapter.Enable(); Thread.Sleep(10 * 1000); } // Creates a Gatt server with the requested service { var callback = new AndroidBLEGattServerCallback( characteristics); var server = manager.OpenGattServer(context, callback); callback.Server = server; var service = new BluetoothGattService(AsJavaUUID(serviceName), GattServiceType.Primary); foreach (var i in characteristics) { var ch = new BluetoothGattCharacteristic(AsJavaUUID(i.Key), GattProperty.Read | GattProperty.Notify, GattPermission.Read); service.AddCharacteristic(ch); } server.AddService(service); } // Starts advertising for the availaible services over BLE. { var advertiser = adapter.BluetoothLeAdvertiser; var setts = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(true) .SetTimeout(0) .SetTxPowerLevel(AdvertiseTx.PowerMedium) .Build(); var data = new AdvertiseData.Builder() //.AddServiceUuid(AsParcelUuid(ser)) .Build(); var callback = new AndroidBLEAdvertiseCallback(); advertiser.StartAdvertising(setts, data, callback); } }
protected override void StartAdvertising() { try { if (BluetoothAdapter.DefaultAdapter?.IsMultipleAdvertisementSupported ?? false) { AdvertiseSettings advertisingSettings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetTxPowerLevel(AdvertiseTx.PowerLow) .SetConnectable(true) .Build(); AdvertiseData advertisingData = new AdvertiseData.Builder() .SetIncludeDeviceName(false) .AddServiceUuid(new ParcelUuid(_deviceIdService.Uuid)) .Build(); BluetoothAdapter.DefaultAdapter.BluetoothLeAdvertiser.StartAdvertising(advertisingSettings, advertisingData, _bluetoothAdvertiserCallback); } else { throw new Exception("BLE advertising is not available."); } } catch (Exception ex) { SensusServiceHelper.Get().Logger.Log("Exception while starting advertiser: " + ex.Message, LoggingLevel.Normal, GetType()); } }
private void startAdvertising() { if (!init()) { return; } var settings = new AdvertiseSettings.Builder() .SetConnectable(true) .SetAdvertiseMode(AdvertiseMode.LowLatency) //100ms .SetTxPowerLevel(AdvertiseTx.PowerMedium) .SetTimeout(0) .Build(); var bytes = Encoding.ASCII.GetBytes(advValue); Log.Debug("TEST", "advertising value: " + advValue + " toBytes: " + string.Join(",", bytes)); var data = new AdvertiseData.Builder() .AddServiceUuid(new ParcelUuid(Const.UUID_SERVICE)) .AddServiceData(new ParcelUuid(Const.UUID_DATA), bytes) // Convert a C# string to a byte array .SetIncludeDeviceName(false) .SetIncludeTxPowerLevel(false) .Build(); bluetoothManager.Adapter.BluetoothLeAdvertiser.StartAdvertising(settings, data, advCallback); }
void IAdvertiseAndDiscoverBluetoothDevice.Advertise() { try { Analytics.TrackEvent(Build.Model + " Advertise method called."); bluetoothLeAdvertiser = BluetoothAdapter.DefaultAdapter.BluetoothLeAdvertiser; AdvertiseSettings settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.LowLatency) .SetTxPowerLevel(AdvertiseTx.PowerHigh) .SetTimeout(0) .SetConnectable(true) .Build(); ParcelUuid pUuid = new ParcelUuid(MY_UUID); AdvertiseData data = new AdvertiseData.Builder() .SetIncludeDeviceName(true) .AddServiceUuid(pUuid) .AddServiceData(pUuid, Encoding.UTF8.GetBytes("222")) .Build(); myAdvertiseCallback = new MyAdvertiseCallback(); bluetoothLeAdvertiser.StartAdvertising(settings, data, myAdvertiseCallback); } catch (System.Exception ex) { Analytics.TrackEvent(Build.Model + " Something went wrong in Advertise method."); } }
private async void RunAction() { var settings = new ScanSettings.Builder().SetScanMode(ScanMode.LowPower).Build(); var filters = GetScanFilters(); //var intent = new Intent(ApplicationContext, typeof(BackgroundService)); //intent.PutExtra("o-scan", true); //var pendingIntent = // PendingIntent.GetBroadcast(ApplicationContext, 0, intent, PendingIntentFlags.UpdateCurrent); //_bluetoothAdapter.BluetoothLeScanner.StartScan(filters, settings,new AppScanCallBack()); var advSettings = new AdvertiseSettings.Builder().SetAdvertiseMode(AdvertiseMode.LowPower) .SetConnectable(false).SetTimeout(1000).Build(); var advData = new AdvertiseData.Builder() .AddServiceUuid(ParcelUuid.FromString("FC51BA92-74D5-4972-B2D9-9ECBC62ACFC9")).Build(); _bluetoothAdapter.BluetoothLeAdvertiser.StartAdvertising(advSettings, advData, new AppAdvertisingCallBack()); //Log.Info(TAG, $"Service is still running, near devices: {devices.Count}"); //if (!devices.Any()) Log.Info(TAG, $"Device NOt MATCH"); //foreach (var device in devices) // Log.Info(TAG, // $"Service is still running, DEVICE: id({device.BondState}) adress({string.Join(",", device.Address)})) "); Toast.MakeText(this, $"Service is still running, near devices: NA", ToastLength.Long).Show(); handler.PostDelayed(runnable, 10000); }
public Task StartAdvertising(string localName, List <IService> services) { var settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.LowLatency) .SetTxPowerLevel(AdvertiseTx.PowerHigh) .SetTimeout(0) .SetConnectable(true) .Build(); if (localName != null) { _adapter.SetName(localName); } var advertiseDataBuilder = new AdvertiseData.Builder() .SetIncludeTxPowerLevel(false) .SetIncludeDeviceName(false); if (services != null) { foreach (Service service in services) { var serviceUuid = service.Uuid; var uuid = UUID.FromString(serviceUuid); var parcelUuid = new ParcelUuid(uuid); advertiseDataBuilder.AddServiceUuid(parcelUuid); } } var advertiseData = advertiseDataBuilder.Build(); _adapter.BluetoothLeAdvertiser.StartAdvertising(settings, advertiseData, _advertiseCallback); return(Task.FromResult(true)); }
public void getBle(String usuario) { Context actvity = Application.Context; BluetoothManager bluetooth = (BluetoothManager)actvity.GetSystemService(Context.BluetoothService); BluetoothAdapter bluetoothAdapter = bluetooth.Adapter; if (bluetoothAdapter.IsEnabled) { bluetoothAdapter.SetName(usuario); BluetoothLeAdvertiser bluetoothLeAdvertiser = bluetoothAdapter.BluetoothLeAdvertiser; AdvertiseSettings settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.LowLatency).SetTxPowerLevel(AdvertiseTx.PowerHigh).SetConnectable(true).Build(); var builder = new AdvertiseSettings.Builder(); builder.SetAdvertiseMode(AdvertiseMode.LowLatency); builder.SetConnectable(true); builder.SetTimeout(0); builder.SetTxPowerLevel(AdvertiseTx.PowerUltraLow); AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder(); dataBuilder.SetIncludeDeviceName(true); dataBuilder.SetIncludeTxPowerLevel(true); bluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback()); Android.Widget.Toast.MakeText(Application.Context, "Registro de presença automático iniciado.", Android.Widget.ToastLength.Long).Show(); } else { Android.Widget.Toast.MakeText(Application.Context, "Por gentileza, o Bluetooth deve estar ligado!", Android.Widget.ToastLength.Long).Show(); } }
public override void Start(AdvertisementData adData) { var settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(true); var data = new AdvertiseData.Builder() .SetIncludeDeviceName(true) .SetIncludeTxPowerLevel(true); if (adData.ManufacturerData != null) { data.AddManufacturerData(adData.ManufacturerData.CompanyId, adData.ManufacturerData.Data); } foreach (var serviceUuid in adData.ServiceUuids) { data.AddServiceUuid(serviceUuid.ToParcelUuid()); } this.manager .Adapter .BluetoothLeAdvertiser .StartAdvertising( settings.Build(), data.Build(), this.adCallbacks ); base.Start(adData); }
public void StartAdvertising(string localName) { var settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetTxPowerLevel(AdvertiseTx.PowerHigh) .SetConnectable(true) .Build(); _adapter.SetName(localName); var advertiseDataBuilder = new AdvertiseData.Builder() .SetIncludeDeviceName(true); foreach (var service in _server.Services) { var parcelUuid = new ParcelUuid(UUID.FromString("1234".ToGuid().ToString())); advertiseDataBuilder.AddServiceUuid(parcelUuid); } var advertiseData = advertiseDataBuilder.Build(); _adapter.BluetoothLeAdvertiser.StartAdvertising(settings, advertiseData, _advertiseCallback); }
private AdvertiseSettings AdvertisingParameters() { AdvertiseSettings.Builder builder = new AdvertiseSettings.Builder(); return(builder.SetAdvertiseMode(AdvertiseMode.Balanced) .SetTxPowerLevel(AdvertiseTx.PowerUltraLow) .SetConnectable(true) .Build()); }
public override void Start(AdvertisementData adData) { if (!CrossBleAdapter.AndroidConfiguration.IsServerSupported) { throw new BleException("BLE Advertiser needs API Level 23+"); } this.manager = (BluetoothManager)Application.Context.GetSystemService(Context.BluetoothService); this.adCallbacks = new AdvertisementCallbacks(); var settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(adData.AndroidIsConnectable); var data = new AdvertiseData.Builder() .SetIncludeDeviceName(adData.AndroidUseDeviceName) .SetIncludeTxPowerLevel(true); if (adData.ManufacturerData != null) { data.AddManufacturerData(adData.ManufacturerData.CompanyId, adData.ManufacturerData.Data); } foreach (var serviceUuid in adData.ServiceUuids) { data.AddServiceUuid(serviceUuid.ToParcelUuid()); } if (string.IsNullOrEmpty(adData.LocalName) || adData.AndroidUseDeviceName) { this.manager .Adapter .BluetoothLeAdvertiser .StartAdvertising( settings.Build(), data.Build(), this.adCallbacks ); } else { this.manager .Adapter.SetName(adData.LocalName); var scanResponse = new AdvertiseData.Builder() .SetIncludeDeviceName(true); this.manager .Adapter .BluetoothLeAdvertiser .StartAdvertising( settings.Build(), data.Build(), scanResponse.Build(), this.adCallbacks ); } base.Start(adData); }
public void StartAdvertising() { AdvertiseSettings.Builder builder = new AdvertiseSettings.Builder(); builder.SetAdvertiseMode(AdvertiseMode.LowLatency); builder.SetConnectable(true); builder.SetTimeout(0); builder.SetTxPowerLevel(AdvertiseTx.PowerHigh); AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder(); dataBuilder.SetIncludeDeviceName(true); //dataBuilder.AddServiceUuid(ParcelUuid.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5")); dataBuilder.SetIncludeTxPowerLevel(true); this.BluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), this.AdvertiseCallback); }
public async Task StartAdvertising(AdvertisementOptions?options = null) { if (!this.context.Context.IsMinApiLevel(23)) { throw new ApplicationException("BLE Advertiser needs API Level 23+"); } options ??= new AdvertisementOptions(); var tcs = new TaskCompletionSource <object>(); this.adCallbacks = new AdvertisementCallbacks( () => tcs.SetResult(null), ex => tcs.SetException(ex) ); var settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(true); var data = new AdvertiseData.Builder() .SetIncludeDeviceName(options.AndroidIncludeDeviceName) .SetIncludeTxPowerLevel(options.AndroidIncludeTxPower); if (options.ManufacturerData != null) { data.AddManufacturerData(options.ManufacturerData.CompanyId, options.ManufacturerData.Data); } var serviceUuids = options.UseGattServiceUuids ? this.services.Keys.ToList() : options.ServiceUuids; foreach (var uuid in serviceUuids) { data.AddServiceUuid(new Android.OS.ParcelUuid(UUID.FromString(uuid))); } this.context .Manager .Adapter .BluetoothLeAdvertiser .StartAdvertising( settings.Build(), data.Build(), this.adCallbacks ); await tcs.Task; }
public override void Start(AdvertisementData adData) { if (!CrossBleAdapter.AndroidConfiguration.IsServerSupported) { throw new BleException("BLE Advertiser needs API Level 21+"); } if (this.IsStarted) { throw new BleException("BLE Advertiser is already started"); } var settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(adData.AndroidIsConnectable); var data = new AdvertiseData.Builder() .SetIncludeDeviceName(adData.AndroidIncludeDeviceName) .SetIncludeTxPowerLevel(adData.AndroidIncludeTxPower); if (adData.ManufacturerData != null) { data.AddManufacturerData(adData.ManufacturerData.CompanyId, adData.ManufacturerData.Data); } foreach (var serviceUuid in adData.ServiceUuids) { data.AddServiceUuid(serviceUuid.ToParcelUuid()); } if (!string.IsNullOrEmpty(adData.LocalName)) { data.SetIncludeDeviceName(true); this.manager.Adapter.SetName(adData.LocalName); } this.manager .Adapter .BluetoothLeAdvertiser .StartAdvertising( settings.Build(), data.Build(), this.adCallbacks ); base.Start(adData); }
public Task StartAdvertising(AdvertisementData?adData = null) { if (!this.context.Context.IsMinApiLevel(23)) { throw new ApplicationException("BLE Advertiser needs API Level 23+"); } this.adCallbacks = new AdvertisementCallbacks(); var settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(true); // TODO: configurable var data = new AdvertiseData.Builder() .SetIncludeDeviceName(true) // TODO: configurable .SetIncludeTxPowerLevel(true); // TODO: configurable if (adData != null) { if (adData.ManufacturerData != null) { data.AddManufacturerData(adData.ManufacturerData.CompanyId, adData.ManufacturerData.Data); } if (adData.ServiceUuids != null) { foreach (var serviceUuid in adData.ServiceUuids) { data.AddServiceUuid(serviceUuid.ToParcelUuid()); } } } this.context .Manager .Adapter .BluetoothLeAdvertiser .StartAdvertising( settings.Build(), data.Build(), this.adCallbacks ); return(Task.CompletedTask); }
public BleServer(Context ctx) { _bluetoothManager = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService); _bluetoothAdapter = _bluetoothManager.Adapter; _bluettothServerCallback = new BleGattServerCallback(); _bluetoothServer = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback); var service = new BluetoothGattService(UUID.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"), GattServiceType.Primary); _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f2"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write); _characteristic.AddDescriptor(new BluetoothGattDescriptor(UUID.FromString("28765900-7498-4bd4-aa9e-46c4a4fb7b07"), GattDescriptorPermission.Write | GattDescriptorPermission.Read)); service.AddCharacteristic(_characteristic); _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f3"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write); _characteristic.AddDescriptor(new BluetoothGattDescriptor(UUID.FromString("28765900-7498-4bd4-aa9e-46c4a4fb7b08"), GattDescriptorPermission.Write | GattDescriptorPermission.Read)); service.AddCharacteristic(_characteristic); _bluetoothServer.AddService(service); _bluettothServerCallback.CharacteristicReadRequest += _bluettothServerCallback_CharacteristicReadRequest; _bluettothServerCallback.DescriptorWriteRequest += _bluettothServerCallback_DescriptorWriteRequest; _bluettothServerCallback.CharacteristicWriteRequest += _bluettothServerCallback_CharacteristicWriteRequest; _bluettothServerCallback.NotificationSent += _bluettothServerCallback_NotificationSent; _bluettothServerCallback.ConnectionStateChange += _bluettothServerCallback_ConnectionStateChange; // MessagingCenter.Send<BLE202.App, string>((BLE202.App)Xamarin.Forms.Application.Current, "Hi", "Server created!"); // _bluetoothAdapter.SetName("Concungungoc"); BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser; var builder = new AdvertiseSettings.Builder(); builder.SetAdvertiseMode(AdvertiseMode.LowLatency); builder.SetConnectable(true); builder.SetTimeout(0); builder.SetTxPowerLevel(AdvertiseTx.PowerHigh); AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder(); dataBuilder.SetIncludeDeviceName(true); //dataBuilder.AddServiceUuid(ParcelUuid.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5")); dataBuilder.SetIncludeTxPowerLevel(true); myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback()); }
public Task StartAdvertising(AdvertisementData adData = null) { // //if (!CrossBleAdapter.AndroidConfiguration.IsServerSupported) // // throw new BleException("BLE Advertiser needs API Level 23+"); this.adCallbacks = new AdvertisementCallbacks(); var settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(true); var data = new AdvertiseData.Builder() .SetIncludeDeviceName(true) .SetIncludeTxPowerLevel(true); if (adData != null) { if (adData.ManufacturerData != null) { data.AddManufacturerData(adData.ManufacturerData.CompanyId, adData.ManufacturerData.Data); } if (adData.ServiceUuids != null) { foreach (var serviceUuid in adData.ServiceUuids) { data.AddServiceUuid(serviceUuid.ToParcelUuid()); } } } this.context .Manager .Adapter .BluetoothLeAdvertiser .StartAdvertising( settings.Build(), data.Build(), this.adCallbacks ); return(Task.CompletedTask); }
public BleServer(Context ctx) { _bluetoothManager = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService); _bluetoothAdapter = _bluetoothManager.Adapter; _bluettothServerCallback = new BleGattServerCallback(); _bluetoothServer = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback); var service = new BluetoothGattService(UUID.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"), GattServiceType.Primary); _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f2"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write); _characteristic.AddDescriptor(new BluetoothGattDescriptor(UUID.FromString("28765900-7498-4bd4-aa9e-46c4a4fb7b07"), GattDescriptorPermission.Read | GattDescriptorPermission.Write)); service.AddCharacteristic(_characteristic); _bluetoothServer.AddService(service); _bluettothServerCallback.CharacteristicReadRequest += _bluettothServerCallback_CharacteristicReadRequest; _bluettothServerCallback.NotificationSent += _bluettothServerCallback_NotificationSent; Console.WriteLine("Server created!"); BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser; var builder = new AdvertiseSettings.Builder(); builder.SetAdvertiseMode(AdvertiseMode.LowLatency); builder.SetConnectable(true); builder.SetTimeout(0); builder.SetTxPowerLevel(AdvertiseTx.PowerHigh); AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder(); dataBuilder.SetIncludeDeviceName(true); byte[] bytes = Encoding.ASCII.GetBytes("jp"); dataBuilder.AddManufacturerData(1984, bytes); dataBuilder.SetIncludeTxPowerLevel(true); myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback()); }
public void StartAdvertising() { //lock (_mBleAdLock) //{ try { _mBleAd.StopAdvertising(_myAdvertiseCallback); AdvertiseSettings settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(false) .SetTimeout(300) .SetTxPowerLevel(AdvertiseTx.PowerMedium) .Build(); //string guid = Guid.NewGuid().ToString(); //Java.Util.UUID javaUuid = new Java.Util.UUID(1, 1); //Java.Util.UUID javaUuid = Java.Util.UUID.FromString(guid); //ParcelUuid parcelUuid = new ParcelUuid(javaUuid); //byte[] temp = Encoding.UTF8.GetBytes(guid); String strPayload = valueLabel.Text; byte[] payload = Encoding.UTF8.GetBytes(strPayload); AdvertiseData data = new AdvertiseData.Builder() .SetIncludeDeviceName(true) //.AddServiceUuid(parcelUuid) //.AddServiceData(parcelUuid, payload) .AddManufacturerData(1, payload) .SetIncludeTxPowerLevel(false) .Build(); _mBleAd.StartAdvertising(settings, data, _myAdvertiseCallback); } catch (Exception ex) { lCurrentState.Text = "Failure: " + ex; } //} }
public BleServer(Context ctx) { _bluetoothManager = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService); _bluetoothAdapter = _bluetoothManager.Adapter; _bluettothServerCallback = new BleGattServerCallback(); _bluetoothServer = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback); var service = new BluetoothGattService(UUID.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"), GattServiceType.Primary); _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f2"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write); service.AddCharacteristic(_characteristic); _bluetoothServer.AddService(service); SensorSpeed speed = SensorSpeed.UI; OrientationSensor.Start(speed); OrientationSensor.ReadingChanged += OrientationSensor_ReadingChanged; _bluettothServerCallback.CharacteristicReadRequest += _bluettothServerCallback_CharacteristicReadRequest; Console.WriteLine("Server created!"); BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser; var builder = new AdvertiseSettings.Builder(); builder.SetAdvertiseMode(AdvertiseMode.LowLatency); builder.SetConnectable(true); builder.SetTimeout(0); builder.SetTxPowerLevel(AdvertiseTx.PowerHigh); AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder(); dataBuilder.SetIncludeDeviceName(true); dataBuilder.SetIncludeTxPowerLevel(true); myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback()); }
public BleServer(Context ctx) { _bluetoothManager = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService); _bluetoothAdapter = _bluetoothManager.Adapter; _bluettothServerCallback = new BleGattServerCallback(); _bluetoothServer = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback); var service = new BluetoothGattService(UUID.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"), GattServiceType.Primary); _characteristic = new BluetoothGattCharacteristic(UUID.FromString("d8de624e-140f-4a22-8594-e2216b84a5f2"), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write); _characteristic.AddDescriptor(new BluetoothGattDescriptor(UUID.FromString("28765900-7498-4bd4-aa9e-46c4a4fb7b07"), GattDescriptorPermission.Read | GattDescriptorPermission.Write)); service.AddCharacteristic(_characteristic); _bluetoothServer.AddService(service); _bluettothServerCallback.CharacteristicReadRequest += _bluettothServerCallback_CharacteristicReadRequest; _bluettothServerCallback.NotificationSent += _bluettothServerCallback_NotificationSent; Console.WriteLine("Server created!"); BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser; var builder = new AdvertiseSettings.Builder(); builder.SetAdvertiseMode(AdvertiseMode.LowLatency); builder.SetConnectable(true); builder.SetTimeout(0); builder.SetTxPowerLevel(AdvertiseTx.PowerHigh); AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder(); dataBuilder.SetIncludeDeviceName(true); //dataBuilder.AddServiceUuid(ParcelUuid.FromString("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5")); dataBuilder.SetIncludeTxPowerLevel(true); myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), new BleAdvertiseCallback()); }
public void StartLeServer() { gattServer = bluetoothManager.OpenGattServer(Xamarin.Forms.Forms.Context, gattServerCallback); if (gattServer != null) { gattServer.AddService(CreateTimeService()); BluetoothLeAdvertiser leAdvertiser = bluetoothManager.Adapter.BluetoothLeAdvertiser; AdvertiseSettings settings = new AdvertiseSettings.Builder().SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(true) .SetTimeout(0) .SetTxPowerLevel(AdvertiseTx.PowerHigh) .Build(); AdvertiseData data = new AdvertiseData.Builder() .SetIncludeDeviceName(true) .SetIncludeTxPowerLevel(true) .AddServiceUuid(new ParcelUuid(TIME_SERVICE)) .Build(); leAdvertiser.StartAdvertising(settings, data, new LeAdvertiseCallback()); } }
public async Task <bool> StartServer(e_BtMode mode) { try { if (!Init()) { return(false); } if (mode == e_BtMode.LowEnergy) { var uuid_ser = Java.Util.UUID.FromString(BleConstants.BLE_SERVER_SERVICE_UUID); var uuid_ch = Java.Util.UUID.FromString(BleConstants.BLE_SERVER_CH_UUID); /// Set advertising AdvertiseSettings settings = new AdvertiseSettings.Builder() .SetConnectable(true) .SetAdvertiseMode(AdvertiseMode.LowLatency) .SetTxPowerLevel(AdvertiseTx.PowerMedium) .Build(); AdvertiseData advertiseData = new AdvertiseData.Builder() .SetIncludeDeviceName(true) .SetIncludeTxPowerLevel(true) .Build(); AdvertiseData scanResponseData = new AdvertiseData.Builder() //.AddServiceUuid(new ParcelUuid(uuid_ser)) //otherwise AdvertiseFailure for DataTooLarge //.AddServiceData(new ParcelUuid(uuid_ser), new byte[] { 0x01, 0x02 }) .SetIncludeDeviceName(true) .SetIncludeTxPowerLevel(true) .Build(); _CentralManager.Adapter.BluetoothLeAdvertiser.StartAdvertising(settings, advertiseData, scanResponseData, _AdvertiseCallback); /// Set ble server _GattServer = _CentralManager.OpenGattServer(Android.App.Application.Context, _GattServerCallback); _Mode = mode; var write_ch = new BluetoothGattCharacteristic(uuid_ch, GattProperty.WriteNoResponse, GattPermission.Write); var service = new BluetoothGattService(uuid_ser, GattServiceType.Primary); service.AddCharacteristic(write_ch); _GattServer.AddService(service); } else if (mode == e_BtMode.Socket) { _Mode = mode; _ServerSocket = _CentralManager.Adapter.ListenUsingRfcommWithServiceRecord("server_socket", Java.Util.UUID.FromString(BleConstants.BLE_SERVER_SOCKET_UUID)); _BluetoothSocket = await _ServerSocket.AcceptAsync(); await Task.Run(ServerSocketManager); } else { SERVER_ERR("start server failed"); return(false); } return(true); } catch (Exception ex) { SERVER_ERR("start server error", ex); return(false); } }
// use predefined Bluetooth SIG definitions for well know characteristics on UWP- Windows project. //public static Guid ManufacturerName = GattCharacteristicUuids.ManufacturerNameString; public BleServer(Context ctx) { _isRunning = false; try { _bluetoothManager = (BluetoothManager)ctx.GetSystemService(Context.BluetoothService); _bluetoothAdapter = _bluetoothManager.Adapter; _bluettothServerCallback = new BleGattServerCallback(); _bluetoothServer = _bluetoothManager.OpenGattServer(ctx, _bluettothServerCallback); var service = new BluetoothGattService(UUID.FromString(App.ServiceId), GattServiceType.Primary); //_characteristicDataExchange = new BluetoothGattCharacteristic(UUID.FromString(App.DataExchange), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write); _characteristicInitData = new BluetoothGattCharacteristic(UUID.FromString(App.InitData), GattProperty.Read | GattProperty.Notify | GattProperty.Write, GattPermission.Read | GattPermission.Write); _characteristicFirmwareVersion = new BluetoothGattCharacteristic(UUID.FromString(App.FirmwareVersion), GattProperty.Read, GattPermission.Read); _characteristicDeviceNickname = new BluetoothGattCharacteristic(UUID.FromString(App.DeviceNickname), GattProperty.Read, GattPermission.Read); _descriptorDeviceNickname = new BluetoothGattDescriptor(UUID.FromString(App.DeviceNicknameDescriptor), GattDescriptorPermission.Read); _characteristicDeviceContact = new BluetoothGattCharacteristic(UUID.FromString(App.DeviceContact), GattProperty.Read, GattPermission.Read); _characteristicDeviceInfo = new BluetoothGattCharacteristic(UUID.FromString(App.DeviceInfo), GattProperty.Read, GattPermission.Read); _characteristicInfected = new BluetoothGattCharacteristic(UUID.FromString(App.IsInfected), GattProperty.Read, GattPermission.Read); _characteristicManufacturerName = new BluetoothGattCharacteristic(UUID.FromString(App.ManufacturerName), GattProperty.Read, GattPermission.Read); _characteristicMAC = new BluetoothGattCharacteristic(UUID.FromString(App.DeviceMAC), GattProperty.Read, GattPermission.Read); //_characteristicDataExchange.SetValue("Data exchange"); //service.AddCharacteristic(_characteristicDataExchange); _characteristicFirmwareVersion.SetValue(App.FirmwareVersionValue); service.AddCharacteristic(_characteristicFirmwareVersion); _characteristicDeviceNickname.SetValue(App.DeviceNicknameValue); service.AddCharacteristic(_characteristicDeviceNickname); _characteristicDeviceContact.SetValue(App.DeviceContactValue); service.AddCharacteristic(_characteristicDeviceContact); _characteristicDeviceInfo.SetValue(App.DeviceInfoValue); service.AddCharacteristic(_characteristicDeviceInfo); _characteristicMAC.SetValue(App.DeviceMACValue); service.AddCharacteristic(_characteristicMAC); //_characteristicInitData.SetValue("SPACE - Copyright 2020"); //service.AddCharacteristic(_characteristicInitData); _characteristicInfected.SetValue(App.IsInfectedValue); service.AddCharacteristic(_characteristicInfected); _characteristicManufacturerName.SetValue(App.ManufacturerNameValue); service.AddCharacteristic(_characteristicManufacturerName); _bluetoothServer.AddService(service); _bluettothServerCallback.CharacteristicReadRequest += _bluettothServerCallback_CharacteristicReadRequest; _bluettothServerCallback.CharacteristicWriteRequest += _bluettothServerCallback_CharacteristicWriteRequest; //_bluettothServerCallback.NotificationSent += _bluettothServerCallback_NotificationSent; Console.WriteLine("Server created!"); BluetoothLeAdvertiser myBluetoothLeAdvertiser = _bluetoothAdapter.BluetoothLeAdvertiser; var builder = new AdvertiseSettings.Builder(); builder.SetAdvertiseMode(AdvertiseMode.LowLatency); builder.SetConnectable(true); builder.SetTimeout(0); builder.SetTxPowerLevel(AdvertiseTx.PowerHigh); AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder(); //dataBuilder.SetIncludeDeviceName(false); dataBuilder.AddServiceUuid(ParcelUuid.FromString(App.ServiceId)); dataBuilder.SetIncludeTxPowerLevel(true); //byte[] data = Encoding.UTF8.GetBytes(App.ManufacturerNameValue); //dataBuilder.AddManufacturerData(0x00E0, data); AdvertiseData.Builder dataResponseBuilder = new AdvertiseData.Builder(); dataResponseBuilder.SetIncludeDeviceName(true); //AdvertiseData.Builder dataManufacturerBuilder = new AdvertiseData.Builder(); //byte[] data = Encoding.UTF8.GetBytes(App.ManufacturerNameValue); //dataManufacturerBuilder.AddManufacturerData(49177, data); myBluetoothLeAdvertiser.StartAdvertising(builder.Build(), dataBuilder.Build(), dataResponseBuilder.Build(), new BleAdvertiseCallback()); _isRunning = true; } catch (System.Exception ex) { } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); Context appContext = Android.App.Application.Context; _manager = (BluetoothManager)appContext.GetSystemService("bluetooth"); _adapter = _manager.Adapter; // _gattCallback = new GattCallback(this); _scanner = _adapter.BluetoothLeScanner; _scannerCallback = new BLEScannerCallback(this); _textView = FindViewById <TextView>(Resource.Id.textView); _advertiser = _adapter.BluetoothLeAdvertiser; Button button = FindViewById <Button> (Resource.Id.button); button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); if (!_isScanning) { Task.Run(async() => { await BeginScanningForDevices(); }); } else { StopScanningForDevices(); } }; _advertiserCallback = new BLEAdvertiserCallback(this); Button button2 = FindViewById <Button>(Resource.Id.button2); button2.Click += (sender, e) => { if (!_isAdvertizing) { AdvertiseSettings settings = new AdvertiseSettings.Builder() .SetAdvertiseMode(AdvertiseMode.Balanced) .SetConnectable(true) .SetTimeout(0) .SetTxPowerLevel(AdvertiseTx.PowerMedium) .Build(); AdvertiseData data = new AdvertiseData.Builder() .SetIncludeDeviceName(true) .SetIncludeTxPowerLevel(true) .AddServiceUuid(THERM_SERVICE) //.AddServiceData(THERM_SERVICE, buildTempPacket()) .Build(); _advertiser.StartAdvertising(settings, data, _advertiserCallback); button2.Text = "Stop Advertizing"; UpdateTextView("Advertizing"); _isAdvertizing = true; } else { _advertiser.StopAdvertising(_advertiserCallback); button2.Text = "Start Advertizing"; UpdateTextView("Stopped Advertizing"); _isAdvertizing = false; } }; _listView = FindViewById <ListView>(Resource.Id.listView1); _listView.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) => { UpdateTextView("ListView clicked item, Id: " + e.Id + " Pos: " + e.Position); }; UpdateTextView("OnCreate Complete"); }