Basicamente o projeto é resolver um bug de uma aplicação em Xamarin, ao utilizar um plugin em versões Android mais novas.
A aplicação é desenvolida Xamarin, utiliza o
Plugin.BLE (
github.com/xabre/xamarin-bluetooth-le) para acesso a dispositivos Bluetooth Low Energy.
A aplicação é funcional em dispositivos Android até versão 9. Posterior a esta versão (10,11..
.) Ele apresenta erro de GATT, um acesso de permissões de alterar caracteristicas.
Uma situação do plugin Bluetooth LE.
Creio que esse projeto deva ser feito conjuntamente comigo, pois o APP/SmartPhone se comunica com um dispositivo que está comigo e sem o dispositivo o APP não acessa a área onde o erro acontece.
Detalhes do Erro:
Erro Detalhes ############################################
Erro:
Plugin.BLE.Abstractions.Exceptions.CharacteristicReadException
Message=GATT: SetCharacteristicNotification to false, FAILED.
Source=mscorlib
StackTrace:
at
Plugin.BLE.Android.Characteristic.StopUpdatesNativeAsync () [0x00061] in D:\a\xamarin-bluetooth-le\xamarin-bluetooth-le\Source\
Plugin.BLE.Android\Characteristic.cs:164
at BT110MC.TabbedPageF1.<Button_Clicked>b__21_0 () [0x00025] in E:\app\BT110MC\BT110\BT110\
TabbedPageF1.xaml.cs:206
at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_0 (
System.Object state) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/
AsyncMethodBuilder.cs:1021
at
Android.App.SyncContext+<>c__DisplayClass2_0.<Post>b__0 () [0x00000] in /Users/builder/azdo/_work/1/s/xamarin-android/src/Mono.Android/
Android.App/SyncContext.cs:36
at
Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in /Users/builder/azdo/_work/1/s/xamarin-android/src/Mono.Android/
Java.Lang/Thread.cs:36
at
Java.Lang.IRunnableInvoker.n_Run (
System.IntPtr jnienv,
System.IntPtr native__this) [0x00008] in /Users/builder/azdo/_work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-29/mcw/
Java.Lang.IRunnable.cs:84
at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.1(intptr,intptr)
Erro Resumido ############################################
Plugin.BLE.Abstractions.Exceptions.CharacteristicReadException
Message=GATT: SetCharacteristicNotification to false, FAILED.
Aplicação já publicada em Android e IOS. Porém com esse problema.
Valor a combinar.
Parte do código ############################################
//Implementação original com erro
await _characteristic.StopUpdatesAsync();
await _characteristic.StopUpdatesAsync();
await _characteristic.StopUpdatesAsync();
await _characteristic.StartUpdatesAsync();
//Sugestão de implementação da equipe
Plugin.BLE/xamarin-bluetooth-le que também apresentou erro de forma mais tardia
Device.BeginInvokeOnMainThread(async () => { await _characteristic.StopUpdatesAsync(); });
Device.BeginInvokeOnMainThread(async () => { await _characteristic.StopUpdatesAsync(); });
Device.BeginInvokeOnMainThread(async () => { await _characteristic.StopUpdatesAsync(); });
Device.BeginInvokeOnMainThread(async () => { await _characteristic.StartUpdatesAsync(); });
Contexto Geral do Projeto
O projeto consiste em corrigir o bug que ao meu ver é dado ao método de acesso ao dispositivo/plugin que deve ter sido modificado nas versões mais novas do android, pois o mesmo está funcionando em versões mais antigas.
É Um trabalho de desenvolvimento/pesquisa.
Prazo de Entrega: Não estabelecido