Android Question Bluetooth-Problem whit Android 8 ?

D

Deleted member 103

Guest
Hi,

this code does not normally cause problems with other android versions.

Main-Activity:
B4X:
#Region Subs für die BluetoothVerbindung
Public Sub ChooseDevice(lstDevice As List)
    Dim res As Int
    res = InputList(lstDevice, Starter.language.value("strSelectBtDevice"), -1)
    If res <> DialogResponse.CANCEL Then
        smCrono.bluetooth.ConnectToDevice(res)
    End If
End Sub

Public Sub ShowProgressDialog(text As String, Show As Boolean)
    If Show Then
        ProgressDialogShow(text)
        DoEvents
        'Sleep(1000)
    Else
        ProgressDialogHide
    End If
End Sub

#End Region

Classe Bluetooth:
B4X:
Sub Admin_DiscoveryFinished
    CallSubDelayed3(Main,"ShowProgressDialog","",False)
    If foundDevices.Size = 0 Then
        ToastMessageShow(Starter.language.value("strBluetoothNoFound"), True)
    Else
        Dim Macfound As NameAndMac
        Macfound.Initialize
        Dim l As List
        l.Initialize
        For i = 0 To foundDevices.Size - 1
            Dim nm As NameAndMac
            nm = foundDevices.Get(i)
            l.Add(nm.Name)
         
            If Starter.manager.GetString("BtMacAddress") = nm.Mac Then
                Macfound = nm
                Exit
            End If
        Next
        If Macfound.Name <> "" Then
            ConnectToKnownDevice(Macfound)
        Else
            CallSubDelayed2(Main,"ChooseDevice",l)
        End If
    End If
End Sub

Sub ConnectToDevice(index As Int)
    connectedDevice = foundDevices.Get(index)
    ConnectToKnownDevice(connectedDevice)
End Sub

Sub ConnectToKnownDevice(BtMac As NameAndMac)
    connectedDevice = BtMac
    CallSubDelayed3(Main,"ShowProgressDialog",Starter.language.value("strBluetoothConnect") & " " & BtMac.Name & " (" & BtMac.Mac & ")",True)
    serial1.Connect(BtMac.Mac)
End Sub

For a device with Android 8 but there are problems, where can it come from?
crash_01.PNG


Can it be this line at the sub "ShowProgressDialog"?
B4X:
        ProgressDialogShow(text)
        DoEvents
 
D

Deleted member 103

Guest
Are you checking that BluetoothAdmin.IsEnable is True?
Yes, with this code.
Main-Activity:
B4X:
Sub mnuBtButton_Click
    If Not(IsMenuEnabled) Then Return
    If starter.bluetooth.IsBtConnected Then
        ToastMessageShow(Starter.language.value("strBluetoothButtonIsConnected"), True)
    Else
        starter.bluetooth.ConnectBtButton
    End If
End Sub

Classe Bluetooth:
B4X:
Public Sub ConnectBtButton
    If HasFeature("android.hardware.bluetooth") Then
        Try
            If admin.IsEnabled = False Then
                If admin.Enable = False Then
                    ToastMessageShow(Starter.language.value("strBluetoothErrorEnabling"), True)
                Else
                    ToastMessageShow(Starter.language.value("strBluetoothEnabling"), False)
                    'the StateChanged event will be soon raised
                End If
            Else           
                Admin_StateChanged(admin.STATE_ON, 0)
            End If
        Catch
            Log("ConnectBtButton-ERROR:" & LastException)
        End Try
    Else
        ToastMessageShow(Starter.language.value("strBluetoothNotPresent"), True)
    End If
End Sub

Sub Admin_StateChanged (NewState As Int, OldState As Int)
    If NewState = admin.STATE_ON Then
        ToastMessageShow(Starter.language.value("strBluetoothIsConnected"), False)
        Searchdevice
    End If
End Sub

Sub Searchdevice
    tmpList.Clear
    foundDevices.Clear
    If admin.StartDiscovery    = False Then
        ToastMessageShow(Starter.language.value("strBluetoothErrorProcess"), True)
    Else
        CallSubDelayed3(Main,"ShowProgressDialog", Starter.language.value("strBluetoothSearch"),True)
    End If
End Sub
 
Upvote 0
D

Deleted member 103

Guest
I have now partially reproduced the error.
If you press Cancel during pairing, the error is triggered under "Sub Serial1_Connected (Success As Boolean)".
On my devices comes only the "ToastMessageShow", maybe other devices but an error is triggered?
B4X:
Sub Serial1_Connected (Success As Boolean)
    CallSubDelayed3(Main, "ShowProgressDialog", "", False)
'    Log("connected: " & Success)
    If Not(Success) Then
        Log(LastException.Message)
        ToastMessageShow(Starter.language.value("ERROR") & CRLF & LastException.Message, True)
        'LastException.Message= java.io.IOException: read failed, socket might closed or timeout, read ret: -1

        IsBtConnected = False
       
        'Wurde die verbindung zum bekannte BT-Gerät nicht ergestellt dann
        'die gespeicherte MAC-Adresse löschen.
        If Starter.manager.GetString("BtMacAddress") <> "" Then
            Starter.manager.setString("BtMacAddress", "")
        End If
    Else
        Starter.manager.setString("BtMacAddress", connectedDevice.Mac)
        IsBtConnected = True
        If Not(AStream.IsInitialized) Then
            AStream.Initialize(serial1.InputStream, serial1.OutputStream, "AStream")
        End If
        ToastMessageShow(Starter.language.value("strBluetoothButtonConnected"), True)
        Log("clsBluetooth: IsBtConnected=" & IsBtConnected)
    End If
   
End Sub
 
Upvote 0
Top