German Bluetooth bei Start verbinden

GMan

Well-Known Member
Licensed User
Longtime User
Ahoi,
ich benutze zum testen den SampleScript Bluetooth:
B4X:
'Activity module
Sub Process_Globals
    Dim admin As BluetoothAdmin
    Dim serial1 As Serial
    Dim foundDevices As List
    Type NameAndMac (Name As String, Mac As String)
    Dim connectedDevice As NameAndMac
End Sub

Sub Globals
    Dim btnSearchForDevices As Button
    Dim btnAllowConnection As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
    If FirstTime Then
        admin.Initialize("admin")
        serial1.Initialize("serial1")
    End If
    Activity.LoadLayout("1")
End Sub

Sub Activity_Resume
    btnSearchForDevices.Enabled = False
    btnAllowConnection.Enabled = False
    If admin.IsEnabled = False Then
        If admin.Enable = False Then
            ToastMessageShow("Error enabling Bluetooth adapter.", True)
        Else
            ToastMessageShow("Enabling Bluetooth adapter...", False)
            'the StateChanged event will be soon raised
        End If
    Else
        Admin_StateChanged(admin.STATE_ON, 0)
    End If
End Sub

Sub Admin_StateChanged (NewState As Int, OldState As Int)
    btnSearchForDevices.Enabled = (NewState = admin.STATE_ON)
    btnAllowConnection.Enabled = btnSearchForDevices.Enabled
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    If UserClosed = True Then
        serial1.Disconnect
    End If
End Sub

Sub btnSearchForDevices_Click
    foundDevices.Initialize
    If admin.StartDiscovery    = False Then
        ToastMessageShow("Error starting discovery process.", True)
    Else
        ProgressDialogShow("Searching for devices...")
    End If
End Sub

Sub Admin_DiscoveryFinished
    ProgressDialogHide
    If foundDevices.Size = 0 Then
        ToastMessageShow("No device found.", True)
    Else
        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)
        Next
        Dim res As Int
        res = InputList(l, "Choose device to connect", -1)
        If res <> DialogResponse.CANCEL Then
            connectedDevice = foundDevices.Get(res)
            ProgressDialogShow("Trying to connect to: " & connectedDevice.Name & " (" & connectedDevice.Mac & ")")
            serial1.Connect(connectedDevice.Mac)
        End If
    End If
End Sub

Sub Admin_DeviceFound (Name As String, MacAddress As String)
    Log(Name & ":" & MacAddress)
    Dim nm As NameAndMac
    nm.Name = Name
    nm.Mac = MacAddress
    foundDevices.Add(nm)
    ProgressDialogShow("Searching for devices (~ device found)...".Replace("~", foundDevices.Size))
End Sub

Sub btnAllowConnection_Click
    'this intent makes the device discoverable for 300 seconds.
    Dim i As Intent
    i.Initialize("android.bluetooth.adapter.action.REQUEST_DISCOVERABLE", "")
    i.PutExtra("android.bluetooth.adapter.extra.DISCOVERABLE_DURATION", 300)
    StartActivity(i)
   
    serial1.Listen
End Sub

Sub Serial1_Connected (Success As Boolean)
    ProgressDialogHide
    Log("connected: " & Success)
    If Success = False Then
        Log(LastException.Message)
        ToastMessageShow("Error connecting: " & LastException.Message, True)
    Else
        StartActivity(ChatActivity)
    End If
End Sub

Beim Start muss ich jedes Mal auf Suchen klicken, dann verbinden, Passphrase eingeben, BT-Kopplungs- und Pairinganfrage beantworten.

Geht das auch so, dass ich mich beim Start mit einem bestimmten Gerät sofort verbinde, also Name, Passphrase usw. irgendwo hinterlege (z.B. SD-Karte), auslese und diese Daten dann zum Verbinden verwende ?
 
Top