#Region Project Attributes
#ApplicationLabel: aeon auto
#VersionCode: 1
#VersionName: aeon auto
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False
#End Region
#AdditionalJar: androidx.core
#AdditionalJar: androidx_car_app
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
#BridgeLogger: True
Sub Process_Globals
Private xui As XUI
Private notificationId As Int = 1
End Sub
Sub Globals
Private btnSend As Button
Private jo As JavaObject
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("layout")
btnSend.Text = "Send to Android Auto"
Log("Activity created")
End Sub
Sub Activity_Resume
Log("Activity resumed")
End Sub
Sub Activity_Pause (UserClosed As Boolean)
Log("Activity paused")
End Sub
Sub btnSend_Click
Log("btnSend clicked")
CreateNotification("AEON", "This is a notification for Android Auto")
End Sub
Sub CreateNotification(title As String, text As String)
Log("Creating notification")
Dim ctxt As JavaObject
ctxt.InitializeContext
Dim builder As JavaObject
builder.InitializeNewInstance("androidx.core.app.NotificationCompat$Builder", Array(ctxt, GetChannelId))
builder.RunMethod("setContentTitle", Array(CharSequence(title)))
builder.RunMethod("setContentText", Array(CharSequence(text)))
builder.RunMethod("setSmallIcon", Array(GetResourceId("drawable", "icon")))
Log("Builder initialized")
Dim importance As Int = 3 ' NotificationManager.IMPORTANCE_DEFAULT
builder.RunMethod("setPriority", Array(importance))
Log("Priority set")
' Add CarExtender for Android Auto
Dim carExtender As JavaObject
carExtender.InitializeNewInstance("androidx.core.app.NotificationCompat$CarExtender", Null)
' Here you can configure other options like setColor or setLargeIcon if necessary
builder = carExtender.RunMethod("extend", Array(builder))
Log("CarExtender added")
' Add an action for Android Auto
Try
Dim intent As JavaObject
intent.InitializeNewInstance("android.content.Intent", Null)
intent.RunMethod("setClassName", Array(ctxt.RunMethod("getPackageName", Null), "com.fiveaces.aeonauto.main"))
intent.RunMethod("setFlags", Array(268435456)) ' FLAG_ACTIVITY_NEW_TASK
Dim pendingIntent As JavaObject
Dim flags As Int = 67108864 ' FLAG_IMMUTABLE
pendingIntent.InitializeStatic("android.app.PendingIntent")
pendingIntent = pendingIntent.RunMethod("getActivity", Array(ctxt, 0, intent, flags))
builder.RunMethod("setContentIntent", Array(pendingIntent))
builder.RunMethod("addAction", Array(GetResourceId("drawable", "notification_icon"), CharSequence("Open App"), pendingIntent))
Log("Action added")
Catch
Log(LastException.Message)
End Try
Dim nm As JavaObject = ctxt.RunMethod("getSystemService", Array("notification"))
nm.RunMethod("notify", Array(notificationId, builder.RunMethod("build", Null)))
Log("Notification sent")
End Sub
Sub GetResourceId(ResourceType As String, ResourceName As String) As Int
Dim ctxt As JavaObject
ctxt.InitializeContext
Dim res As JavaObject = ctxt.RunMethod("getResources", Null)
Return res.RunMethod("getIdentifier", Array(ResourceName, ResourceType, ctxt.RunMethod("getPackageName", Null)))
End Sub
Sub GetChannelId As String
Dim channelId As String = "default_channel"
Dim p As Phone
If p.SdkVersion >= 26 Then
Dim channel As JavaObject
channel.InitializeNewInstance("android.app.NotificationChannel", Array(channelId, "Default Channel", 3))
Dim ctxt As JavaObject
ctxt.InitializeContext
Dim nm As JavaObject = ctxt.RunMethod("getSystemService", Array("notification"))
nm.RunMethod("createNotificationChannel", Array(channel))
End If
Return channelId
End Sub
Sub CharSequence(text As String) As Object
Dim jo As JavaObject
jo.InitializeStatic("anywheresoftware.b4a.BA")
Return jo.RunMethod("ObjectToCharSequence", Array(text))
End Sub