German Wie wird bitte eine Activity (bas) angelegt?

funker

Member
Licensed User
Hallo, guten Tag.

In der Bluetoothdemo wird vom Hauptprogramm die :
StartActivity(ChatActivity) aufgerufen, es ist eine bas.

Wie wird eigentlich eine Activity angelegt bzw mit welchen Programm?

Bluetooth.b4a :
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



ChatActivity.bas :
B4X:
Type=Activity
Version=1.80
FullScreen=False
IncludeTitle=True
@EndOfDesignText@
'Activity module
Sub Process_Globals
    Dim AStream As AsyncStreams
End Sub

Sub Globals
    Dim txtInput As EditText
    Dim txtLog As EditText
    Dim btnSend As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("2")
    If AStream.IsInitialized = False Then
        AStream.InitializePrefix(Main.serial1.InputStream, True, Main.serial1.OutputStream, "AStream")
    End If
    txtLog.Width = 100%x
End Sub

Sub AStream_NewData (Buffer() As Byte)
    LogMessage("You", BytesToString(Buffer, 0, Buffer.Length, "UTF8"))
End Sub

Sub AStream_Error
    ToastMessageShow("Connection is broken.", True)
    btnSend.Enabled = False
    txtInput.Enabled = False
End Sub

Sub AStream_Terminated
    AStream_Error
End Sub

Sub Activity_Resume
  
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    If UserClosed Then
        AStream.Close
    End If
End Sub

Sub txtInput_EnterPressed
    If btnSend.Enabled = True Then btnSend_Click
End Sub
Sub btnSend_Click
    AStream.Write(txtInput.Text.GetBytes("UTF8"))
    txtInput.SelectAll
    txtInput.RequestFocus
    LogMessage("Me", txtInput.Text)
End Sub

Sub LogMessage(From As String, Msg As String)
    txtLog.Text = txtLog.Text & From & ": " & Msg & CRLF
    txtLog.SelectionStart = txtLog.Text.Length
End Sub
 

DonManfred

Expert
Licensed User
Longtime User
Mit B4A

newact0086.png

newact0087.png
 

funker

Member
Licensed User
Ja danke.

Jetzt kann ich meinen Roboter über das Bluetoothmodul HC06 steuern mit dem Tablet.
Habe Buttons angelegt für das gesamte steuern des Roboters.

Danke.
Gruss
 
Top