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 :
ChatActivity.bas :
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