![]() |
Fmx: Android 6 Marshmallow BluetoothLE Problem
Hallo zusammen,
hat schon jemand Erfahrungen mit Android 6 gemacht ? Ich arbeite unter Rx10 Seattle, und meine App (kompiliert für Android 5) im Store stürzt mit Android 6 ab. Das verhält sich so aus ![]() Ich habe noch kein Update der SDKs gemacht, muss das jetzt aber wohl kurzfristig vorziehen. Hat jemand ähnliche Probleme gemacht, welche Änderungen hat es gegeben ? Ich setze z.B. Bluetooth LE ein, das könnte das Problem verursachen, alles andere sind nur Listview und Buttons und eine kleine Sqlite Datenbank. EDIT: Es scheint ein Problem beim Bluetooth zu geben, ansonsten läuft die App noch normal. Und zwar: Wird mit eingeschaltetem BT gestartet ist alles OK. Wird mit abgeschaltetem BT gestartet stürzt es ab. Bei abgeschaltetem BT wird versucht BT einzuschalten: Das Verfahren unten habe ich eingesetzt weil ein einmal verbundenes Gerät so hne weiteres nicht nochmal verbunden werden kann, es bleiben anscheinend irgendwelche Charachteristics hängen. Jedenfalls nur das eigene Create/Destroy des Managers hat wirklich funktioniert (sowohl iOS/Android/MacBook). Es scheint beim Android 6 jetzt ein Problem beim Manager_Create zu kommen. - War BT vorher an : alles ist gut - War BT worher aus: Crash Noch kann ich nicht debuggen, ich muss erstmal alles wieder auf Android 6 hochziehen, aber ich hoffe das ich in 1-2 Tagen dazu komme. Vielleicht hat ja schon jemand eine Idee ?
Code:
procedure TS4Ble_Thread.Manager_Create;
var iState: Integer; begin FBleManager := TBluetoothLEManager.CreateInstance; iState := S4Ble_CheckAdapter(FBleManager); if iState = 1 then begin // All OK FBleManager.EnableBluetooth; FBleManager.OnDiscoveryEnd := EvOnDiscoveryLEEnd; FBleManager.OnDiscoverLeDevice := EvOnDiscoverLEDevice; end else begin // Not available if iState < 0 then FAdapterNotFound := False else FAdapterNotFound := True; FAdapterNotActivated := True; end; end; function S4Ble_CheckAdapter(const AMgr : TBluetoothLEManager) : Integer; var adp: TBluetoothLEAdapter; bState: Boolean; begin Result := 0; // No hardware // Not active if not Assigned(AMgr) then begin Exit; end; try bState := S4Ble_IsEnabled; if bState then begin adp := AMgr.CurrentAdapter; bState := adp.State <> TBluetoothAdapterState.Off; end; if not bState then begin Result := -1; // hardware yes, // Not activated // Could Activate end else begin Result := 1; // hardware yes // And activated end; except Result := 0; // No hardware // Not active end; end; function S4Ble_IsEnabled : Boolean; var x:JBluetoothAdapter; s:String; // addr:string; begin x :=TJBluetoothAdapter.JavaClass.getDefaultAdapter; s := jstringtostring(x.getName); if x.isEnabled then result := True //s+'(enabled) ' + jstringtostring(x.getAddress) else result := False; //s+'(disabled)'; end; Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz