B4A Library Device Information

Johan Schoeman

Licensed User
Was a bit bored today and thought that I will try and do something like THIS. I found a Github Project that was able to provide me with some CPU information:

(Displayed in ListView1 of the attached project)
1. Maximum CPU Frequency
2. Minimum CPU Frequency
3. Current CPU Frequency

(Displayed in ListView2 of the attached project)
1. The number of cores
2. Combined utilization of all cores (%)
3 to x. The utilization of each individual core (%)

The two ListViews are updated every 500ms via a timer.

There are lots more functionality in the Github project but I was only interested in some of the CPU info. Have tested it on two devices and seems to be working....

Sample Code:
#Region  Project Attributes
    #ApplicationLabel: b4aAndroidDeviceInformation
    #VersionCode: 1
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim t As Timer

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim adi As AndroidDeviceInformation
    Dim freqlist As List
    Dim utillist As List

    Private lv1 As ListView
    Private lv2 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    lv1.Color = Colors.Blue
    lv1.SingleLineLayout.Label.TextSize = 15
    lv2.Color = Colors.Gray
    lv2.SingleLineLayout.Label.TextSize = 15
    t.Initialize("t", 500)

End Sub

Sub Activity_Resume
    t.Enabled = True

End Sub

Sub Activity_Pause (UserClosed As Boolean)
    t.Enabled = False

End Sub

Sub t_tick
End Sub

Sub cpu_found_frequency(freq As Object)
    freqlist = freq
    lv1.AddSingleLine("MaxCpuFreq = " & freqlist.Get(0))
    lv1.AddSingleLine("MinCpuFreq = " & freqlist.Get(1))
    lv1.AddSingleLine("CurrentCpuFreq = " & freqlist.Get(2))
End Sub

Sub cpu_core_utilization(percentage As Object)
    utillist = percentage
    lv2.AddSingleLine("No of Cores = " & utillist.Get(0))
    lv2.AddSingleLine("Utilization All Cores = " & utillist.Get(1))
    For i = 2 To utillist.Size - 1
        lv2.AddSingleLine("Utilization Core " & (i-2) & " = " & utillist.Get(i))
End Sub


Last edited: