Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Android Bluetooth
MMCSharp
myCSharp.de - Member



Dabei seit:
Beiträge: 72

Themenstarter:

Android Bluetooth

beantworten | zitieren | melden

Hallo zusammen

Ich würde gerne eine Xamarin Forms/ Android - Anwendung schreiben die Bluetooth nutzt. Anfangs wollte ich eigentlich ein Plugin nutzen, jedoch komme ich mit den im Netz auffindbaren Plugins nicht klar. Beispielanwendungen sind meist veraltet ,zeigen im Code viele "Deprectated" - Fehler oder funktionieren erst gar nicht mehr, oder/und die Dokumentation ist zu kryptisch. Nun habe ich angefangen einen eigenen einfachen Client aufzusetzen. Einige Funktionen sind soweit vorhanden, so dass ich alle verbundenen Gerät bekomme und auch ein ausgewähltes Gerät verbinden kann. Ich würde jetzt gern noch die Umgebung nach verfügbaren Geräten absuchen, jedoch finde ich nun mehr seit 5 Tagen intensiver suche keine passende Lösung dazu. Ich währe hier für Hilfe vll. in Verbindung mit einer Erklärung sehr Dankbar! Die Verbindung wird via Interface aufgebaut.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von MMCSharp am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.312

beantworten | zitieren | melden

Xamarin Forms is halt leider auch veraltet; es geht alles Richtung MAUI und niemand investiert mehr Zeit in Forms, leider.

Der erste Google Treffer nach (Google Suche nach "xamarin forms bluetooth") führt mich zu GitHub - dotnet-bluetooth-le/dotnet-bluetooth-le: Bluetooth LE plugin for Xamarin/MAUI, supporting Android, iOS, Mac, Windows, was nach einem aktiven Projekt mit recht großer Verbreitung und Docs aussieht.
private Nachricht | Beiträge des Benutzers
MMCSharp
myCSharp.de - Member



Dabei seit:
Beiträge: 72

Themenstarter:

beantworten | zitieren | melden

Das hatte ich bereits versucht, leider gibt es hier mit der Kompatibilität zu bzw. ab Android 12 Probleme.. Dafür ist hier der Rest gut: hat ein Beispiel, das im VS nicht komplett rot leuchtet und eine relativ gute Doku...
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10.000

beantworten | zitieren | melden

Wir benutzen das in unserer neuen MAUI App.

Läuft von Android 7 bis Android 13.
Musst nur die richtigen Berechtigungen anfordern.


	<!-- For below Android 12 -->
	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="30" />
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
	<uses-permission android:name="android.permission.BLUETOOTH"/>
	
	<!-- Request legacy Bluetooth + location permissions on older devices. -->
	<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" android:maxSdkVersion="30" />
	<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
	
	<!-- For Android 12 and above -->
	<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" android:minSdkVersion="31" />
	<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" android:minSdkVersion="31" />
	<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:minSdkVersion="31"
		android:usesPermissionFlags="neverForLocation" />


 public class BluetoothLEPermissions : Permissions.BasePlatformPermission
    {
        public override (string androidPermission, bool isRuntime)[] RequiredPermissions
        {
            get
            {
                var isV12 = Environment.OSVersion.Version.Major≥31;

                if( isV12)
                {
                    return new List<(string androidPermission, bool isRuntime)>
                    {

                        (Android.Manifest.Permission.Bluetooth, true),
                        (Android.Manifest.Permission.BluetoothAdmin, true),
                        (Android.Manifest.Permission.BluetoothScan, true),
                        (Android.Manifest.Permission.BluetoothConnect, true),
                        (Android.Manifest.Permission.AccessFineLocation, true),
                        (Android.Manifest.Permission.AccessCoarseLocation, true),
                        //(Android.Manifest.Permission.AccessBackgroundLocation, true),
                    }.ToArray();

                }
                else
                {
                    return new List<(string androidPermission, bool isRuntime)>
                    {

                        //(Android.Manifest.Permission.Bluetooth, true),
                        //(Android.Manifest.Permission.BluetoothAdmin, true),
                        (Android.Manifest.Permission.AccessFineLocation, true),
                        (Android.Manifest.Permission.AccessCoarseLocation, true),
                        //(Android.Manifest.Permission.BluetoothScan, true),
                        //(Android.Manifest.Permission.BluetoothAdmin, true),
                        (Android.Manifest.Permission.AccessBackgroundLocation, true),
                        
                    }.ToArray();
                }
            }
        }
    }


    public class AccessFineLocation : Permissions.BasePlatformPermission
    {
        public override (string androidPermission, bool isRuntime)[] RequiredPermissions =>
            new (string, bool)[] { (Android.Manifest.Permission.AccessFineLocation, true) };
    }
    public class AccessCoarseLocation : Permissions.BasePlatformPermission
    {
        public override (string androidPermission, bool isRuntime)[] RequiredPermissions =>
            new (string, bool)[] { (Android.Manifest.Permission.AccessCoarseLocation, true) };
    }
    public class AccessBackgroundLocation : Permissions.BasePlatformPermission
    {
        public override (string androidPermission, bool isRuntime)[] RequiredPermissions =>
            new (string, bool)[] { (Android.Manifest.Permission.AccessBackgroundLocation, true) };
    }
    public class BluetoothP : Permissions.BasePlatformPermission
    {
        public override (string androidPermission, bool isRuntime)[] RequiredPermissions =>
            new (string, bool)[] { (Android.Manifest.Permission.Bluetooth, true) };
    }
    public class BluetoothAdvertise : Permissions.BasePlatformPermission
    {
        public override (string androidPermission, bool isRuntime)[] RequiredPermissions =>
            new (string, bool)[] { (Android.Manifest.Permission.BluetoothAdvertise, true) };
    }
    public class BluetoothScan : Permissions.BasePlatformPermission
    {
        public override (string androidPermission, bool isRuntime)[] RequiredPermissions =>
            new (string, bool)[] { (Android.Manifest.Permission.BluetoothScan, true) };
    }
    public class BluetoothConnect : Permissions.BasePlatformPermission
    {
        public override (string androidPermission, bool isRuntime)[] RequiredPermissions =>
            new (string, bool)[] { (Android.Manifest.Permission.BluetoothConnect, true) };
    }
    public class BluetoothAdmin : Permissions.BasePlatformPermission
    {
        public override (string androidPermission, bool isRuntime)[] RequiredPermissions =>
            new (string, bool)[] { (Android.Manifest.Permission.BluetoothAdmin, true) };
    }

private Nachricht | Beiträge des Benutzers