﻿''' CONTEXTO MAESTRO DE LIBRERÃAS B4A / B4X (V8)
''' INSTRUCCIONES TÃ‰CNICAS:
''' 1. DUPLICADOS: Usa siempre la definiciÃ³n encontrada aquÃ­.
''' 2. TIPOS: Respeta mayÃºsculas/minÃºsculas (Int, String).
''' 3. PROPIEDADES: [Prop:W] es Solo Escritura. [Prop:R] es Solo Lectura.
''' ======================================================================================
''' [ÃNDICE (50)]
''' - Accessibility
''' - Administrator
''' - Animation
''' - AppCompat
''' - Audio
''' - B4XEncryption
''' - BitmapCreator
''' - BLE2
''' - ByteConverter
''' - Camera
''' - Camera2
''' - ContentResolver
''' - Core
''' - DateUtils
''' - FirebaseAdMob
''' - FirebaseAdMob2
''' - FirebaseAnalytics
''' - FirebaseAuth
''' - FirebaseNotifications
''' - FirebaseStorage
''' - GameView
''' - Gestures
''' - GooglePlayBilling
''' - GPS
''' - IME
''' - JavaObject
''' - JSON
''' - KeyValueStore2
''' - LiveWallpaper
''' - Network
''' - NFC
''' - OkHttp
''' - Phone
''' - PreferenceActivity
''' - RandomAccessFile
''' - Reflection
''' - RuntimePermissions
''' - Serial
''' - Sip
''' - SQL
''' - StringUtils
''' - TabStripViewPager
''' - TTS
''' - USB
''' - ViewsEx
''' - xCustomListView
''' - XMLBuilder
''' - XmlSax
''' - XUI
''' - XUI2D


' ######################################################################
' LIBRERÃA: Accessibility (v1.02)
' ######################################################################

' === CLASE: Accessibility (anywheresoftware.b4a.objects.Accessibility) ===
[Met]    GetUserFontScale() As Float    ' Returns the user set font scale. The user can adjust this scale in the device Settings.
This scale is applied automatically to all text based views.
[Met]    SetNextFocusDown(ThisView As View, NextView As View)    ' Sets the next view that will get the focus when the user presses on the down key (and ThisView is focused).
 Example:<code>
Dim Access As Accessibility
Access.SetNextFocusDown(Button1, Button2) 'When the focus is on Button1 and the user presses on the down key,
'the focus will move to Button2.
</code>
[Met]    SetNextFocusLeft(ThisView As View, NextView As View)    ' Sets the next view that will get the focus when the user presses on the left key (and ThisView is focused).
[Met]    SetContentDescription(View As View, Content As CharSequence)    ' Sets the view's description. This text will be used by accessibility services to describe the view.
[Met]    SetNextFocusUp(ThisView As View, NextView As View)    ' Sets the next view that will get the focus when the user presses on the up key (and ThisView is focused).
[Met]    SetNextFocusRight(ThisView As View, NextView As View)    ' Sets the next view that will get the focus when the user presses on the right key (and ThisView is focused).

' === CLASE: Accessiblity (anywheresoftware.b4a.objects.Accessibility.Accessibility2) ===
[Met]    GetUserFontScale() As Float    ' Returns the user set font scale. The user can adjust this scale in the device Settings.
This scale is applied automatically to all text based views.
[Met]    SetNextFocusDown(ThisView As View, NextView As View)    ' Sets the next view that will get the focus when the user presses on the down key (and ThisView is focused).
 Example:<code>
Dim Access As Accessibility
Access.SetNextFocusDown(Button1, Button2) 'When the focus is on Button1 and the user presses on the down key,
'the focus will move to Button2.
</code>
[Met]    SetNextFocusLeft(ThisView As View, NextView As View)    ' Sets the next view that will get the focus when the user presses on the left key (and ThisView is focused).
[Met]    SetContentDescription(View As View, Content As CharSequence)    ' Sets the view's description. This text will be used by accessibility services to describe the view.
[Met]    SetNextFocusUp(ThisView As View, NextView As View)    ' Sets the next view that will get the focus when the user presses on the up key (and ThisView is focused).
[Met]    SetNextFocusRight(ThisView As View, NextView As View)    ' Sets the next view that will get the focus when the user presses on the right key (and ThisView is focused).

' ######################################################################
' LIBRERÃA: Administrator (v1.1)
' ######################################################################

' === CLASE: AdminManager (anywheresoftware.b4a.objects.AdminManager) ===
[Prop:R] Enabled As Boolean    ' Returns true if the admin policy is active.
[Prop:R] PasswordSufficient As Boolean    ' Tests whether the current password meets the requirements.
Requires the limit-password tag in the policies file.
[Prop:W] MaximumTimeToLock As Long    ' Sets the maximum time (measured in milliseconds) before the device locks.
This limits the length that the user can set in the settings screen.
Requires the force-lock tag in the policies file.
[Met]    ResetPassword(NewPassword As String) As Boolean    ' Sets the given password as the device password.
Requires the reset-password tag in the policies file.
[Met]    Disable()    ' Disables the admin policy.
[Met]    Enable(Explanation As String)    ' Enables the admin policy. The user will be shown a dialog with the requested features.
This method can only be called from an Activity context.
Explanation - A message shown at the top of the dialog.
[Met]    RequestNewPassword()    ' Shows the new password activity. Note that the user might cancel the change.
[Met]    SetPasswordQuality(QualityFlag As Int, MinimumLength As Int)    ' Sets the minimum allowed length and quality for device passwords.
These settings will affect new passwords.
Requires the limit-password tag in the policies file.

QualityFlag - One of the password quality flags.
MinimumLength - Password minimum length.

Example:<code>
manager.SetPasswordQuality(manager.PASSWORD_QUALITY_ALPHANUMERIC, 4)</code>
[Met]    LockScreen()    ' Immediately locks the screen. Requires the force-lock tag in the policies file.

' ######################################################################
' LIBRERÃA: Animation (v1.02)
' ######################################################################

' === CLASE: Animation (anywheresoftware.b4a.objects.AnimationWrapper) ===
[Prop:RW] RepeatCount As Int    ' Gets or sets the number of times the animation will repeat. A value of 0 means that it will play once.
Set to -1 for a non stopping animation.
Example: <code>Animation1.RepeatCount = 1</code>
[Prop:RW] RepeatMode As Int    ' Gets or sets the repeat mode. Relevant when RepeatCount is larger than 0 (or -1).
The default is REPEAT_RESTART which means that the animation will restart each time.
REPEAT_REVERSE causes the animation to repeat in reverse each time.
For example if the animation moves the view to the right 100 pixels, in the next repeat it will return to the left.
Example: <code>Animation1.RepeatMode = Animation1.REPEAT_REVERSE</code>
[Prop:RW] Duration As Long    ' Gets or sets the animation duration. Value is measured in milliseconds.
Example: <code>Animation1.Duration = 1000</code>
[Met]    Start(View As View)    ' Starts the animating the given view.
Note that a single animation should not be applied to more than one view at a time.
Example: <code>Animation1.Start(Button1)</code>
[Met]    InitializeRotateCenter(EventName As String, FromDegrees As Float, ToDegrees As Float, View As View)    ' Similar to InitializeRotate, with the pivot set to the given view's center.
[Met]    InitializeScaleCenter(EventName As String, FromX As Float, FromY As Float, ToX As Float, ToY As Float, View As View)    ' Similar to InitializeScale with a pivot set to the given view's center.
[Met]    InitializeRotate(EventName As String, FromDegrees As Float, ToDegrees As Float)    ' Initializes a rotation animation. The view will rotate between the given values.
Rotation pivot is set to the top left corner.
FromDegrees - The first frame rotation value.
ToDegrees - The last frame rotation value.
[Met]    Stop(View As View)    ' Stops animating the given view.
[Met]    InitializeScale(EventName As String, FromX As Float, FromY As Float, ToX As Float, ToY As Float)    ' Initializes a scale animation. The view will be scaled during the animation.
The scaling pivot will be set to the top left corners.
FromX - The first frame horizontal scale.
FromY - The first frame vertical scale.
ToX - The last frame horizontal scale.
ToY - The last frame vertical scale.
[Met]    InitializeTranslate(EventName As String, FromDX As Float, FromDY As Float, ToDX As Float, ToDY As Float)    ' Initializes a translation animation. The view will move according to the given values.
FromDX - First frame horizontal position relative to the original position.
FromDY - First frame vertical position relative to the original position.
ToDX - Last frame horizontal position relative to the original position.
ToDY - Last frame vertical position relative to the original position.
[Met]    InitializeAlpha(EventName As String, FromAlpha As Float, ToAlpha As Float)    ' Initializes an alpha animation. This animation affects the view's transparency (fading effect).
The alpha values are between 0 to 1 where 0 is fully transparent and 1 is fully opaque.
FromAlpha - The first frame value.
ToAlpha - The last frame value.
[Met]    IsInitialized() As Boolean 
[Event]  AnimationEnd.Trim()

' ######################################################################
' LIBRERÃA: AppCompat (v4.02)
' ######################################################################

' === CLASE: AppCompat (de.amberhome.objects.appcompat.AppCompatBase) ===
[Met]    SetElevation(View As View, Elevation As Float)    ' Set the Elevation for the View
[Met]    GetElevation(View As View) As Float    ' Gets the Elevation for the View
[Met]    UnWrapDrawable(drawable As Drawable) As Drawable 
[Met]    GetStdActionBarHeight() As Int    ' Gets the standard ActionBar Height. Since Gingerbread does not have an ActionBar it will return 0 for Android < 3.0.
[Met]    GetNavigationBarHeight() As Int    ' Gets the navigation bar height
[Met]    GetThemeAttribute(AttributeName As String) As Int    ' Tries to get the value of a Theme attribute, like colorPrimary,
 colorPrimaryDark, colorPrimaryAccent. If the attribute is not found -1 is
 returned.
 
 AttributeName - Name of the attribute to find
[Met]    GetMaterialActionBarHeight() As Int    ' Gets the ActionBar Height as definded in the Material Design style guide
[Met]    GetStatusBarHeight() As Int    ' Gets the status bar height
[Met]    SetClickEffect(View As View, Borderless As Boolean)    ' Sets a click-effect for a view. Will use ripple effect on Lollipop or later and
 a normal click colorchange on earlier android versions.

 View - View to set the effect for
 Borderless - Should the effect be borderless?
[Met]    SetDrawableTint(drawable As Drawable, Color As Int) 

' === CLASE: ACToolBarLight (de.amberhome.objects.appcompat.ACToolbarLightWrapper) ===
[Prop:RW] MinHeight As Int    ' Sets or gets the minimum height of the ToolBar. The MinHeight property is
 handled in a special way on ToolBars. The Overflow menu button and the
 navigation item are vertically centered relative to the MinHeight. So if
 you have a ToolBar with a height of 112dip and a minheight of 56dip the
 Overflow menu and navigation item are placed in the upper half of the
 ToolBar. If you don't set MinHeight the items are placed centered
 relative to the whole ToolBar height.
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:R] Parent As Object 
[Prop:R] NumberOfViews As Int    ' Returns the number of Views in this ToolBar
[Prop:RW] Elevation As Float 
[Prop:W] PopupTheme As Int    ' Sets the Popup theme.
 
 MUST be run before Toolbar.SetAsActionBar !
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:R] Menu As ACMenu    ' Gets the menu of the ToolBar
[Prop:W] TitleTextColor As Int    ' Sets the title text color
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Prop:RW] SubTitle As String    ' Sets or gets the SubTitle of the Toolbar
[Prop:W] LogoBitmap As Bitmap    ' Sets a bitmap as a Logo. A logo in a toolbar is not clickable.
[Prop:RW] Background As Drawable 
[Prop:W] NavigationIconBitmap As Bitmap    ' Sets the navigation item for the toolbar. This icon is clickable.
[Prop:W] Color As Int 
[Prop:RW] Title As String    ' Sets or gets the Title of the Toolbar
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] NavigationIconDrawable As Drawable    ' Sets or gets the navigation icon for the toolbar. This icon is clickable.
[Prop:RW] Tag As Object 
[Prop:W] SubTitleTextColor As Int    ' Sets the subtitle text color
[Prop:RW] LogoDrawable As Drawable    ' Sets or gets the Logo for the Toolbar. The logo is not clickable and is
 vertically centered in the toolbar.
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    GetView(Index As Int) As ConcreteView    ' Gets the view for the given Index
[Met]    AddView(View As View, Width As Int, Height As Int, Gravity As Int)    ' Add a view to the ToolBar. The width is the available space between an
 Icon/Logo on the left and the actions on the right.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object.
[Met]    GetAllViewsRecursive() As IterableList    ' Gets all Views added to the Toolbar.
[Met]    InitMenuListener()    ' Reinitializes the Menu listener. This is necessary if you set the ToolBar
 as your activities ActionBar and you want to customize the menu at
 runtime.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    RemoveViewAt(Index As Int)    ' Remove view with the given Index
[Met]    SendToBack() 
[Met]    AddCustomView()    ' Add a CustomView.
 Adding this View to the ToolBar will add it with "Match-Parent" Sizes.
 A "CustomViewReady" event is fired with the current size of a Panel.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    SetAsActionBar()    ' Set this Toolbar as the activity main ActionBar
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    SetElevationAnimated(Duration As Int, Elevation As Float) 
[Met]    RemoveAllViews()    ' Remove all views from the ToolBar
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will
 only be applied when running on Android 3+ devices.
 
 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  NavigationItemClick.Trim()
[Event]  MenuItemClick (Item as ACMenuItem).Trim()

' === CLASE: ACToolBarDark (de.amberhome.objects.appcompat.ACToolbarDarkWrapper) ===
[Prop:RW] MinHeight As Int    ' Sets or gets the minimum height of the ToolBar. The MinHeight property is
 handled in a special way on ToolBars. The Overflow menu button and the
 navigation item are vertically centered relative to the MinHeight. So if
 you have a ToolBar with a height of 112dip and a minheight of 56dip the
 Overflow menu and navigation item are placed in the upper half of the
 ToolBar. If you don't set MinHeight the items are placed centered
 relative to the whole ToolBar height.
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:R] Parent As Object 
[Prop:R] NumberOfViews As Int    ' Returns the number of Views in this ToolBar
[Prop:RW] Elevation As Float 
[Prop:W] PopupTheme As Int    ' Sets the Popup theme.
 
 MUST be run before Toolbar.SetAsActionBar !
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:R] Menu As ACMenu    ' Gets the menu of the ToolBar
[Prop:W] TitleTextColor As Int    ' Sets the title text color
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Prop:RW] SubTitle As String    ' Sets or gets the SubTitle of the Toolbar
[Prop:W] LogoBitmap As Bitmap    ' Sets a bitmap as a Logo. A logo in a toolbar is not clickable.
[Prop:RW] Background As Drawable 
[Prop:W] NavigationIconBitmap As Bitmap    ' Sets the navigation item for the toolbar. This icon is clickable.
[Prop:W] Color As Int 
[Prop:RW] Title As String    ' Sets or gets the Title of the Toolbar
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] NavigationIconDrawable As Drawable    ' Sets or gets the navigation icon for the toolbar. This icon is clickable.
[Prop:RW] Tag As Object 
[Prop:W] SubTitleTextColor As Int    ' Sets the subtitle text color
[Prop:RW] LogoDrawable As Drawable    ' Sets or gets the Logo for the Toolbar. The logo is not clickable and is
 vertically centered in the toolbar.
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    GetView(Index As Int) As ConcreteView    ' Gets the view for the given Index
[Met]    AddView(View As View, Width As Int, Height As Int, Gravity As Int)    ' Add a view to the ToolBar. The width is the available space between an
 Icon/Logo on the left and the actions on the right.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object.
[Met]    GetAllViewsRecursive() As IterableList    ' Gets all Views added to the Toolbar.
[Met]    InitMenuListener()    ' Reinitializes the Menu listener. This is necessary if you set the ToolBar
 as your activities ActionBar and you want to customize the menu at
 runtime.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    RemoveViewAt(Index As Int)    ' Remove view with the given Index
[Met]    SendToBack() 
[Met]    AddCustomView()    ' Add a CustomView.
 Adding this View to the ToolBar will add it with "Match-Parent" Sizes.
 A "CustomViewReady" event is fired with the current size of a Panel.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    SetAsActionBar()    ' Set this Toolbar as the activity main ActionBar
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    SetElevationAnimated(Duration As Int, Elevation As Float) 
[Met]    RemoveAllViews()    ' Remove all views from the ToolBar
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will
 only be applied when running on Android 3+ devices.
 
 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  NavigationItemClick.Trim()
[Event]  MenuItemClick (Item as ACMenuItem).Trim()

' === CLASE: ACSwitch (de.amberhome.objects.appcompat.ACSwitchCompatWrapper) ===
[Prop:RW] ShowText As Boolean    ' Sets or gets whether the on/off text should be displayed.
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:RW] Background As Drawable 
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] TextSize As Float 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:RW] Checked As Boolean 
[Prop:RW] TextOn As String    ' Sets or gets the text displayed when the button is in the checked state.
[Prop:RW] Ellipsize As String 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] TextOff As String    ' Sets or gets the text displayed when the button is in the unchecked state.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Prop:W] SingleLine As Boolean 
[Prop:RW] Gravity As Int 
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object
[Met]    SetTextSizeAnimated(arg0 As Int, arg1 As Float) 
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SetTextColorAnimated(arg0 As Int, arg1 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Initialize2(EventName As String, Style As String) 
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
 
 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  CheckedChange(Checked As Boolean).Trim()

' === CLASE: ACSubMenu (de.amberhome.objects.appcompat.ACSubMenuWrapper) ===
[Prop:W] HeaderTitle As CharSequence 
[Prop:W] Icon As Drawable 
[Prop:W] HeaderIcon As Drawable 
[Met]    Add(ItemId As Int, SortOrder As Int, Title As CharSequence, Icon As Bitmap) As ACMenuItem    ' Add a menu item to the menu
 
ItemId : Id for the item
Title : Title for the item
Icon : Bitmap that is used as an icon. Pass null for no icon.
[Met]    AddWithGroup2(GroupId As Int, ItemId As Int, SortOrder As Int, Title As CharSequence, Icon As Drawable) As ACMenuItem    ' Add a menu item to the menu and put this item into a group.
 
 GroupId : Id of the group
 ItemId : Id for the item
 SortOrder : Sort order id
 Title : Title for the item
 Icon : Drawable that is used as an icon. Pass null for no icon.
[Met]    Size() As Int    ' Returns the number of items in the menu
[Met]    SetGroupCheckable(GroupId As Int, Checkable As Boolean, Exclusive As Boolean)    ' Make all items in the group checkable
 
 GroupId : Id of the group
 Checkable : True or False to make the group checkable or not
 Exclusive : If set to True only one item can be checked at a time. All other items will be unchecked.
[Met]    IsInitialized() As Boolean 
[Met]    RemoveGroup(GroupId As Int)    ' Remove the group from the menu
 
 GroupId : the group to remove
[Met]    SetGroupEnabled(GroupId As Int, Enable As Boolean)    ' Make the given group enabled/disabled
 
 GroupId : Id of the group
 Enable : True or False to enable/disable the group
[Met]    Add2(ItemId As Int, SortOrder As Int, Title As CharSequence, Icon As Drawable) As ACMenuItem    ' Add a menu item to the menu
 
 ItemId : Id for the item
 SortOrder : Sort order id
 Title : Title for the item
 Icon : Drawable that is used as an icon. Pass null for no icon.
[Met]    Clear()    ' Clears all menu items from the menu.
[Met]    GetItem(Index As Int) As ACMenuItem    ' returns the item with the given index.
[Met]    RemoveItem(ItemId As Int)    ' Remove Item from menu

ItemId : item to be removed
[Met]    ClearHeader() 
[Met]    AddSubMenu(GroupId As Int, ItemId As Int, SortOrder As Int, Title As CharSequence) As ACSubMenu    ' Add a Submenu to the menu.
 
 GroupId : Id for the group
 ItemId : Id for the item
 SortOrder : Sort order id
 Title : title of the menu
[Met]    FindItem(ItemId As Int) As ACMenuItem    ' returns the item with the given Id. Returns null if the item cannot be found.

ItemId : Id of the item to be searched for.
[Met]    SetGroupVisible(GroupId As Int, Visible As Boolean)    ' Make the given group visible/invisible
 
 GroupId : Id of the group
 Visible : True or False to make the group visible/invisible
[Met]    Close()    ' Close the menu if it is open.
[Met]    AddWithGroup(GroupId As Int, ItemId As Int, SortOrder As Int, Title As CharSequence, Icon As Bitmap) As ACMenuItem    ' Add a menu item to the menu and put this item into a group

 GroupId : Id of the group
 ItemId : Id for the item
 Title : Title for the item
 Icon : Bitmap that is used as an icon. Pass null for no icon.

' === CLASE: ACSpinner (de.amberhome.objects.appcompat.ACSpinnerWrapper) ===
[Prop:RW] SelectedIndex As Int    ' Gets or sets the index of the selected item. Returns -1 if no item is
 selected.
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:RW] Background As Drawable 
[Prop:R] Parent As Object 
[Prop:R] Size As Int    ' Returns the number of items
[Prop:W] Color As Int 
[Prop:RW] TextSize As Float 
[Prop:RW] Enabled As Boolean 
[Prop:RW] DropdownBackgroundColor As Int 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Prompt As String    ' Sets or gets the title that will be displayed when the spinner is opened.
[Prop:RW] DropdownTextColor As Int 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object 
[Prop:R] SelectedItem As String    ' Returns the value of the selected item
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Met]    Add(Item As CharSequence) 
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object
[Met]    Add2(Item As CharSequence, Icon As Drawable) 
[Met]    Clear() 
[Met]    GetItem(Index As Int) As String 
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    IndexOf(value As CharSequence) As Int 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Initialize2(EventName As String, Theme As Int) 
[Met]    Invalidate() 
[Met]    AddAll(List As List) 
[Met]    RemoveAt(Index As Int) 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
 
 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  ItemClick (Position As Int, Value As Object).Trim()
[Event]  Closed.Trim()

' === CLASE: ACSeekBar (de.amberhome.objects.appcompat.ACSeekBarWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:RW] Background As Drawable 
[Prop:RW] Max As Int 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] Value As Int 
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Initialize2(EventName As String, Style As String) 
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
 
 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  ValueChanged (Value As Int, UserChanged As Boolean).Trim()

' === CLASE: ACSearchView (de.amberhome.objects.appcompat.ACSearchViewWrapper) ===
[Prop:RW] Query As String    ' Set/Get the query text
 
 Query: Text to set
[Prop:RW] QueryHint As String    ' Set/Get the query hint
 
 Hint: Text to set
[Prop:RW] SubmitButtonEnabled As Boolean    ' Set/Get if the submit button is enabled
[Prop:RW] IconifiedByDefault As Boolean    ' Set/Get if the SearchView is iconified by default
[Prop:RW] Iconfied As Boolean    ' Set/Get if the SerachView is iconified
[Met]    Initialize2(EventName As String, Theme As Int)    ' Initialize the object
 
 EventName: Name of the event
 Theme: Theme to use (DARK or LIGHT)
[Met]    Submit()    ' Programatically Submit the search phrase.
[Met]    Initialize(EventName As String)    ' Initialize the object
 
 EventName: Name of the event
[Event]  QuerySubmitted (Query as String).Trim()
[Event]  QueryChanged (Query as String).Trim()
[Event]  Closed.Trim()

' === CLASE: ACRadioButton (de.amberhome.objects.appcompat.ACRadioButtonWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:RW] Background As Drawable 
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] TextSize As Float 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:RW] Checked As Boolean 
[Prop:RW] Ellipsize As String 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Prop:W] SingleLine As Boolean 
[Prop:RW] Gravity As Int 
[Met]    innerInitialize2(eventName As String, keepOldObject As Boolean, style As String) 
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object
[Met]    SetTextSizeAnimated(arg0 As Int, arg1 As Float) 
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SetTextColorAnimated(arg0 As Int, arg1 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Initialize2(EventName As String, Style As String)    ' Initializes the object
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.

 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  CheckedChange(Checked As Boolean).Trim()

' === CLASE: ACPopupMenu (de.amberhome.objects.appcompat.ACPopupMenuWrapper) ===
[Met]    GetItem(ItemId As Int) As MenuItem    ' Get the Menu Item Object for a given Id
[Met]    Initialize2(EventName As String, View As View, style As String)    ' Initialize the PopupMenu
 
 EventName: Name for the events View: Anchor View which is used for the
 PopupMenu position
 View: The anchor view for the popup menu
 Style: A style to use for the popup menu
[Met]    AddMenuItem(ItemId As Int, Title As CharSequence, Icon As Drawable) As ACMenuItem    ' Add a new menu item and then returns it.
 
 ItemId: Id for the menu item Title: Title for the menu Icon: Drawable to
 be shown as menu icon
[Met]    Show()    ' Show the popup menu.
[Met]    Close()    ' Close the Popup menu
[Met]    Initialize(EventName As String, View As View)    ' Initialize the PopupMenu

 EventName: Name for the events View: Anchor View which is used for the
 PopupMenu position
 View: The anchor view for the popup menu
[Met]    RemoveMenuItem(ItemId As Int)    ' Remove menu item
 
 ItemId: Item to be removed
[Met]    GetMenu() As ACMenu    ' Gets the menu object
[Event]  ItemClicked (Item As ACMenuItem).Trim()
[Event]  Closed.Trim()

' === CLASE: ACMenu (de.amberhome.objects.appcompat.ACMenuWrapper) ===
[Met]    Add(ItemId As Int, SortOrder As Int, Title As CharSequence, Icon As Bitmap) As ACMenuItem    ' Add a menu item to the menu
 
ItemId : Id for the item
Title : Title for the item
Icon : Bitmap that is used as an icon. Pass null for no icon.
[Met]    AddWithGroup2(GroupId As Int, ItemId As Int, SortOrder As Int, Title As CharSequence, Icon As Drawable) As ACMenuItem    ' Add a menu item to the menu and put this item into a group.
 
 GroupId : Id of the group
 ItemId : Id for the item
 SortOrder : Sort order id
 Title : Title for the item
 Icon : Drawable that is used as an icon. Pass null for no icon.
[Met]    Size() As Int    ' Returns the number of items in the menu
[Met]    SetGroupCheckable(GroupId As Int, Checkable As Boolean, Exclusive As Boolean)    ' Make all items in the group checkable
 
 GroupId : Id of the group
 Checkable : True or False to make the group checkable or not
 Exclusive : If set to True only one item can be checked at a time. All other items will be unchecked.
[Met]    IsInitialized() As Boolean 
[Met]    RemoveGroup(GroupId As Int)    ' Remove the group from the menu
 
 GroupId : the group to remove
[Met]    SetGroupEnabled(GroupId As Int, Enable As Boolean)    ' Make the given group enabled/disabled
 
 GroupId : Id of the group
 Enable : True or False to enable/disable the group
[Met]    Add2(ItemId As Int, SortOrder As Int, Title As CharSequence, Icon As Drawable) As ACMenuItem    ' Add a menu item to the menu
 
 ItemId : Id for the item
 SortOrder : Sort order id
 Title : Title for the item
 Icon : Drawable that is used as an icon. Pass null for no icon.
[Met]    Clear()    ' Clears all menu items from the menu.
[Met]    GetItem(Index As Int) As ACMenuItem    ' returns the item with the given index.
[Met]    RemoveItem(ItemId As Int)    ' Remove Item from menu

ItemId : item to be removed
[Met]    AddSubMenu(GroupId As Int, ItemId As Int, SortOrder As Int, Title As CharSequence) As ACSubMenu    ' Add a Submenu to the menu.
 
 GroupId : Id for the group
 ItemId : Id for the item
 SortOrder : Sort order id
 Title : title of the menu
[Met]    FindItem(ItemId As Int) As ACMenuItem    ' returns the item with the given Id. Returns null if the item cannot be found.

ItemId : Id of the item to be searched for.
[Met]    SetGroupVisible(GroupId As Int, Visible As Boolean)    ' Make the given group visible/invisible
 
 GroupId : Id of the group
 Visible : True or False to make the group visible/invisible
[Met]    Close()    ' Close the menu if it is open.
[Met]    AddWithGroup(GroupId As Int, ItemId As Int, SortOrder As Int, Title As CharSequence, Icon As Bitmap) As ACMenuItem    ' Add a menu item to the menu and put this item into a group

 GroupId : Id of the group
 ItemId : Id for the item
 Title : Title for the item
 Icon : Bitmap that is used as an icon. Pass null for no icon.

' === CLASE: ACMenuItem (de.amberhome.objects.appcompat.ACMenuItemWrapper) ===
[Prop:W] ActionView As View    ' Set an ActionView for this menu item.
[Prop:RW] Enabled As Boolean    ' Enable/disable the item
[Prop:RW] Title As String    ' Sets/gets the title of the menu
[Prop:R] SubMenu As ACSubMenu    ' Gets the Submenu of this item if it has one.
[Prop:R] GroupId As Int    ' Gets the group id of the item.
[Prop:RW] Checked As Boolean    ' Check the item
[Prop:W] ShowAsAction As Int    ' Show menu item as action if possible.
[Prop:W] SearchView As ACSearchView    ' Connects a SearchView to this MenuItem.
 
 SearchView: Instance of a SearchView object
[Prop:RW] Visible As Boolean    ' Show/hide the item
[Prop:RW] ItemCollapsed As Boolean    ' Set/get the item to collapsed mode. (For the SearchView for example)
[Prop:RW] Icon As Drawable    ' Sets or gets the Icon for the menu item.
 
 Icon : Icon drawable
[Prop:RW] Checkable As Boolean    ' Make the item checkable
[Prop:R] Id As Int    ' Gets the item id
[Met]    IsInitialized() As Boolean 

' === CLASE: ACFlatButton (de.amberhome.objects.appcompat.ACFlatButtonWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:RW] Background As Drawable 
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] TextSize As Float 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:W] ButtonColor As Int    ' Change the Button Color
[Prop:RW] Ellipsize As String 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Prop:W] SingleLine As Boolean 
[Prop:RW] Gravity As Int 
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object
[Met]    SetTextSizeAnimated(arg0 As Int, arg1 As Float) 
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SetTextColorAnimated(arg0 As Int, arg1 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Initialize2(EventName As String, Style As String)    ' Initializes the object
[Met]    SetButtonColors(PressedColor As Int, EnabledColor As Int, DisabledColor As Int)    ' Change the Button Colors
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will
 only be applied when running on Android 3+ devices.

 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  Click.Trim()
[Event]  Down.Trim()
[Event]  LongClick.Trim()
[Event]  Up.Trim()

' === CLASE: ACEditText (de.amberhome.objects.appcompat.ACEditTextWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:W] Wrap As Boolean 
[Prop:W] ForceDoneButton As Boolean 
[Prop:RW] Hint As String 
[Prop:R] Parent As Object 
[Prop:RW] SelectionStart As Int 
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:RW] TextColor As Int 
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Prop:RW] Gravity As Int 
[Prop:RW] HintColor As Int 
[Prop:RW] Background As Drawable 
[Prop:RW] Typeface As Typeface 
[Prop:W] Color As Int 
[Prop:RW] TextSize As Float 
[Prop:RW] Enabled As Boolean 
[Prop:W] PasswordMode As Boolean 
[Prop:RW] Text As String 
[Prop:RW] Ellipsize As String 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] InputType As Int 
[Prop:RW] Tag As Object 
[Prop:W] SingleLine As Boolean 
[Prop:R] SelectionLength As Int 
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    setTintColor(DefaultColor As Int, FocusedColor As Int, DisabledColor As Int) 
[Met]    IsInitialized() As Boolean 
[Met]    SelectAll() 
[Met]    Initialize(EventName As String) 
[Met]    SetTextSizeAnimated(arg0 As Int, arg1 As Float) 
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SetTextColorAnimated(arg0 As Int, arg1 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    SetSelection(arg0 As Int, arg1 As Int) 
[Met]    Initialize2(EventName As String, Style As String) 
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
 
 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  EnterPressed.Trim()
[Event]  FocusChanged (HasFocus As Boolean).Trim()
[Event]  TextChanged (Old As String, New As String).Trim()

' === CLASE: ACColoredButton (de.amberhome.objects.appcompat.ACColoredButtonWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:RW] Background As Drawable 
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] TextSize As Float 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:W] ButtonColor As Int    ' Change the Button Color
[Prop:RW] Ellipsize As String 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Prop:W] SingleLine As Boolean 
[Prop:RW] Gravity As Int 
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object
[Met]    SetTextSizeAnimated(arg0 As Int, arg1 As Float) 
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SetTextColorAnimated(arg0 As Int, arg1 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Initialize2(EventName As String, Style As String)    ' Initializes the object
[Met]    SetButtonColors(PressedColor As Int, EnabledColor As Int, DisabledColor As Int)    ' Change the Button Colors
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will
 only be applied when running on Android 3+ devices.

 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  Up.Trim()
[Event]  Down.Trim()
[Event]  Click.Trim()
[Event]  LongClick.Trim()

' === CLASE: ACCheckBox (de.amberhome.objects.appcompat.ACCheckBoxWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:RW] Background As Drawable 
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] TextSize As Float 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:RW] Checked As Boolean 
[Prop:RW] Ellipsize As String 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Prop:W] SingleLine As Boolean 
[Prop:RW] Gravity As Int 
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object
[Met]    SetTextSizeAnimated(arg0 As Int, arg1 As Float) 
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SetTextColorAnimated(arg0 As Int, arg1 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Initialize2(EventName As String, Style As String)    ' Initializes the object
[Met]    SetCheckBoxColors(EnabledColor As Int, CheckedColor As Int, DisabledColor As Int)    ' Sets the Colors of the CheckBox
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
 
 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  CheckedChange(Checked As Boolean).Trim()

' === CLASE: ACButton (de.amberhome.objects.appcompat.ACButtonWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:RW] Background As Drawable 
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] TextSize As Float 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:W] ButtonColor As Int    ' Change the Button Color
[Prop:RW] Ellipsize As String 
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Prop:W] SingleLine As Boolean 
[Prop:RW] Gravity As Int 
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object
[Met]    SetTextSizeAnimated(arg0 As Int, arg1 As Float) 
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SetTextColorAnimated(arg0 As Int, arg1 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Initialize2(EventName As String, Style As String)    ' Initializes the object
[Met]    SetButtonColors(PressedColor As Int, EnabledColor As Int, DisabledColor As Int)    ' Change the Button Colors
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will
 only be applied when running on Android 3+ devices.

 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  Up.Trim()
[Event]  Down.Trim()
[Event]  Click.Trim()
[Event]  LongClick.Trim()

' === CLASE: ACActionMode (de.amberhome.objects.appcompat.ACActionModeWrapper) ===
[Prop:RW] Title As String    ' Sets or gets the Title
[Prop:RW] SubTitle As String    ' Sets or gets the SubTitle
[Met]    Start()    ' Start the ActionMode
[Met]    IsActive() As Boolean    ' returns true if the ActionMode is currently active
[Met]    Invalidate()    ' Invalidate the ActionMode and recreate the menu. If this method is called the _Prepared event is called again where the menu can be modified.
[Met]    Initialize(EventName As String)    ' Initialize the ActionMode object

EventName: Name for the Events
[Met]    Finish()    ' End the ActionMode and close the contextual ActionBar
[Event]  ItemClicked (Item As ACMenuItem).Trim()
[Event]  Created (Menu as ACMenu).Trim()
[Event]  Prepared (Menu as ACMenu).Trim()
[Event]  Closed.Trim()

' === CLASE: ACActionMenu (de.amberhome.objects.appcompat.ACActionMenuWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position
[Prop:RW] Background As Drawable 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] Enabled As Boolean 
[Prop:RW] OverflowMenuOpen As Boolean    ' Shows/hides the overflow menu or return if overflow menu is currently showing.
[Prop:RW] Top As Int    ' Gets or sets the view's top position
[Prop:W] PopupTheme As Int    ' Sets the Popup theme.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int    ' Gets or sets the view's height
[Prop:R] Menu As ACMenu    ' Gets the menu of the ActionMenu.
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int    ' Gets or sets the view's width
[Met]    DesignerCreateView(base As Panel, label As Label, props As Map)    ' This method is only for the B4A Designer. Don't call it directly
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the View position and size.
[Met]    BringToFront() 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fade the view in or out
[Met]    RemoveView() 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidate part of the object
[Met]    Invalidate2(Rect As Rect)    ' Invalidate a rectangualar part of the object
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Animate the color to a new value
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
 
 Duration - duration of the layout change
[Met]    RequestFocus() As Boolean 
[Event]  MenuItemClick (Item as ACMenuItem).Trim()

' === CLASE: ACActionBar (de.amberhome.objects.appcompat.ACActionBar) ===
[Prop:RW] Subtitle As String    ' Sets or gets the subtitle of the ActionBar
[Prop:RW] Elevation As Float    ' Sets or gets the elevation of the ActionBar. Does only have an effect on Android 5.0 and above.
[Prop:W] TitleVisible As Boolean    ' Show/Hide the title
[Prop:W] ShowUpIndicator As Boolean 
[Prop:W] UpIndicatorDrawable As Drawable    ' Set the up indicator drawable. Useful for implementing the
 NavigationDrawer pattern.
 
 Icon: Drawable to be used for the Icon
[Prop:RW] Title As String    ' Sets or gets the title of the ActionBar
[Prop:W] Icon As Drawable    ' Set the icon of the ActionBar
 
 Drawable to be used for the Home Icon
[Prop:W] UpIndicatorBitmap As Bitmap    ' Set the up indicator bitmap. Useful for implementing the
 NavigationDrawer pattern.
 
 Bitmap: Bitmap to be used for the Icon
[Prop:W] HomeVisible As Boolean    ' Show/Hide the home icon
[Prop:W] Logo As Drawable    ' Set a logo as icon
[Met]    Hide()    ' Hide the ActionBar
[Met]    IsShowing() As Boolean    ' Returns if the ActionBar is currently hidden or not.
[Met]    Show()    ' Show the ActionBar
[Met]    Initialize()    ' Initializes the object

' ######################################################################
' LIBRERÃA: Audio (v1.71)
' ######################################################################

' === CLASE: VideoView (anywheresoftware.b4a.audio.VideoViewWrapper) ===
[Prop:RW] Left As Int 
[Prop:RW] Background As Drawable 
[Prop:RW] Position As Int    ' Gets or sets the playing position (in milliseconds).
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] Enabled As Boolean 
[Prop:R] Duration As Int    ' Gets the video duration in milliseconds.
[Prop:W] MediaControllerEnabled As Boolean    ' Sets whether the media controller is enabled. It is enabled by default.
Note that the media player gets attached to the VideoView parent.
[Prop:RW] Top As Int 
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int 
[Met]    Pause()    ' Pauses the playback.
[Met]    Stop()    ' Stops the playback.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initialize the objects and sets the name of the subs that will handle the events.
[Met]    LoadVideo(Dir As String, FileName As String)    ' Loads a video file and prepares it for playing.
It is not possible to load files from the assets folder.
Advanced: you can pass "http" to the Dir parameter and then a full URL (including http) to the FileName.
In this case the online video will be streamed. Note that you need to add the INTERNET permission for this to work.
[Met]    BringToFront() 
[Met]    SetLayout(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(arg0 As Int, arg1 As Boolean) 
[Met]    RemoveView() 
[Met]    Invalidate3(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    Invalidate2(arg0 As Rect) 
[Met]    SetColorAnimated(arg0 As Int, arg1 As Int, arg2 As Int) 
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Play()    ' Starts or resumes playing.
[Met]    Invalidate() 
[Met]    toString() As String 
[Met]    IsPlaying() As Boolean    ' Tests whether the video is currently playing.
[Met]    SetLayoutAnimated(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int) 
[Met]    RequestFocus() As Boolean 
[Event]  Complete.Trim()

' === CLASE: SoundPool (anywheresoftware.b4a.audio.SoundPoolWrapper) ===
[Met]    Load(Dir As String, File As String) As Int    ' Loads a sound file and returns the sound LoadId.
Example:<code>
Dim LoadId As Int
LoadId = SP.Load(File.DirAssets, "sound.wav")</code>
[Met]    Pause(PlayId As Int)    ' Pauses the stream with the given PlayId.
[Met]    Stop(PlayId As Int)    ' Stops the stream with the given PlayId.
[Met]    SetRate(PlayId As Int, Rate As Float)    ' Sets the rate of the stream with the given PlayId. Value is between 0 to 2.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(MaxStreams As Int)    ' Initializes the SoundPool and sets the maximum number of simultaneous streams.
[Met]    Play(LoadId As Int, LeftVolume As Float, RightVolume As Float, Priority As Int, Loop As Int, Rate As Float) As Int    ' Plays the sound with the matching LoadId and returns the PlayId. Returns 0 if there was an error.
LoadId - The value returned when loading the file.
LeftVolume / RightVolume - The volume value (0 - 1)
Priority - A priority value which you assign to this sound. The higher the value the higher the priority.
When the number of simultaneous streams is higher than the value set in Initialize the lowest priority stream will be stopped.
Loop - Number of times to repeat. Pass -1 to repeat indefinitely.
Rate - Playback rate (0 - 2).
[Met]    Unload(LoadId As Int)    ' Unloads the stream with the given LoadId.
[Met]    SetVolume(PlayId As Int, Left As Float, Right As Float)    ' Sets the volume of the stream with the given PlayId. Values are between 0 to 1.
[Met]    Release()    ' Releases all resources allocated to this object.
[Met]    Resume(PlayId As Int)    ' Resumes the stream with the given PlayId.

' === CLASE: MediaPlayerStream (anywheresoftware.b4a.audio.MediaPlayerStreamWrapper) ===
[Prop:RW] Looping As Boolean 
[Prop:R] Duration As Int 
[Met]    Play() 
[Met]    Load(URL As String)    ' Starts loading the resource from the given URL.
StreamReady event will be raised when the stream is ready.
[Met]    Pause() 
[Met]    SetVolume(Right As Float, Left As Float)    ' Sets the playing volume for each channel. The value should be between 0 to 1.
[Met]    Stop() 
[Met]    IsInitialized() As Boolean 
[Met]    IsPlaying() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object.
EventName - Name of Subs that will handle the events.
[Met]    Release() 
[Event]  StreamReady.Trim()
[Event]  StreamError (ErrorCode As String, ExtraData As Int).Trim()
[Event]  StreamBuffer(Percentage As Int).Trim()
[Event]  Complete.Trim()

' === CLASE: JetPlayer (anywheresoftware.b4a.audio.JetPlayerWrapper) ===
[Prop:R] MaxTracks As Int    ' Returns the maximum number of simultaneous tracks.
[Met]    Pause()    ' Pauses playback.
[Met]    SetTrackMute(Track As Int, Mute As Boolean, Sync As Boolean)    ' Similar to SetMute but only changes the state of a single track.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object and sets the Subs that will handle the JetPlayer events.
[Met]    QueueSegment(SegmentNum As Int, LibNum As Int, RepeatCount As Int, Transpose As Int, MuteArray As Boolean(), UserId As Byte)    ' Adds a segment to the queue. No more than 3 segments are allowed.
SegmentNum - The segment identifier.
LibNum - The index of the sound bank associated with this segment. Pass -1 if there is no sound bank.
RepeatCount - Number of times the segment will be repeated. 0 means that it will be played once. Pass -1 to repeat indefinitely.
Transpose - The pitch transition. Should be between -12 to 12.
MuteArray - An array of booleans that sets the mute value of each track. The array length must be equal to MaxTracks value.
UserId - An id given to this segment. When the current segment changes the CurrentUserIdChanged event is raised with this id
(assuming that the id of the previous segment was different).
[Met]    Play()    ' Starts playing the segments queue.
[Met]    LoadFile(Dir As String, File As String)    ' Loads a jet file.
[Met]    ClearQueue()    ' Clears the segments queue.
[Met]    CloseFile()    ' Closes the resources related to the loaded file.
[Met]    SetMute(MuteArray As Boolean(), Sync As Boolean)    ' Sets the tracks mute state.
MuteArray - An array of booleans that sets the mute state of each track. The array length must be equal to MaxTracks value.
Sync - If false the change will be applied as soon as possible, otherwise the change will be applied at the start of the next segment or next repeat.
[Met]    Release()    ' Releases all resources allocated for the JetPlayer.
[Event]  QueuedSegmentsCountChanged (Count As Int).Trim()
[Event]  CurrentUserIdChanged (UserId As Int, RepeatCount As Int).Trim()

' === CLASE: Beeper (anywheresoftware.b4a.audio.Beeper) ===
[Met]    Beep()    ' Plays the sound.
[Met]    Initialize2(Duration As Int, Frequency As Int, VoiceChannel As Int)    ' Similar to Initialize. Allows you to set the volume channel.
[Met]    Initialize(Duration As Int, Frequency As Int)    ' Initializes the object with the given duration measured in milliseconds and the given frequency measured in Hertz.
The music volume channel will be used.
[Met]    Release()    ' Releases the resources used by this beeper.

' === CLASE: AudioStreamer (anywheresoftware.b4a.audio.AudioStreamer) ===
[Prop:R] PlayerBufferSize As Int    ' Returns the player buffer size. This is the maximum size that can be written at once.
[Met]    StopRecording()    ' Stops recording.
[Met]    StartPlaying()    ' Starts playing. You should call Write to write the PCM data while playing is in progress.
[Met]    Write(Data As Byte()) As Boolean    ' Writes the data to the player queue. The array size must be smaller than PlayerBufferSize.
Returns False if the internal queue is full. In that case the data was not written.
Writing Null to the queue will stop the player when the message is processed and then raise the PlaybackComplete event.
[Met]    Initialize2(AudioSource As Int, EventName As String, SampleRate As Int, Mono As Boolean, Encoding As Int, VolumeChannel As Int)    ' Similar to Initialize. Allows you to set the audio source.
The values are listed <link>here|http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html</link>.
[Met]    StopPlaying()    ' Stops playing.
[Met]    Initialize(EventName As String, SampleRate As Int, Mono As Boolean, Encoding As Int, VolumeChannel As Int)    ' Initializes the object.
EventName - Sets the subs that will handle the events.
SampleRate - Sample rate in Hz. Common values: 44100, 22050 and 11025.
Mono - True for mono false for stereo.
Encoding - 8 for 8 bit or 16 for 16 bit. <b>Only 16 bit is supported for now.</b>
VolumeChannel - The output channel. One of the VOLUME constants.
[Met]    StartRecording()    ' Starts recording. The RecordBuffer event will be raised during the record.
[Event]  RecordBuffer (Data() As Byte).Trim()
[Event]  PlaybackComplete.Trim()
[Event]  Error.Trim()

' === CLASE: AudioRecordApp (anywheresoftware.b4a.audio.AudioRecordApp) ===
[Met]    Record(Dir As String, FileName As String)    ' Calls the recording application.
Dir and FileName set the output file location.
[Met]    Initialize(EventName As String)    ' Initializes the object and sets the sub that will handle the event.
[Event]  RecordComplete (Success As Boolean).Trim()

' === CLASE: VideoRecordApp (anywheresoftware.b4a.audio.AudioRecordApp.VideoRecordApp) ===
[Met]    Record(Dir As String, FileName As String)    ' <b>Will not work on Android 7+ devices.</b> Use Record3 instead.
[Met]    Initialize(EventName As String)    ' Initializes the object and sets the sub that will handle the event.
[Met]    Record3(Dir As String, FileName As String, MaxLengthSeconds As Int, Uri As Uri)    ' Calls the recording app. The RecordComplete event will be raised.
Dir / FileName - Video output file.
MaxLengthSeconds - Sets a flag that requests the video duration to be limited. Pass -1 for no limits.
Uri - FileProvider output file URI.
[Met]    Record2(Dir As String, FileName As String, MaxLengthSeconds As Int)    ' <b>Will not work on Android 7+ devices.</b> Use Record3 instead.
[Event]  RecordComplete (Success As Boolean).Trim()

' ######################################################################
' LIBRERÃA: B4XEncryption (v1.0)
' ######################################################################

' === CLASE: B4XCipher (anywheresoftware.b4a.object.B4XEncryption) ===
[Met]    Decrypt(Data As Byte(), Password As String) As Byte()    ' Decrypts the given data with the given password.
[Met]    Encrypt(Data As Byte(), Password As String) As Byte()    ' Encrypts the given data with the given password.

' ######################################################################
' LIBRERÃA: BitmapCreator (v4.73)
' ######################################################################

' === CLASE: PremultipliedColor (b4a.example.bitmapcreator._premultipliedcolor) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: ARGBColor (b4a.example.bitmapcreator._argbcolor) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: DrawTask (b4a.example.bitmapcreator._drawtask) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: CompressedBC (b4a.example.bitmapcreator._compressedbc) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: InternalCompressedBCCache (b4a.example.bitmapcreator._internalcompressedbccache) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: InternalAntiAliasingBuffer (b4a.example.bitmapcreator._internalantialiasingbuffer) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: InternalBCColumn (b4a.example.bitmapcreator._internalbccolumn) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: BitmapCreator (b4a.example.bitmapcreator) ===
[Prop:R] _bitmap As B4XBitmap    ' Converts the bytes buffer to a bitmap.
[Prop:R] _buffer As Byte()    ' Gets the internal buffer.
[Met]    IsInitialized() As Boolean    ' Tests whether the object has been initialized.
[Met]    _argbtocolor(ARGB As _argbcolor) As Int    ' Converts an ARGB value to a color int value.
[Met]    _argbtopremultipliedcolor(ARGB As _argbcolor, PM As _premultipliedcolor) As _premultipliedcolor    ' Converts an ARGB color to PremultipliedColor.
The Result parameter will hold the output.
[Met]    _asyncdrawarc(X As Float, Y As Float, Radius As Float, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int, StartingAngle As Float, EndAngle As Float) As _drawtask    ' Asynchronously draws an arc. Returns a DrawTask that should be added to the list of drawing tasks.
[Met]    _asyncdrawcircle(X As Float, Y As Float, Radius As Float, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int) As _drawtask    ' Asynchronously draws a circle. Returns a DrawTask that should be added to the list of drawing tasks.
[Met]    _asyncdrawline(X0 As Float, Y0 As Float, X1 As Float, Y1 As Float, Brush As _bcbrush, StrokeWidth As Int) As _drawtask    ' Asynchronously draws a line. Returns a DrawTask that should be added to the list of drawing tasks.
[Met]    _asyncdrawpath(Path As bcpath, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int) As _drawtask    ' Asynchronously draws a path. Returns a DrawTask that should be added to the list of drawing tasks.
Note that you shouldn't modify the path while it is being drawn. You can use BCPath.Clone to create a copy.
[Met]    _asyncdrawrect(Rect As B4XRect, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int) As _drawtask    ' Asynchronously draws a rectangle. Returns a DrawTask that should be added to the list of drawing tasks.
[Met]    _asyncdrawrectrounded(Rect As B4XRect, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int, CornersRadius As Int) As _drawtask    ' Asynchronously draws a rectangle with round corners. Returns a DrawTask that should be added to the list of drawing tasks.
[Met]    _blendpixel(Source As bitmapcreator, SrcX As Int, SrcY As Int, TargetX As Int, TargetY As Int) As String    ' Copies a single pixel from Source to this BC. If the pixel is non-opaque then it will blend with the current pixel.
[Met]    _blendpixel2(SrcPM As _premultipliedcolor, TargetX As Int, TargetY As Int) As String 
[Met]    _class_globals() As String 
[Met]    _colortoargb(Clr As Int, Result As _argbcolor) As _argbcolor    ' Converts color int to ARGBColor object.
The Result parameter will hold the output.
[Met]    _copypixel(Source As bitmapcreator, SrcX As Int, SrcY As Int, TargetX As Int, TargetY As Int) As String    ' Copies a single pixel from Source to this BC.
[Met]    _copypixelignoresemitransparent(Source As bitmapcreator, SrcX As Int, SrcY As Int, TargetX As Int, TargetY As Int, SkipBlending As Boolean) As String 
[Met]    _copypixelsfrombitmap(SourceBitmap As B4XBitmap) As String    ' Extracts the pixels from the SourceBitmap and copies them.
Note that the source bitmap is first resized, if needed, to match the BitmapCreator dimensions.
[Met]    _createbrushfrombitmap(Bmp As B4XBitmap) As _bcbrush    ' Creates a BCBrush from the given bitmap. You can reuse the brush.
[Met]    _createbrushfrombitmapcreator(BC As bitmapcreator) As _bcbrush    ' Creates a BCBrush from the given BitmapCreator. You can reuse the brush.
Note that the BitmapCreator is not copied.
[Met]    _createbrushfromcolor(Color As Int) As _bcbrush    ' Creates a BCBrush from the given color. You can reuse the brush.
[Met]    _createdrawtask(Source As Object, SrcRect As B4XRect, TargetX As Int, TargetY As Int, SkipBlending As Boolean) As _drawtask    ' Creates a DrawTask object.
[Met]    _drawarc(X As Float, Y As Float, Radius As Float, Color As Int, Filled As Boolean, StrokeWidth As Int, StartingAngle As Float, SweepAngle As Float) As _bcbrush    ' Draws an arc and returns the created brush.
X / Y - Center position.
Radius - Arc radius.
Color - Drawing color.
Filled - Whether to fill the arc or not.
StrokeWidth - Stroke width (for non-full shapes).
StartingAngle - Measured in degrees, starting from hour 3.
SweepAngle - Measured in degrees. Positive is clockwise.
[Met]    _drawarc2(X As Float, Y As Float, Radius As Float, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int, StartingAngle As Float, SweepAngle As Float) As _bcbrush    ' Similar to DrawArc. Expects a BCBrush instead of a color value.
[Met]    _drawbitmap(Bmp As B4XBitmap, TargetRect1 As B4XRect, SkipBlending As Boolean) As String    ' Draws a bitmap to the buffer.
SkipBlending - Whether non-opaque pixels in the source bitmap should blend with the background.
[Met]    _drawbitmapcreator(Source As bitmapcreator, SrcRect As B4XRect, TargetX As Int, TargetY As Int, SkipBlending As Boolean) As String    ' Draws the image stored in the Source BitmapCreator to this BitmapCreator.
Source - Source BitmapCreator
SrcRect - Defines the region in the Source BC that will be copied.
TargetX / TargetY - Top left point in the destination BC.
SkipBlending - Whether non-opaque pixels in the source bitmap should blend with the background.
[Met]    _drawbitmapcreatorsasync(Target As Object, EventName As String, DrawTasks As List) As String    ' Asynchronously draws all the draw tasks. Note that no other drawings should be made until the BitmapReady event is raised.
The 'bmp' parameter will not be initialized in B4J.
Target must be a class instance.
Example: <code>bc1.DrawBitmapCreatorsAsync(Me, "BC", Tasks)
Wait For BC_BitmapReady (bmp As B4XBitmap)
</code>
[Met]    _drawbitmapcreatortransformed(Task As _drawtask) As String    ' Draws a scaled and / or rotated BitmapCreator.
Task.TargetX / TargetY define the target center. This is different than the behavior in other methods.
Task.SkipBlending = True will treat all pixels with alpha > 0 as solid colors and other pixels as transparent.
[Met]    _drawcircle(X As Float, Y As Float, Radius As Float, Color As Int, Filled As Boolean, StrokeWidth As Int) As _bcbrush    ' Draws a a circle. Returns the color brush.
[Met]    _drawcircle2(X As Float, Y As Float, Radius As Float, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int) As _bcbrush    ' Draws a circle.
[Met]    _drawcompressedbitmap(Source As _compressedbc, SrcRect As B4XRect, TargetX As Int, TargetY As Int) As String    ' Draws a CompressedBC object created with BitmapCreator.ExtractCompressBC.
[Met]    _drawline(X0 As Float, Y0 As Float, X1 As Float, Y1 As Float, Color As Int, StrokeWidth As Int) As _bcbrush    ' Draws a line. Returns the color brush.
[Met]    _drawline2(X0 As Float, Y0 As Float, X1 As Float, Y1 As Float, Brush As _bcbrush, StrokeWidth As Int) As _bcbrush    ' Draws a line.
[Met]    _drawpath(Path As bcpath, Color As Int, Filled As Boolean, StrokeWidth As Int) As _bcbrush    ' Draws a BCPath. Don't confuse with B4XPath or Path.
Returns the created color brush.
[Met]    _drawpath2(Path As bcpath, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int) As _bcbrush    ' Draws a BCPath. Don't confuse with B4XPath or Path.
Non-full paths: Connection segments are drawn between each two lines. You can disable it by setting BCPath.DrawConnectionSegments to False.
This will make the drawing twice as fast (in most cases it will be fast enough anyway).
[Met]    _drawrect(Rect As B4XRect, Color As Int, Filled As Boolean, StrokeWidth As Int) As _bcbrush    ' Draws a rectangle. Returns the color brush.
[Met]    _drawrect2(Rect As B4XRect, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int) As _bcbrush    ' Draws a rectangle.
[Met]    _drawrectrounded(Rect As B4XRect, Color As Int, Filled As Boolean, StrokeWidth As Int, CornersRadius As Int) As _bcbrush    ' Draws a rectangle with round corners. Returns the color brush.
Note that CornersRadius is expected to be larger than StrokeWidth for unfilled shapes.
[Met]    _drawrectrounded2(Rect As B4XRect, Brush As _bcbrush, Filled As Boolean, StrokeWidth As Int, CornersRadius As Int) As _bcbrush    ' Draws a rectangle with round corners.
[Met]    _drawrotatedcbc(cbc As _compressedbc, Degrees As Float, Width As Int, Height As Int, AABuffer As _internalantialiasingbuffer) As String    ' Rotates with antialiasing.
[Met]    _extractcompressedbc(Rect As B4XRect, Cache As _internalcompressedbccache) As _compressedbc 
[Met]    _fillgradient(GradColors As Int(), Rect As B4XRect, Orientation As String) As String    ' Fills the rectangle with a gradient. Skips blending.
GradColors - An array of two or more colors that define the gradient.
Rect - The region that will be filled.
Orientation - One of the following: TL_BR, TOP_BOTTOM, TR_BL, LEFT_RIGHT, RIGHT_LEFT, BL_TR, BOTTOM_TOP, BR_TL and RECTANGLE.
[Met]    _fillradialgradient(GradColors As Int(), Rect As B4XRect) As String    ' Fills the rectangle with a radial gradient. Skips blending.
[Met]    _fillrect(Color As Int, Rect As B4XRect) As String    ' DEPRECATED: use DrawRect instead.
[Met]    _flipcompressedbitmap(Source As _compressedbc, Horizontal As Boolean, Vertical As Boolean) As _compressedbc 
[Met]    _getargb(x As Int, y As Int, Result As _argbcolor) As _argbcolor    ' Gets the color of the given point as an ARGB color.
The Result parameter stores the output.
[Met]    _getbitmap() As B4XBitmap    ' Converts the bytes buffer to a bitmap.
[Met]    _getbuffer() As Byte()    ' Gets the internal buffer.
[Met]    _getcolor(x As Int, y As Int) As Int    ' Gets the color of the given point as an int value.
[Met]    _getpremultipliedcolor(x As Int, y As Int, Result As _premultipliedcolor) As _premultipliedcolor    ' Gets the color of the given point as a premultiplied color. No conversion is required for this format.
The Result parameter stores the output.
[Met]    _initialize(Width As Int, Height As Int) As String    ' Initializes the object and sets the bitmap dimensions.
Note that XUI library must be referenced as well.
[Met]    _istransparent(x As Int, y As Int) As Boolean    ' Tests whether a given point is completely transparent.
[Met]    _replacesemitransparentpixels(NewColor As Int, Rect As B4XRect) As String    ' Replaces all semi-transparent pixels in the Rect with NewColor.
This can be useful to remove antialiasing effects.
[Met]    _setargb(x As Int, y As Int, ARGB As _argbcolor) As String    ' Sets the color of the specified point.
[Met]    _setbitmaptoimageview(Bitmap As B4XBitmap, ImageView As B4XView) As String    ' Similar to B4XView.SetBitmap. The difference is in B4A where the Gravity is set to FILL instead of CENTER.
This is useful when you want to use a scaled down bitmap.
In most cases you should use this method instead of B4XView.SetBitmap.
[Met]    _setcolor(x As Int, y As Int, Clr As Int) As String    ' Sets the color of the given pixel.
[Met]    _sethsv(x As Int, y As Int, alpha As Int, h As Int, s As Float, v As Float) As String    ' Sets the color of the specified point.
[Met]    _setpremultipliedcolor(x As Int, y As Int, Premultiplied As _premultipliedcolor) As String    ' Sets the color of the specified point.
[Event]  BitmapReady (bmp As B4XBitmap).Trim()

' === CLASE: InternalBCPathColumnData (b4a.example.bcpath._internalbcpathcolumndata) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: InternalBCPathPointData (b4a.example.bcpath._internalbcpathpointdata) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: BCBrush (b4a.example.bcpath._bcbrush) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: InternalCanvasDrawTask (b4a.example.bcpath._internalcanvasdrawtask) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: BCPath (b4a.example.bcpath) ===
[Met]    IsInitialized() As Boolean    ' Tests whether the object has been initialized.
[Met]    _class_globals() As String 
[Met]    _clone() As bcpath    ' Creates a copy of the path. This is used by BitmapCreator.AsyncDrawPath.
[Met]    _findboundingrect() As B4XRect    ' Returns the path bounding rectangle.
[Met]    _initialize(X As Float, Y As Float) As bcpath    ' Initializes the path and sets the first point.
[Met]    _invalidate() As String    ' Call Invalidate if you modifed the Points list directly.
[Met]    _lineto(X As Float, Y As Float) As bcpath    ' Adds a line to the given point.
[Met]    _prepareforfilling() As String    ' Internal sub.
[Met]    _removelastpoint() As String    ' Removes the last point.
[Met]    _reset(X As Float, Y As Float) As bcpath    ' Resets the path.

' ######################################################################
' LIBRERÃA: BLE2 (v1.39)
' ######################################################################

' === CLASE: BleManager2 (anywheresoftware.b4a.objects.BleManager2) ===
[Prop:R] State As Int    ' Returns the current Bluetooth adapter state.
[Met]    Connect(DeviceId As String)    ' Connects to a device with the given id. You can only connect to previously discovered devices.
Note that the Disconnected event will be raised if the connection has failed.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object. The StateChanged event will be raised after this method with the current BLE state.
[Met]    SetNotify(Service As String, Characteristic As String, Notify As Boolean) As Boolean    ' Adds or removes a notification listener that monitor value changes.
The DataAvailable event will be raised when the value of the characteristic changes.
Returns True if successful.
Service - The service id (as returned in the Connected event).
Characteristic - The characteristic id.
Notify - True to add a listener, false to remove it.
[Met]    GetCharacteristicProperties(Service As String, Characteristic As String) As Int    ' Returns a numeric value from which you can find the properties of the specified characteristic.
[Met]    ReadRemoteRssi()    ' Reads the RSSI value of a connected device. The RssiAvailable event will be raised when the value is available.
[Met]    StopScan()    ' Stops scanning for new devices.
[Met]    SetIndication(Service As String, Characteristic As String, Notify As Boolean) As Boolean    ' Similar to SetNotify. Sets the descriptor value to 2 (indication) instead of 1 (notification).
Returns True if successful.
[Met]    Disconnect() 
[Met]    Scan2(ServiceUUIDs As List, AllowDuplicates As Boolean)    ' Similar to Scan. If AllowDuplicates is true then the DeviceFound event will be raised whenever a packet is received.
[Met]    GetRecordsFromAdvertisingData(AdvertisingData As Map, Key As Int) As List    ' Returns a List with all the records with the specified type.
This is useful when there could be several records with the same type. 
Each item in the list is an array of bytes.
[Met]    RequestMtu(MTU As Int) As Boolean    ' Requests to change the MTU size (packet size). The MtuChanged event will be raised.
Should be called after a connection is established.
Returns True if the request was sent successfully.
Only available on Android 5+. Does nothing on older versions.
[Met]    Scan(ServiceUUIDs As List)    ' Starts scanning for devices. The DeviceFound event will be raised when a device is found.
ServiceUUIDs - A list (or array) with service uuids. Devices that don't advertise these uuids will not be discovered.
Pass Null to discover all devices.
[Met]    Connect2(DeviceId As String, AutoConnect As Boolean)    ' Similar to Connect. Allows you to disable auto connection.
[Met]    ReadData(Service As String)    ' Asynchronously reads all characteristics from the given service. The DataAvailable will be raised when the data is available.
[Met]    ReadData2(Service As String, Characteristic As String)    ' Asynchronously reads the value of the specified characteristic.
The DataAvailable will be raised when the data of this characteristic is available.
[Met]    WriteData(Service As String, Characteristic As String, Data As Byte())    ' Writes the data to the specified characteristic.
[Event]  StateChanged (State As Int).Trim()
[Event]  DeviceFound (Name As String, DeviceId As String, AdvertisingData As Map, RSSI As Double).Trim()
[Event]  Disconnected.Trim()
[Event]  Connected (Services As List).Trim()
[Event]  DataAvailable (ServiceId As String, Characteristics As Map).Trim()
[Event]  WriteComplete (Characteristic As String, Status As Int).Trim()
[Event]  RssiAvailable (Success As Boolean, RSSI As Double).Trim()
[Event]  MtuChanged (Success As Boolean, MTU As Int).Trim()

' ######################################################################
' LIBRERÃA: ByteConverter (v1.1)
' ######################################################################

' === CLASE: ByteConverter (anywheresoftware.b4a.agraham.byteconverter.ByteConverter) ===
[Prop:R] Version As Double    ' Returns the version number of this library.
[Prop:RW] LittleEndian As Boolean    ' Gets or sets the endian-ness of byte conversions to and from other primitive values.
The default for Android is Big_Endian, Windows PCs are Little_Endian.
[Met]    CharsFromBytes(bytes As Byte()) As Char()    ' Takes an array of Bytes and returns an array of Chars converted from that array.
[Met]    ShortsToBytes(vals As Short()) As Byte()    ' Takes an array of Shorts and returns an array of Bytes converted from that array.
[Met]    IntsToBytes(vals As Int()) As Byte()    ' Takes an array of Ints and returns an array of Bytes converted from that array.
[Met]    DoublesFromBytes(bytes As Byte()) As Double()    ' Takes an array of Bytes and returns an array of Doubles converted from that array.
[Met]    StringToBytes(str As String, encoding As String) As Byte()    ' Returns an array of bytes containing the the characters in str converted to bytes according to encoding.
[Met]    HexToBytes(hex As String) As Byte()    ' Returns an array of bytes containing the data represented by a hexadecimal string. The string can be upper or lower case.
[Met]    FloatsToBytes(vals As Float()) As Byte()    ' Takes an array of Floats and returns an array of Bytes converted from that array.
[Met]    FromChars(chars As Char()) As String    ' Returns a string converted from the specified array of characters.
[Met]    StringFromBytes(bytes As Byte(), encoding As String) As String    ' Returns a string containing the bytes in the array interpreted as characters according to encoding.
[Met]    ArrayCopy(src As Object, srcOffset As Int, dest As Object, destOffset As Int, count As Int)    ' Copies count elements from the srcoffset in the src array to destoffset in the dest array.
The arrays need to be of the same type otherwise an ArrayStoreException is thrown.
[Met]    ToChars(str As String) As Char()    ' Returns an array of chars comprising the characters of the specified string
[Met]    DoublesToBytes(vals As Double()) As Byte()    ' Takes an array of Doubles and returns an array of Bytes converted from that array.
[Met]    SupportedEncodings() As String()    ' Returns a string array containing all the values for encodings that are supported by this system.
[Met]    ShortsFromBytes(bytes As Byte()) As Short()    ' Takes an array of Bytes and returns an array of Shorts converted from that array.
[Met]    IntsFromBytes(bytes As Byte()) As Int()    ' Takes an array of Bytes and returns an array of Ints converted from that array.
[Met]    CharsToBytes(vals As Char()) As Byte()    ' Takes an array of Chars and returns an array of Bytes converted from that array.
[Met]    FloatsFromBytes(bytes As Byte()) As Float()    ' Takes an array of Bytes and returns an array of Floats converted from that  array.
[Met]    LongsToBytes(vals As Long()) As Byte()    ' Takes an array of Longs and returns an array of Bytes converted from that array.
[Met]    LongsFromBytes(bytes As Byte()) As Long()    ' Takes an array of Bytes and returns an array of Longs converted from that array.
[Met]    HexFromBytes(bytes As Byte()) As String    ' Returns a string containing the representation in hexadecimal of the bytes in a byte array.

' ######################################################################
' LIBRERÃA: Camera (v2.2)
' ######################################################################

' === CLASE: Camera (anywheresoftware.b4a.objects.CameraW) ===
[Met]    Release()    ' Releases the camera object and allows other processes to access the camera.
[Met]    Initialize(Panel As ViewGroup, EventName As String)    ' Initializes the back camera.
Panel - The preview images will be displayed on the panel.
EventName - Events subs prefix.
The Ready event will be raised when the camera has finished opening.
[Met]    TakePicture()    ' Takes a picture. When the picture is ready, the PictureTaken event will be raised.
You should not call TakePicture while another picture is currently taken.
The preview images are stopped after calling this method. You can call StartPreview to restart the preview images.
[Met]    StopPreview()    ' Stops displaying the preview images.
[Met]    StartPreview()    ' Starts displaying the preview images.
[Met]    CancelAutoFocus()    ' Cancels the auto-focus operation. Does nothing if no such operation is in progress.
[Met]    Initialize2(Panel As ViewGroup, EventName As String, CameraId As Int)    ' Same as Initialize. CameraId is the id of the hardware camera.
<b>This method is only available from Android 2.3+.</b>
[Met]    AutoFocus()    ' Starts auto-focus function. The FocusDone event will be raised when the operation completes.
You can check whether the "auto" focus mode is supported with CameraEx class.
[Event]  Ready (Success As Boolean).Trim()
[Event]  PictureTaken (Data() As Byte).Trim()
[Event]  Preview (Data() As Byte).Trim()
[Event]  FocusDone (Success As Boolean).Trim()

' ######################################################################
' LIBRERÃA: Camera2 (v1.11)
' ######################################################################

' === CLASE: Camera2 (anywheresoftware.b4a.objects.Camera2) ===
[Prop:R] CameraIDs As String()    ' Returns the ids of the available cameras.
[Prop:R] IsCameraOpen As Boolean 
[Met]    CreateSurface() As ConcreteView    ' Creates the surface view (TextureView) that will be used to display the preview frames.
You need to add it to the layout and wait for the SurfaceReady event.
[Met]    GetSupportedPreviewSizes(Id As String) As List    ' Returns a list with the supported preview sizes.
[Met]    FindCameraId(Front As Boolean) As String    ' Returns the relevant camera id. Returns an empty string if not found.
[Met]    Stop()    ' Stops the camera.
[Met]    CreateCaptureBuilder() As Object    ' Creates a still capture builder.
[Met]    SetRepeatingRequest(Builder As Object) As Object    ' Sets a repeating request (preview request). Clears any previous repeating request.
Returns the CaptureRequest object.
[Met]    CreateVideoRequestBuilder() As Object 
[Met]    StartSession(Surface As TextureView, PreviewSize As CameraSize, CaptureSize As CameraSize, CaptureFormat As Int, PreviewFormat As Int, Video As Boolean)    ' Starts a capture session. The SessionConfigured event will be raised.
[Met]    Initialize(EventName As String) 
[Met]    AddCaptureRequest(Builder As Object) As Object    ' Adds a capture request.
[Met]    CreatePreviewBuilder() As Object    ' Creates a preview request builder.
[Met]    OpenCamera(Id As String)    ' Opens the camera. The CameraState event will be raised.
[Met]    AbortCaptures()    ' Cancels previous requests.
[Met]    GetSupportedCaptureSizes(Id As String) As List    ' Returns a list with the supported capture sizes.
[Met]    GetSupportedVideoSizes(Id As String) As List 
[Met]    CreateMediaRecorder(VideoSize As CameraSize, Dir As String, FileName As String) As Object 
[Met]    GetCameraCharacteristics(Id As String) As Object    ' Returns an object that holds the camera supported features.
[Event]  PictureTaken (Data() As Byte).Trim()
[Event]  CameraState (Open As Boolean).Trim()
[Event]  CameraClosed.Trim()
[Event]  SurfaceReady.Trim()
[Event]  SessionConfigured (Success As Boolean).Trim()
[Event]  PreviewCaptureComplete (CaptureResult As Object).Trim()
[Event]  PreviewTaken (Image As Object).Trim()
[Event]  CaptureComplete (CaptureResult As Object).Trim()

' === CLASE: CameraSize (anywheresoftware.b4a.objects.Camera2.CameraSizeWrapper) ===
[Prop:R] Height As Int 
[Prop:R] Width As Int 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Width As Int, Height As Int) 

' ######################################################################
' LIBRERÃA: ContentResolver (v1.5)
' ######################################################################

' === CLASE: ContentResolver (anywheresoftware.b4a.objects.ContentResolverWrapper) ===
[Met]    Initialize(EventName As String)    ' Initializes the object and sets the subs that will handle the asynchronous operations.
[Met]    UnregisterObserver(Uri As Uri) 
[Met]    UpdateAsync(Uri As Uri, Values As ContentValues, Where As String, SelectionArgs As String())    ' Starts an asynchronous update. The UpdateCompleted event will be raised when operation completes.
[Met]    Insert(Uri As Uri, Values As ContentValues) As Uri    ' Inserts a row.
Uri - The content Uri.
Values - The values to insert.
[Met]    Update(Uri As Uri, Values As ContentValues, Where As String, SelectionArgs As String()) As Int    ' Updates rows with the given values.
Uri - Content Uri.
Values - Values to update.
Where - Selection criteria.
SelectionArgs - An array of strings that replaces questions marks in the Where clause.
[Met]    Query(Uri As Uri, Projection As String(), Selection As String, SelectionArgs As String(), SortOrder As String) As Cursor    ' Queries the content provider.
Uri - Content Uri.
Project - An array of strings. The columns to return.
Selection - The criteria.
SelectionArgs - An array of strings that replace question marks in the selection string.
SortOrder - The sorting column (or empty string if sorting is not required).
[Met]    UpdateDelete(Uri As Uri, Where As String, SelectionArgs As String())    ' Starts an asynchronous delete. The DeleteCompleted event will be raised when operation completes.
[Met]    Delete(Uri As Uri, Where As String, SelectionArgs As String()) As Int    ' Deletes rows based on the given criteria.
Uri - Content Uri.
Where - The selection criteria. Can include question marks.
SelectionArgs - An array of strings that replace the question marks in the Where clause.
[Met]    InsertAsync(Uri As Uri, Values As ContentValues)    ' Starts an asynchronous insert. The InsertCompleted event will be raised when operation completes.
[Met]    RegisterObserver(Uri As Uri, NotifyForDescendents As Boolean)    ' Registers a content observer. The ObserverChange event will be raised whenever there is a change related to the given Uri.
Uri - The Uri to watch for changes.
NotifyForDescendents - Whether to listen to changes related to descendant Uris.
Example:<code>
Sub Process_Globals
	Private cr As ContentResolver
End Sub

Sub Service_Create
	Dim uri As Uri
	uri.Parse("content://com.android.contacts/contacts")
	cr.Initialize("cr")
	cr.RegisterObserver(uri, True)
End Sub

Sub cr_ObserverChange (Uri As Uri)
	Log("Contacts provider has reported a change...")
End Sub</code>
[Met]    QueryAsync(Uri As Uri, Projection As String(), Selection As String, SelectionArgs As String(), SortOrder As String) 
[Event]  QueryCompleted (Success As Boolean, Crsr As Cursor).Trim()
[Event]  InsertCompleted (Success As Boolean, Uri As Uri).Trim()
[Event]  UpdateCompleted (Success As Boolean, RowsAffected As Int).Trim()
[Event]  DeleteCompleted (Success As Boolean, RowsAffected As Int).Trim()
[Event]  ObserverChange (Uri As Uri).Trim()

' === CLASE: Uri (anywheresoftware.b4a.objects.ContentResolverWrapper.UriWrapper) ===
[Met]    FromParts(Scheme As String, SSP As String, Fragment As String)    ' Creates a new Uri from the given parts.
[Met]    ParseId() As Long    ' Returns the Id part of the current Uri.
[Met]    Parse(UriString As String)    ' Creates a new Uri from the given string.
[Met]    WithAppendedId(BaseUri As Uri, Id As Long)    ' Creates a new Uri by appending the Id to the given Uri.
[Met]    WithAppendedPath(BaseUri As Uri, PathSegment As String)    ' Creates a new Uri by appending the path to the given Uri.
[Met]    IsInitialized() As Boolean 

' === CLASE: ContentValues (anywheresoftware.b4a.objects.ContentResolverWrapper.ContentValuesWrapper) ===
[Met]    Initialize() 
[Met]    PutNull(Key As String) 
[Met]    PutInteger(Key As String, Value As Int) 
[Met]    PutBoolean(Key As String, Value As Boolean) 
[Met]    PutString(Key As String, Value As String) 
[Met]    PutBytes(Key As String, Value As Byte()) 
[Met]    PutShort(Key As String, Value As Short) 
[Met]    PutFloat(Key As String, Value As Float) 
[Met]    PutDouble(Key As String, Value As Double) 
[Met]    Remove(Key As String) 
[Met]    PutLong(Key As String, Value As Long) 
[Met]    PutByte(Key As String, Value As Byte) 
[Met]    IsInitialized() As Boolean 

' ######################################################################
' LIBRERÃA: Core (v12.2)
' ######################################################################

' === CLASE: File (anywheresoftware.b4a.objects.streams.File) ===
[Prop:R] ExternalReadable As Boolean    ' Tests whether the external storage media can be read from.
[Prop:R] ExternalWritable As Boolean    ' Tests whether the external storage media can be written to (and also read from).
[Prop:R] DirAssets As String    ' Returns a reference to the files added to the Files tab. These files are read-only.
[Prop:R] DirInternalCache As String    ' Returns the folder in the device internal storage that is used to save application cache data.
This data will be deleted automatically when the device runs low on storage.
[Prop:R] DirInternal As String    ' Returns the folder in the device internal storage that is used to save application private data.
[Prop:R] DirDefaultExternal As String    ' Returns the application default external folder which is based on the package name.
The folder is created if needed.
<b>You should use RuntimePermissions.GetSafeDirDefaultExternal instead.</b>
[Prop:R] DirRootExternal As String    ' Returns the root folder of the external storage media.
This folder requires the WRITE_EXTERNAL_STORAGE permission. Only use it if you really need to access this folder.
<b>You should probably use File.DirInternal or RuntimePermissions.GetSafeDirDefaultExternal instead.</b>
[Met]    Delete(Dir As String, FileName As String) As Boolean    ' Deletes the specified file. If the file name is a directory then it must be empty in order to be deleted.
Returns true if the file was successfully deleted.
Files in the assets folder cannot be deleted.
[Met]    IsDirectory(Dir As String, FileName As String) As Boolean    ' Tests whether the specified file is a directory.
[Met]    Size(Dir As String, FileName As String) As Long    ' Returns the size in bytes of the specified file.
This method does not support files in the assets folder.
[Met]    Combine(Dir As String, FileName As String) As String    ' Returns the full path to the given file.
This methods does not support files in the assets folder.
[Met]    MakeDir(Parent As String, Dir As String)    ' Creates the given folder (creates all folders as needed).
Example:<code>
File.MakeDir(File.DirInternal, "music/90")</code>
[Met]    ReadMap2(Dir As String, FileName As String, Map As Map) As Map    ' Similar to ReadMap. ReadMap2 adds the items to the given Map.
By using ReadMap2 with a populated map you can force the items order as needed.
Example:<code>
Dim m As Map
m.Initialize
m.Put("Item #1", "")
m.Put("Item #2", "")
m = File.ReadMap2(File.DirInternal, "settings.txt", m)</code>
[Met]    ListFiles(Dir As String) As List    ' Returns a read only list with all the files and directories which are stored in the specified path.
 An uninitialized list will be returned if the folder is not accessible.
[Met]    LastModified(Dir As String, FileName As String) As Long    ' Returns the last modified date of the specified file.
This method does not support files in the assets folder.
Example:<code>
Dim d As Long
d = File.LastModified(File.DirRootExternal, "1.txt")
Msgbox(DateTime.Date(d), "Last modified")</code>
[Met]    ReadList(Dir As String, FileName As String) As List    ' Reads the entire file and returns a List with all lines (as strings).
Example:<code>
Dim List1 As List
List1 = File.ReadList(File.DirInternal, "1.txt")
For i = 0 to List1.Size - 1
	Log(List1.Get(i))
Next </code>
[Met]    WriteMap(Dir As String, FileName As String, Map As Map)    ' Creates a new file and writes the given map. Each key value pair is written as a single line.
All values are converted to strings.
See this link for more information about the actual format: <link>Properties format|http://en.wikipedia.org/wiki/.properties</link>.
You can use File.ReadMap to read this file.
[Met]    Copy2(In As InputStream, Out As OutputStream)    ' Copies all the available data from the input stream into the output stream.
The input stream is automatically closed at the end.
[Met]    ReadMap(Dir As String, FileName As String) As Map    ' Reads the file and parses each line as a key-value pair (of strings).
See this link for more information about the actual format: <link>Properties format|http://en.wikipedia.org/wiki/.properties</link>.
You can use File.WriteMap to write a map to a file.
Note that the order of items in the map may not be the same as the order in the file.
[Met]    OpenOutput(Dir As String, FileName As String, Append As Boolean) As OutputStream    ' Opens (or creates) the specified file which is located in the Dir folder for writing.
If Append is true then the new data will be written at the end of the existing file.
[Met]    OpenInput(Dir As String, FileName As String) As InputStream    ' Opens the specified file name which is located in the Dir folder for reading.
Note that the Android file system is case sensitive.
[Met]    WriteList(Dir As String, FileName As String, List As List)    ' Writes each item in the list as a single line.
Note that a value containing CRLF will be saved as two lines (which will return two item when read with ReadList).
All values will be converted to strings.
Example:<code>
File.WriteList (File.DirInternal, "mylist.txt", List1)</code>
[Met]    WriteString(Dir As String, FileName As String, Text As String)    ' Writes the given text to a new file.
Example:<code>
File.WriteString(File.DirInternal, "1.txt", "Some text")</code>
[Met]    ReadString(Dir As String, FileName As String) As String    ' Reads the file and returns its content as a string.
Example:<code>
Dim text As String
text = File.ReadString(File.DirInternal, "1.txt")</code>
[Met]    ListFilesAsync(Dir As String) As Object    ' Asynchronous version of ListFiles. Should be used with Wait For.
Example:<code>
Wait For (File.ListFilesAsync(Dir)) Complete (Success As Boolean, Files As List)</code>
[Met]    Copy2Async(In As InputStream, Out As OutputStream) As Object    ' Asynchronously copies all the available data from the input stream into the output stream.
The input stream is automatically closed at the end.
Returns an object that should be used as the sender filter.
Example:<code>
Wait For (File.Copy2Async(in, out)) Complete (Success As Boolean)
Log("Success: " & Success)</code>
[Met]    ReadBytes(Dir As String, FileName As String) As Byte()    ' Reads the data from the given file.
[Met]    CopyAsync(DirSource As String, FileSource As String, DirTarget As String, FileTarget As String) As Object    ' Asynchronously copies the source file to the target path.
Note that it is not possible to copy files to the Assets folder.
Returns an object that should be used as the sender filter.
Example: <code>
Wait For (File.CopyAsync(File.DirAssets, "1.txt", File.DirInternal, "1.txt")) Complete (Success As Boolean)
Log("Success: " & Success)</code>
[Met]    Copy(DirSource As String, FileSource As String, DirTarget As String, FileTarget As String)    ' Copies the specified source file to the target file name.
Note that it is not possible to copy files to the Assets folder.
[Met]    Exists(Dir As String, FileName As String) As Boolean    ' Returns true if the specified FileName exists in the specified Dir.
Note that the Android file system is case sensitive.
This method should not be used with File.DirAssets.

Example:<code>
If File.Exists(File.DirInternal, "MyFile.txt") Then ...</code>
[Met]    GetText(Dir As String, FileName As String) As String    ' Reads the entire file and returns its text.
The file is assumed to be encoded with UTF8.
[Met]    WriteBytes(Dir As String, FileName As String, Data As Byte())    ' Writes the data to the given file.

' === CLASE: InputStream (anywheresoftware.b4a.objects.streams.File.InputStreamWrapper) ===
[Met]    BytesAvailable() As Int    ' Returns an estimation of the number of bytes available without blocking.
[Met]    Close()    ' Closes the stream.
[Met]    ReadBytes(Buffer As Byte(), StartOffset As Int, MaxCount As Int) As Int    ' Reads up to MaxCount bytes from the stream and writes it to the given Buffer.
The first byte will be written at StartOffset.
Returns the number of bytes actually read.
Returns -1 if there are no more bytes to read.
Otherwise returns at least one byte.
Example:<code>
Dim buffer(1024) As byte
count = InputStream1.ReadBytes(buffer, 0, buffer.length)</code>
[Met]    IsInitialized() As Boolean 
[Met]    InitializeFromBytesArray(Buffer As Byte(), StartOffset As Int, MaxCount As Int)    ' Use File.OpenInput to get a file input stream.
This method should be used to read data from a bytes array.
Initializes the input stream and sets it to read from the specified bytes array.
StartOffset - The first byte that will be read.
MaxCount - Maximum number of bytes to read.

' === CLASE: OutputStream (anywheresoftware.b4a.objects.streams.File.OutputStreamWrapper) ===
[Met]    InitializeToBytesArray(StartSize As Int)    ' Use File.OpenOutput to get a file output stream.
This method should be used to write data to a bytes array.
StartSize - The starting size of the internal bytes array. The size will increase if needed.
[Met]    ToBytesArray() As Byte()    ' Returns a copy of the internal bytes array. Can only be used when the output stream was initialized with InitializeToBytesArray.
[Met]    Flush()    ' Flushes any buffered data.
[Met]    Close()    ' Closes the stream.
[Met]    IsInitialized() As Boolean 
[Met]    WriteBytes(Buffer As Byte(), StartOffset As Int, Length As Int)    ' Writes the buffer to the stream. The first byte to be written is Buffer(StartOffset), 
and the last is Buffer(StartOffset + Length - 1).

' === CLASE: TextWriter (anywheresoftware.b4a.objects.streams.File.TextWriterWrapper) ===
[Met]    Write(Text As String)    ' Writes the given Text to the stream.
[Met]    WriteList(List As List)    ' Writes each item in the list as a single line.
Note that a value containing CRLF will be saved as two lines (which will return two item when read with ReadList).
All values will be converted to strings.
[Met]    WriteLine(Text As String)    ' Writes the given Text to the stream followed by a new line character.
 Example:<code>
 	Dim Writer As TextWriter
	Writer.Initialize(File.OpenOutput(File.DirDefaultExternal, "1.txt", False))
	Writer.WriteLine("This is the first line.")
	Writer.WriteLine("This is the second line.")
	Writer.Close </code>
[Met]    Flush()    ' Flushes any buffered data.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(OutputStream As OutputStream)    ' Initializes this object by wrapping the given OutputStream using the UTF8 encoding.
[Met]    Initialize2(OutputStream As OutputStream, Encoding As String)    ' Initializes this object by wrapping the given OutputStream using the specified encoding.
[Met]    Close()    ' Closes the stream.

' === CLASE: TextReader (anywheresoftware.b4a.objects.streams.File.TextReaderWrapper) ===
[Met]    ReadLine() As String    ' Reads the next line from the stream. The new line characters are not returned.
Returns Null if there are no more characters to read.

Example:<code>
	Dim Reader As TextReader
	Reader.Initialize(File.OpenInput(File.DirInternal, "1.txt"))
	Dim line As String
 	line = Reader.ReadLine
 	Do While line <> Null
		Log(line)
		line = Reader.ReadLine
	Loop
	Reader.Close</code>
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(InputStream As InputStream)    ' Initializes this object by wrapping the given InputStream using the UTF8 encoding.
[Met]    Read(Buffer As Char(), StartOffset As Int, Length As Int) As Int    ' Reads characters from the stream and into the Buffer.
Reads up to Length characters and puts them in the Buffer starting as StartOffset.
Returns the actual number of characters read from the stream.
Returns -1 if there are no more characters available.
[Met]    Ready() As Boolean    ' Tests whether there is at least one character ready for reading without blocking.
[Met]    Initialize2(InputStream As InputStream, Encoding As String)    ' Initializes this object by wrapping the given InputStream using the specified encoding.
[Met]    ReadList() As List    ' Reads the remaining text and returns a List object filled with the lines.
Closes the stream when done.
[Met]    ReadAll() As String    ' Reads all of the remaining text and closes the stream.
[Met]    Skip(NumberOfCharaceters As Int) As Int    ' Skips the specified number of characters.
Returns the actual number of characters that were skipped (which may be less than the specified value).
[Met]    Close()    ' Closes the stream.

' === CLASE: Map (anywheresoftware.b4a.objects.collections.Map) ===
[Prop:R] Size As Int    ' Returns the number of items stored in the map.
[Met]    GetValueAt(Index As Int) As Object    ' <b>This method is deprecated. Use For Each to iterate over the values or use B4XOrderedMap.</b>
 Returns the value of the item at the given index.
GetKeyAt and GetValueAt should be used to iterate over all the items.
These methods are optimized for iterating over the items in ascending order.
Example:<code>
For i = 0 to Map.Size - 1
	Log("Key: " & Map.GetKeyAt(i))
	Log("Value: " & Map.GetValueAt(i))
Next</code>
[Met]    Values() As IterableList    ' Returns an object which can be used to iterate over all the values with a For Each block.
Example:<code>
For Each v As Int In map1.Values
	Log(v)
Next</code>
[Met]    Remove(Key As Object) As Object    ' Removes the item with the given key, if such exists.
Returns the item removed or null if no matching item was found.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize()    ' Initializes the object.
Example:<code>
Dim Map1 As Map
Map1.Initialize</code>
[Met]    Put(Key As Object, Value As Object) As Object    ' Puts a key/value pair in the map, overwriting the previous item with this key (if such exists).
Returns the previous item with this key or null if there was no such item.
Note that if you are using strings as the keys then the keys are case sensitive.
Example:<code>
Map1.Put("Key", "Value")</code>
[Met]    Clear()    ' Clears all items from the map.
[Met]    ContainsKey(Key As Object) As Boolean    ' Tests whether there is an item with the given key.
Example:<code>
If Map.ContainsKey("some key") Then ... </code>
[Met]    Get(Key As Object) As Object    ' Returns the value of the item with the given key.
Returns Null if the value doesn't exist.
[Met]    GetKeyAt(Index As Int) As Object    ' <b>This method is deprecated. Use For Each to iterate over the keys or use B4XOrderedMap.</b>
 Returns the key of the item at the given index.
GetKeyAt and GetValueAt should be used to iterate over all the items.
These methods are optimized for iterating over the items in ascending order.
Example:<code>
For i = 0 to Map.Size - 1
	Log("Key: " & Map.GetKeyAt(i))
	Log("Value: " & Map.GetValueAt(i))
Next</code>
[Met]    Keys() As IterableList    ' Returns an object which can be used to iterate over all the keys with a For Each block.
Example:<code>
For Each k As String In map1.Keys
	Log(k)
Next</code>
[Met]    GetDefault(Key As Object, Default As Object) As Object    ' Returns the value of the item with the given key. If no such item exists the specified default value is returned.

' === CLASE: List (anywheresoftware.b4a.objects.collections.List) ===
[Prop:R] Size As Int    ' Returns the number of items in the list.
[Met]    Add(item As Object)    ' Adds an item at the end of the list.
[Met]    Set(Index As Int, Item As Object)    ' Replaces the current item in the specified index with the new item.
[Met]    SortCaseInsensitive(Ascending As Boolean)    ' Lexicographically sorts the list, ignoring the characters case.
The items must all be numbers or strings.
[Met]    IndexOf(Item As Object) As Int    ' Returns the index of the specified item, or -1 if it was not found.
[Met]    InsertAt(Index As Int, Item As Object)    ' Inserts the specified element in the specified index, before the current item at that index.
As a result all items with index equal to or larger than the specified index are shifted.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize()    ' Initializes an empty list.
[Met]    SortTypeCaseInsensitive(FieldName As String, Ascending As Boolean)    ' Similar to SortType. Lexicographically sorts the list, ignoring the characters case.
[Met]    Clear()    ' Removes all the items from the list.
[Met]    SortType(FieldName As String, Ascending As Boolean)    ' Sorts a list with items of user defined type. The list is sorted based on the specified field.
FieldName - The case-sensitive field name that will be used for sorting. Field must contain numbers or strings.
Ascending - Whether to sort ascending or descending.
Example:<code>
Sub Process_Globals
	Type Person(Name As String, Age As Int)
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Dim Persons As List
	Persons.Initialize
	For i = 1 To 50
		Dim p As Person
		p.Name = "Person" & i
		p.Age = Rnd(0, 121)
		Persons.Add(p)
	Next
	Persons.SortType("Age", True) 'Sort the list based on the Age field.
	For i = 0 To Persons.Size - 1
		Dim p As Person
		p = Persons.Get(i)
		Log(p)
	Next
End Sub</code>
[Met]    Initialize2(Array As List)    ' Initializes a list with the given values. This method should be used to convert arrays to lists.
Note that if you pass a list to this method then both objects will share the same list,
and if you pass an array the list will be of a fixed size. Meaning that you cannot later add or remove items.
Example:<code>
Dim List1 As List
List1.Initialize2(Array As Int(1,2,3,4,5))</code>
Example:<code>
Dim List1 As List
Dim SomeArray(10) As String
'Fill array...
List1.Initialize2(SomeArray)</code>
[Met]    AddAllAt(Index As Int, List As List)    ' Adds all elements in the specified collection starting at the specified index.
[Met]    Get(Index As Int) As Object    ' Gets the item in the specified index. The item is not removed from the list.
[Met]    Sort(Ascending As Boolean)    ' Sorts the list.
The items must all be numbers or strings.
[Met]    AddAll(List As List)    ' Adds all elements in the specified collection to the end of the list.
Note that you can add an array directly.
Example:<code>
List.AddAll(Array As String("value1", "value2"))</code>
[Met]    RemoveAt(Index As Int)    ' Removes the item at the specified index.

' === CLASE: Typeface (anywheresoftware.b4a.keywords.constants.TypefaceWrapper) ===
[Prop:R] MATERIALICONS As Typeface 
[Prop:R] FONTAWESOME As Typeface 
[Met]    CreateNew(Typeface1 As Typeface, Style As Int) As Typeface    ' Returns a typeface with the specified style.
Example:<code>
Typeface.CreateNew(Typeface.MONOSPACE, Typeface.STYLE_ITALIC)</code>
[Met]    LoadFromAssets(FileName As String) As Typeface    ' Loads a font file, that was added with the file manager.
Example:<code>
Dim MyFont As Typeface
MyFont = Typeface.LoadFromAssets("MyFont.ttf")
EditText1.Typeface = MyFont</code>
[Met]    IsInitialized() As Boolean 

' === CLASE: KeyCodes (anywheresoftware.b4a.keywords.constants.KeyCodes) ===

' === CLASE: Gravity (anywheresoftware.b4a.keywords.constants.Gravity) ===

' === CLASE: DialogResponse (anywheresoftware.b4a.keywords.constants.DialogResponse) ===

' === CLASE: Colors (anywheresoftware.b4a.keywords.constants.Colors) ===
[Met]    ARGB(Alpha As Int, R As Int, G As Int, B As Int) As Int    ' Returns an integer value representing the color built from the three components and with the specified alpha value.
Each component should be a value between 0 to 255 (inclusive)
Alpha - A value between 0 to 255 where 0 is fully transparent and 255 is fully opaque.
[Met]    RGB(R As Int, G As Int, B As Int) As Int    ' Returns an integer value representing the color built from the three components.
Each component should be a value between 0 to 255 (inclusive)
Alpha is implicitly set to 255 (opaque).

' === CLASE: StateListDrawable (anywheresoftware.b4a.objects.drawable.StateListDrawable) ===
[Met]    AddState2(State As Int(), Drawable As Drawable)    ' Adds a state and drawable pair. The state is made from a combination of states.
You should not reuse the array specified as it is used internally by StateListDrawable.
Note that the order of states is very important. The first state that matches will be used.
[Met]    AddState(State As Int, Drawable As Drawable)    ' Adds a state and drawable pair.
Note that the order of states is very important. The first state that matches will be used.
[Met]    AddCatchAllState(Drawable As Drawable)    ' Adds the drawable that will be used if no other state matched the current state.
This should always be the last state (states added after this one will never be used).
[Met]    IsInitialized() As Boolean 
[Met]    Initialize()    ' Initializes the object.
Example:<code>
Dim Button1 As Button
Button1.Initialize("")
Dim sld As StateListDrawable
sld.Initiailize
sld.AddState (sld.State_Disabled, DisabledDrawable)
sld.AddState (sld.State_Pressed, PressedDrawable)
sld.AddCatchAllState (DefaultDrawable)
Button1.Background = sld</code>

' === CLASE: GradientDrawable (anywheresoftware.b4a.objects.drawable.GradientDrawable) ===
[Prop:W] CornerRadius As Float    ' Sets the radius of the "rectangle" corners.
Set to 0 for square corners.
 
Example:<code>
Gradient1.CornerRadius = 20dip</code>
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Orientation As Orientation, Colors As Int())    ' Initializes this object.
Orientation - The gradient orientation. Can be one of the following value:
"TOP_BOTTOM"
"TR_BL" (Top-Right to Bottom-Left)
"RIGHT_LEFT"
"BR_TL" (Bottom-Right to Top-Left)
"BOTTOM_TOP"
"BL_TR" (Bottom-Left to Top-Right)
"LEFT_RIGHT"
"TL_BR" (Top-Left to Bottom-Right)
 
Colors - An array with the gradient colors.
 
Example:<code>
Dim Gradient1 As GradientDrawable
Dim Clrs(2) As Int
Clrs(0) = Colors.Black
Clrs(1) = Colors.White
Gradient1.Initialize("TOP_BOTTOM", Clrs)</code>

' === CLASE: ColorDrawable (anywheresoftware.b4a.objects.drawable.ColorDrawable) ===
[Met]    Initialize2(Color As Int, CornerRadius As Int, BorderWidth As Int, BorderColor As Int) 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Color As Int, CornerRadius As Int)    ' Initializes the drawable with the given color and corners radius.

' === CLASE: Canvas (anywheresoftware.b4a.objects.drawable.CanvasWrapper) ===
[Prop:R] Bitmap As Bitmap    ' Returns the bitmap that the canvas draws to.
Example: Saves the drawing to a file<code>
Dim Out As OutputStream
Out = File.OpenOutput(File.DirRootExternal, "Test.png", False)
Canvas1.Bitmap.WriteToStream(out, 100, "PNG")
Out.Close</code>
[Prop:RW] AntiAlias As Boolean    ' Gets or sets whether antialiasing will be applied.
[Met]    DrawText(Text As String, x As Float, y As Float, Typeface1 As Typeface, TextSize As Float, Color As Int, Align1 As Align)    ' Draws the text.
Text - The text to be drawn.
x, y - The origin point.
Typeface1 - Typeface (font) to use.
TextSize - This value will be automatically scaled so do not scale it yourself.
Color - Text color.
Align - The alignment related to the origin. One of the following values: "LEFT", "CENTER", "RIGHT".
Example:<code>
Canvas1.DrawText("This is a nice sentence.", 200dip, 200dip, Typeface.DEFAULT_BOLD, 30, Colors.Blue, "LEFT")</code>
[Met]    MeasureStringWidth(Text As String, Typeface As Typeface, TextSize As Float) As Float    ' Returns the width of the given text.
Example of drawing a blue text with white rectangle as the background:<code>
Dim Rect1 As Rect
Dim width, height As Float
Dim t As String
t = "Text to write"
width = Canvas1.MeasureStringWidth(t, Typeface.DEFAULT, 14)
height = Canvas1.MeasureStringHeight(t, Typeface.DEFAULT, 14)
Rect1.Initialize(100dip, 100dip, 100dip + width, 100dip + height)
Canvas1.DrawRect(Rect1, Colors.White, True, 0)
Canvas1.DrawText(t, Rect1.Left, Rect1.Bottom, Typeface.DEFAULT, 14, Colors.Blue, "LEFT")</code>
[Met]    DrawBitmap(Bitmap1 As Bitmap, SrcRect As Rect, DestRect As Rect)    ' Draws a bitmap.
SrcRect - The subset of the bitmap that will be drawn. If Null then the complete bitmap will be drawn.
DestRect - The rectangle that the bitmap will be drawn to.

Example:<code>
Dim Bitmap1 As Bitmap
Bitmap1.Initialize(File.DirAssets, "X.jpg")
Dim DestRect As Rect
DestRect.Initialize(10dip, 10dip, 10dip + 100dip, 10dip + 100dip)
Canvas1.DrawBitmap(Bitmap1, Null, DestRect) 'draws the bitmap to the destination rectangle.

Dim SrcRect As Rect
SrcRect.Initialize(0, 0, Bitmap1.Width / 2, Bitmap1.Height) 'the left half of the bitmap.
DestRect.Top = 200dip
DestRect.Bottom = 200dip + 100dip
Canvas1.DrawBitmap(Bitmap1, SrcRect, DestRect) 'draws half of the bitmap.
Activity.Invalidate</code>
[Met]    DrawDrawable(Drawable1 As Drawable, DestRect As Rect)    ' Draws a Drawable into the specified rectangle.
 
Example:<code>
Dim Gradient1 As GradientDrawable
Dim Clrs(2) As Int
Clrs(0) = Colors.Green
Clrs(1) = Colors.Blue
Gradient1.Initialize("TOP_BOTTOM", Clrs)
Canvas1.DrawDrawable(Gradient1, DestRect)
Activity.Invalidate</code>
[Met]    DrawPath(Path1 As Path, Color As Int, Filled As Boolean, StrokeWidth As Float)    ' Draws the path.
Filled - Whether the path will be filled.
StrokeWidth - The stroke width. Relevant when Filled = False.
Example:<code>
Dim Path1 As Path
Path1.Initialize(50%x, 100%y)
Path1.LineTo(100%x, 50%y)
Path1.LineTo(50%x, 0%y)
Path1.LineTo(0%x, 50%y)
Path1.LineTo(50%x, 100%y)
Canvas1.DrawPath(Path1, Colors.Magenta, False, 10dip)</code>
[Met]    DrawTextRotated(Text As String, x As Float, y As Float, Typeface1 As Typeface, TextSize As Float, Color As Int, Align1 As Align, Degree As Float)    ' Rotates the text and draws it.
Text - The text to be drawn.
x, y - The origin point.
Typeface1 - Typeface (font) to use.
TextSize - This value will be automatically scaled so do not scale it yourself.
Color - Text color.
Align - The alignment related to the origin. One of the following values: "LEFT", "CENTER", "RIGHT".
Degrees - Number of degrees to rotate (clockwise).
Example:<code>
Canvas1.DrawTextRotated("This is a nice sentence.", 200dip, 200dip, _
  Typeface.DEFAULT_BOLD, 30, Colors.Blue, "CENTER", -45)</code>
[Met]    DrawBitmapFlipped(Bitmap1 As Bitmap, SrcRect As Rect, DestRect As Rect, Vertically As Boolean, Horizontally As Boolean)    ' Flips the bitmap and draws it.
SrcRect - The subset of the bitmap that will be drawn. If Null then the complete bitmap will be drawn.
DestRect - The rectangle that the bitmap will be drawn to.
Vertically - Whether to flip the bitmap vertically.
Horizontally - Whether to flip the bitmap horizontally.
Example:<code>
Canvas1.DrawBitmapFlipped(Bitmap1, Null, DestRect, False, True)</code>
[Met]    DrawOvalRotated(Rect1 As Rect, Color As Int, Filled As Boolean, StrokeWidth As Float, Degrees As Float)    ' Rotates the oval and draws it.
Filled - Whether the rectangle will be filled.
StrokeWidth - The stroke width. Relevant when Filled = False.
Degrees - Number of degrees to rotate the oval (clockwise).
[Met]    Initialize(Target As View)    ' Initializes the canvas for drawing on a view.
The view background will be drawn on the canvas during initialization.
Note that you should not change the view's background after calling this method.

Example: <code>
Dim Canvas1 As Canvas
Canvas1.Initialize(Activity) 'this canvas will draw on the activity background</code>
[Met]    DrawCircle(x As Float, y As Float, Radius As Float, Color As Int, Filled As Boolean, StrokeWidth As Float)    ' Draws a circle.
Filled - Whether the circle will be filled.
StrokeWidth - The stroke width. Relevant when Filled = False.

Example:<code>
Canvas1.DrawCircle(150dip, 150dip, 20dip, Colors.Red, False, 10dip)</code>
[Met]    DrawPoint(x As Float, y As Float, Color As Int)    ' Draws a point at the specified position and color.
 
Example:<code>
Canvas1.DrawPoint(50%x, 50%y, Colors.Yellow) 'draws a point in the middle of the screen.</code>
[Met]    RemoveClip()    ' Removes previous clipped region.
[Met]    DrawBitmapRotated(Bitmap1 As Bitmap, SrcRect As Rect, DestRect As Rect, Degrees As Float)    ' Rotates the bitmap and draws it.
SrcRect - The subset of the bitmap that will be drawn. If Null then the complete bitmap will be drawn.
DestRect - The rectangle that the bitmap will be drawn to.
Degrees - Number of degrees to rotate the bitmap (clockwise).
Example:<code>
Canvas1.DrawBitmapRotated(Bitmap1, Null, DestRect, 70)</code>
[Met]    Initialize2(Bitmap As Bitmap)    ' Initializes the canvas for drawing on this bitmap.
The bitmap must be mutable. Bitmaps created from files or input streams are NOT mutable.
[Met]    DrawLine(x1 As Float, y1 As Float, x2 As Float, y2 As Float, Color As Int, StrokeWidth As Float)    ' Draws a line from (x1, y1) to (x2, y2). StrokeWidth determines the width of the line.
Example:<code>
Canvas1.DrawLine(100dip, 100dip, 200dip, 200dip, Colors.Red, 10dip)
Activity.Invalidate
</code>
[Met]    DrawOval(Rect1 As Rect, Color As Int, Filled As Boolean, StrokeWidth As Float)    ' Draws an oval shape.
Filled - Whether the rectangle will be filled.
StrokeWidth - The stroke width. Relevant when Filled = False.

Example:<code>
Dim Rect1 As Rect
Rect1.Initialize(100dip, 100dip, 200dip, 150dip)
Canvas1.DrawOval(Rect1, Colors.Gray, False, 5dip)
Activity.Invalidate</code>
[Met]    DrawRect(Rect1 As Rect, Color As Int, Filled As Boolean, StrokeWidth As Float)    ' Draws a rectangle.
Filled - Whether the rectangle will be filled.
StrokeWidth - The stroke width. Relevant when Filled = False.

Example:<code>
Dim Rect1 As Rect
Rect1.Initialize(100dip, 100dip, 200dip, 150dip)
Canvas1.DrawRect(Rect1, Colors.Gray, False, 5dip)
Activity.Invalidate</code>
[Met]    MeasureStringHeight(Text As String, Typeface As Typeface, TextSize As Float) As Float    ' Returns the height of the given text.
Example of drawing a blue text with white rectangle as the background:<code>
Dim Rect1 As Rect
Dim width, height As Float
Dim t As String
t = "Text to write"
width = Canvas1.MeasureStringWidth(t, Typeface.DEFAULT, 14)
height = Canvas1.MeasureStringHeight(t, Typeface.DEFAULT, 14)
Rect1.Initialize(100dip, 100dip, 100dip + width, 100dip + height)
Canvas1.DrawRect(Rect1, Colors.White, True, 0)
Canvas1.DrawText(t, Rect1.Left, Rect1.Bottom, Typeface.DEFAULT, 14, Colors.Blue, "LEFT")</code>
[Met]    DrawRectRotated(Rect1 As Rect, Color As Int, Filled As Boolean, StrokeWidth As Float, Degrees As Float)    ' Rotates the rectangle and draws it.
Filled - Whether the rectangle will be filled.
StrokeWidth - The stroke width. Relevant when Filled = False.
Degrees - Number of degrees to rotate the rectangle (clockwise).
[Met]    DrawDrawableRotate(Drawable1 As Drawable, DestRect As Rect, Degrees As Float)    ' Rotates and draws a Drawable into the specified rectangle.
Degrees - Number of degrees to rotate (clockwise).
[Met]    ClipPath(Path1 As Path)    ' Clips the drawing area to the given path.
 
Example: Fills a diamond shape with gradient color.<code>
Dim Gradient1 As GradientDrawable
Dim Clrs(2) As Int
Clrs(0) = Colors.Black
Clrs(1) = Colors.White
Gradient1.Initialize("TOP_BOTTOM", Clrs)
Dim Path1 As Path
Path1.Initialize(50%x, 100%y)
Path1.LineTo(100%x, 50%y)
Path1.LineTo(50%x, 0%y)
Path1.LineTo(0%x, 50%y)
Path1.LineTo(50%x, 100%y)
Canvas1.ClipPath(Path1) 'clip the drawing area to the path.
DestRect.Left = 0%y
DestRect.Top = 0%y
DestRect.Right = 100%x
DestRect.Bottom = 100%y
Canvas1.DrawDrawable(Gradient1, DestRect) 'fill the drawing area with the gradient.
Activity.Invalidate</code>
[Met]    DrawColor(Color As Int)    ' Fills the entire canvas with the given color.
Example:<code>
Canvas1.DrawColor(Colors.ARGB(100, 255, 0, 0)) 'fills with semi-transparent red color.
Activity.Invalidate</code>

' === CLASE: Bitmap (anywheresoftware.b4a.objects.drawable.CanvasWrapper.BitmapWrapper) ===
[Prop:R] Height As Int    ' Returns the bitmap height.
[Prop:R] Scale As Float    ' Returns the bitmap scale.
[Prop:R] Width As Int    ' Returns the bitmap width.
[Met]    InitializeSample(Dir As String, FileName As String, MaxWidth As Int, MaxHeight As Int)    ' Initializes the bitmap from the given file.
The decoder will subsample the bitmap if MaxWidth or MaxHeight are smaller than the bitmap dimensions.
This can save a lot of memory when loading large images.
Note that the actual dimensions may be larger than the specified values.
[Met]    GetPixel(x As Int, y As Int) As Int    ' Returns the color of the pixel at the specified position.
[Met]    Rotate(Degrees As Float) As Bitmap    ' Returns a <b>new</b> rotated bitmap. The bitmap will be rotated clockwise.
[Met]    Resize(Width As Float, Height As Float, KeepAspectRatio As Boolean) As Bitmap    ' Returns a <b>new</b> bitmap with the given width and height.
Note that the bitmap scale will be the same as the device scale.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Dir As String, FileName As String)    ' Initializes the bitmap from the given file.
Note that the image will be downsampled if there is not enough memory available.
Example:<code>
Dim Bitmap1 As Bitmap
Bitmap1.Initialize(File.DirAssets, "X.jpg")</code>
[Met]    Crop(Left As Int, Top As Int, Width As Int, Height As Int) As Bitmap    ' Returns a <b>new</b> cropped bitmap.
[Met]    Initialize3(Bitmap As Bitmap)    ' Initializes the bitmap with a copy of the original image (copying is done if necessary).
[Met]    Initialize2(InputStream As InputStream)    ' Initializes the bitmap from the given stream.
[Met]    InitializeMutable(Width As Int, Height As Int)    ' Creates a new mutable bitmap with the specified dimensions. You can use a Canvas object to draw on this bitmap.
[Met]    InitializeResize(Dir As String, FileName As String, Width As Int, Height As Int, KeepAspectRatio As Boolean)    ' Initializes the bitmap and sets its size.
Note that the bitmap scale will be the same as the device scale.
[Met]    WriteToStream(OutputStream As OutputStream, Quality As Int, Format As CompressFormat)    ' Writes the bitmap to the output stream.
Quality - Value between 0 (smaller size, lower quality) to 100 (larger size, higher quality), 
which is a hint for the compressor for the required quality.
Format - JPEG or PNG.
 
Example:<code>
Dim Out As OutputStream
Out = File.OpenOutput(File.DirRootExternal, "Test.png", False)
Bitmap1.WriteToStream(out, 100, "PNG")
Out.Close</code>

' === CLASE: Rect (anywheresoftware.b4a.objects.drawable.CanvasWrapper.RectWrapper) ===
[Prop:RW] Left As Int 
[Prop:RW] Top As Int 
[Prop:RW] Right As Int 
[Prop:RW] Bottom As Int 
[Prop:RW] Height As Int    ' Gets or sets the rectangle height.
[Prop:R] CenterY As Int    ' Returns the vertical center.
[Prop:R] CenterX As Int    ' Returns the horizontal center.
[Prop:RW] Width As Int    ' Gets or sets the rectangle width.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Left As Int, Top As Int, Right As Int, Bottom As Int) 

' === CLASE: Path (anywheresoftware.b4a.objects.drawable.CanvasWrapper.PathWrapper) ===
[Met]    LineTo(x As Float, y As Float)    ' Adds a line from the last point to the specified point.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(x As Float, y As Float)    ' Initializes the path and sets the value of the first point.

' === CLASE: BitmapDrawable (anywheresoftware.b4a.objects.drawable.BitmapDrawable) ===
[Prop:R] Bitmap As Bitmap    ' Returns the internal Bitmap.
[Prop:RW] Gravity As Int    ' Gets or sets the gravity value. This value affects the way the image will be drawn.
Example:<code>
BitmapDrawable1.Gravity = Gravity.FILL</code>
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Bitmap As Bitmap) 

' === CLASE: WebView (anywheresoftware.b4a.objects.WebViewWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:RW] JavaScriptEnabled As Boolean    ' Gets or sets whether JavaScript is enabled.
JavaScript is enabled by default.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] Enabled As Boolean 
[Prop:R] Url As String    ' Returns the current Url.
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] ZoomEnabled As Boolean    ' Gets or sets whether the internal zoom feature is enabled.
The zoom feature is enabled by default.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    LoadUrl(Url As String)    ' Loads the given Url.
Example:<code>
WebView1.LoadUrl("http://www.google.com")</code>
[Met]    LoadHtml(Html As String)    ' Loads the given Html.
Example:<code>
WebView1.LoadHtml("<html><body>Hello world!</body></html>")</code>
You can use "file:///android_asset" to access files added with the file manager:
<code>WebView1.LoadHtml("<html><body><img src='file:///android_asset/someimage.jpg'/></body></html>")</code>
Note that files added with the file manager should be accessed with a lower cased name.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    Back()    ' Goes back to the previous Url.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    Zoom(In As Boolean) As Boolean    ' Zooms in or out according to the value of In.
Returns true if zoom has changed.
[Met]    CaptureBitmap() As Bitmap    ' Returns the complete html page as a bitmap.
[Met]    StopLoading()    ' Stops the current load.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Forward()    ' Goes forward to the next Url.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  PageFinished (Url As String).Trim()
[Event]  OverrideUrl (Url As String) As Boolean.Trim()
[Event]  UserAndPasswordRequired (Host As String, Realm As String) As String().Trim()

' === CLASE: Timer (anywheresoftware.b4a.objects.Timer) ===
[Prop:RW] Enabled As Boolean    ' Gets or sets whether the timer is enabled (ticking).
[Prop:RW] Interval As Long    ' Gets or sets the interval between tick events, measured in milliseconds.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String, Interval As Long)    ' Initializes the timer with the event sub prefix and the specified interval (measured in milliseconds).
IMPORTANT: this object should be declared in Sub Process_Globals.
Example:<code>
Timer1.Initialize("Timer1", 1000)
Timer1.Enabled = True

Sub Timer1_Tick
 'Handle tick events
End Sub
</code>
[Event]  Tick.Trim()

' === CLASE: TabHost (anywheresoftware.b4a.objects.TabHostWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:R] TabCount As Int    ' Returns the number of tab pages.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] CurrentTab As Int    ' Gets or sets the current tab.
Example:<code>
TabHost1.CurrentTab = (TabHost1.CurrentTab + 1) Mod TabHost1.TabCount 'switch to the next tab.
</code>
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    AddTab(Title As String, LayoutFile As String)    ' Adds a tab page.
Title - The page title.
LayoutFile - A layout file describing the page layout.
Example:<code>
TabHost1.AddTab("Page 1", "page1.bal")</code>
[Met]    AddTabWithIcon2(Title As String, DefaultBitmap As Bitmap, SelectedBitmap As Bitmap, View As View)    ' Adds a tab page. The tab title includes an icon.
Title - The page title.
DefaultBitmap - The icon that will be drawn when the page is not selected.
SelectedBitmap - The icon that will be drawn when the page is selected.
View - The page content. Usually the view should be a panel containing other views.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    AddTab2(Title As String, View As View)    ' Adds a tab page.
Title - The page title.
View - The page content. Usually the view should be a panel containing other views.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    AddTabWithIcon(Title As String, DefaultBitmap As Bitmap, SelectedBitmap As Bitmap, LayoutFile As String)    ' Adds a tab page. The tab title includes an icon.
Title - The page title.
DefaultBitmap - The icon that will be drawn when the page is not selected.
SelectedBitmap - The icon that will be drawn when the page is selected.
LayoutFile - A layout file describing the page layout.
Example:<code>
Dim bmp1, bmp2 As Bitmap
bmp1 = LoadBitmap(File.DirAssets, "ic.png")
bmp2 = LoadBitmap(File.DirAssets, "ic_selected.png")
TabHost1.AddTabWithIcon("Page 1", bmp1, bmp2,"tabpage1.bal")</code>
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  TabChanged.Trim()
[Event]  Click.Trim()
[Event]  LongClick.Trim()

' === CLASE: String2 (anywheresoftware.b4a.objects.String2) ===
[Met]    equalsIgnoreCase(other As String) As Boolean    ' Returns true if both strings are equal ignoring their case.
[Met]    getBytes(Charset As String) As Byte()    ' Encodes the string into a new array of bytes.
 Example:<code>
 Dim Data() As Byte
 Data = "Some string".GetBytes("UTF8")</code>
[Met]    replace(Target As String, Replacement As String) As String    ' Returns a new string resulting from the replacement of all the occurrences of Target with Replacement.
[Met]    indexOf(SearchFor As String) As Int    ' Returns the index of the first occurrence of SearchFor string in the string.
Returns -1 if SearchFor was not found.
[Met]    trim() As String    ' Returns a copy of the original string without any leading or trailing white spaces.
[Met]    indexOf(SearchFor As String, Index As Int) As Int    ' Returns the index of the first occurrence of SearchFor string in the string.
Starts searching from the given Index.
Returns -1 if SearchFor was not found.
[Met]    substring(BeginIndex As Int) As String    ' Returns a new string which is a substring of the original string.
The new string will include the character at BeginIndex and will extend to the end of the string.

Example:
<code>"012345".SubString(2) 'returns "2345"</code>
[Met]    lastIndexOf(SearchFor As String, Index As Int) As Int    ' Returns the index of the first occurrence of SearchFor string in the string.
The search starts at the given index and advances to the beginning.
[Met]    startsWith(Prefix As String) As Boolean    ' Returns true if this string starts with the given Prefix.
[Met]    toLowerCase() As String    ' Returns a new string which is the result of lower casing this string.
[Met]    toUpperCase() As String    ' Returns a new string which is the result of upper casing this string.
[Met]    length() As Int    ' Returns the length of this string.
[Met]    charAt(Index As Int) As Char    ' Returns the character at the given index.
[Met]    lastIndexOf(SearchFor As String) As Int    ' Returns the index of the first occurrence of SearchFor string in the string.
The search starts at the end of the string and advances to the beginning.
[Met]    contains(SearchFor As String) As Boolean    ' Tests whether the string contains the given string parameter.
[Met]    substring(BeginIndex As Int, EndIndex As Int) As String    ' Returns a new string which is a substring of the original string.
The new string will include the character at BeginIndex and will extend to the character at EndIndex, not including the last character.

Example:
<code>"012345".SubString2(2, 4) 'returns "23"</code>
[Met]    compareTo(Other As String) As Int    ' Lexicographically compares the two strings.
Returns a value less than 0 if the current string precedes Other.
Returns 0 if both strings are equal.
Returns a value larger than 0 if the current string comes after Other.
Note that upper case characters precede lower case characters.

Examples:<code>
"abc".CompareTo("da") ' < 0 
"abc".CompareTo("Abc") ' > 0
"abc".CompareTo("abca")' < 0 </code>
[Met]    endsWith(Suffix As String) As Boolean    ' Returns true if this string ends with the given Suffix.

' === CLASE: Spinner (anywheresoftware.b4a.objects.SpinnerWrapper) ===
[Prop:RW] SelectedIndex As Int    ' Gets or sets the index of the selected item. Returns -1 if no item is selected.
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:R] Size As Int    ' Returns the number of items.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] TextSize As Float    ' Gets or sets the text size. The size should be set before adding items.
[Prop:RW] Enabled As Boolean 
[Prop:RW] DropdownBackgroundColor As Int    ' Gets or sets the dropdown items background color. The color should be set before adding items.
Setting the color to transparent will make the spinner use the default background color.
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Prompt As String    ' Gets or sets the title that will be displayed when the spinner is opened.
[Prop:RW] DropdownTextColor As Int    ' Gets or sets the dropdown text color. The color should be set before adding items.
Setting the color to transparent will make the spinner use the default text color.
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] TextColor As Int    ' Gets or sets the text color. The color should be set before adding items.
Setting the color to transparent will make the spinner use the default text color.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:R] SelectedItem As String    ' Returns the value of the selected item.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    Add(Item As String)    ' Adds an item.
Example:<code>
Spinner1.Add("Sunday")</code>
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    Clear()    ' Clears all items.
[Met]    GetItem(Index As Int) As String    ' Returns the item at the specified index.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    IndexOf(value As String) As Int 
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    AddAll(List As List)    ' Adds multiple items.
Example:<code>
Spinner1.AddAll(Array As String("Sunday", "Monday", ...))</code>
[Met]    RemoveAt(Index As Int)    ' Removes the item at the specified index.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  ItemClick (Position As Int, Value As Object).Trim()

' === CLASE: SingleLineLayout (anywheresoftware.b4a.objects.SimpleListAdapter.SingleLineLayout) ===
[Prop:RW] ItemHeight As Int    ' Gets or sets the height of items with this layout.

' === CLASE: TwoLinesLayout (anywheresoftware.b4a.objects.SimpleListAdapter.TwoLinesLayout) ===
[Prop:RW] ItemHeight As Int    ' Gets or sets the height of items with this layout.

' === CLASE: TwoLinesAndBitmapLayout (anywheresoftware.b4a.objects.SimpleListAdapter.TwoLinesAndBitmapLayout) ===
[Prop:RW] ItemHeight As Int    ' Gets or sets the height of items with this layout.

' === CLASE: ServiceHelper (anywheresoftware.b4a.objects.ServiceHelper) ===
[Met]    StopForeground(Id As Int)    ' Takes the current service out of the foreground state and cancels the notification with the given Id.
[Met]    StartForeground(Id As Int, Notification As Notification)    ' Brings the current service to the foreground state and displays the given notification.
Id - The notification Id (see the notification object documentation).
Notification - The notification that will be displayed.
[Met]    StopAutomaticForeground()    ' Stops the automatic foreground state. Does nothing if the service was not in that state.
You can call this method at the end of the background task as an alternative to calling StopService(Me).

' === CLASE: SeekBar (anywheresoftware.b4a.objects.SeekBarWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:RW] Max As Int    ' Gets or sets the maximum allowed value.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Value As Int    ' Gets or sets the current value.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  ValueChanged (Value As Int, UserChanged As Boolean).Trim()

' === CLASE: ScrollView (anywheresoftware.b4a.objects.ScrollViewWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] Enabled As Boolean 
[Prop:R] Panel As Panel    ' Returns the panel which you can use to add views to.
Example:<code>
ScrollView1.Panel.AddView(...)</code>
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] ScrollPosition As Int    ' Gets or sets the scroll position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    ScrollToNow(Scroll As Int)    ' Immediately scrolls the ScrollView (with no animations).
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Height As Int)    ' Initializes the ScrollView and sets its inner panel height to the given height.
You can later change this height by calling ScrollView.Panel.Height.
<code>
Dim ScrollView1 As ScrollView
ScrollView1.Initialize(1000dip)</code>
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    FullScroll(Bottom As Boolean)    ' Scrolls the scroll view to the top or bottom.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Initialize2(Height As Int, EventName As String)    ' Similar to Initialize. Sets the Sub that will handle the ScrollChanged event.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  ScrollChanged(Position As Int).Trim()

' === CLASE: RemoteViews (anywheresoftware.b4a.objects.RemoteViewsWrapper) ===
[Met]    HandleWidgetEvents(StartingIntent As Intent) As Boolean    ' Checks if the intent starting this service was sent from the widget and raises events based on the intent.
Returns True if an event was raised.
[Met]    SetVisible(ViewName As String, Visible As Boolean)    ' Sets the visibility of the given view.
Example:<code>rv.SetVisibile("Button1", False)</code>
[Met]    SetTextColor(ViewName As String, Color As Int)    ' Sets the text color of the given button or label.
Example:<code>rv.SetTextColor("Label1", Colors.Red)</code>
[Met]    SetText(ViewName As String, Text As CharSequence)    ' Sets the text of the given view.
Example:<code>rv.SetText("Label1", "New text")</code>
[Met]    SetImage(ImageViewName As String, Image As Bitmap)    ' Sets the image of the given ImageView.
Example:<code>rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, "1.jpg"))</code>
[Met]    SetTextSize(ViewName As String, Size As Float)    ' Sets the text size of the given button or label.
Example:<code>rv.SetTextSize("Label1", 20)</code>
[Met]    SetProgress(ProgressBarName As String, Progress As Int)    ' Sets the progress value of the given ProgressBar. Value should be between 0 to 100.
Example:<code>rv.SetProgress("ProgressBar1", 50)</code>
[Met]    UpdateWidget()    ' Updates the widget with the changes done. This method is also responsible for configuring the events.
[Event]  RequestUpdate.Trim()
[Event]  Disabled.Trim()

' === CLASE: ReceiverHelper (anywheresoftware.b4a.objects.ReceiverHelper) ===

' === CLASE: ProgressBar (anywheresoftware.b4a.objects.ProgressBarWrapper) ===
[Prop:RW] Progress As Int    ' Gets or sets the progress value.
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:RW] Indeterminate As Boolean    ' Gets or sets whether the progress bar is in indeterminate mode (cyclic animation).
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.

' === CLASE: Panel (anywheresoftware.b4a.objects.PanelWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:R] NumberOfViews As Int    ' Returns the number of child views.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Elevation As Float 
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    GetView(Index As Int) As ConcreteView    ' Gets the view that is stored in the specified index.
[Met]    AddView(View As View, Left As Int, Top As Int, Width As Int, Height As Int)    ' Adds a view to this panel.
[Met]    IsInitialized() As Boolean 
[Met]    GetAllViewsRecursive() As IterableList    ' Returns an iterator that iterates over all the child views including views that were added to other child views.
Example:<code>
For Each v As View In Panel1.GetAllViewsRecursive
	...
Next</code>
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    RemoveViewAt(Index As Int)    ' Removes the view that is stored in the specified index.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    LoadLayout(LayoutFile As String) As LayoutValues    ' Loads a layout file to this panel. Returns the value of the chosen layout variant.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    SetElevationAnimated(Duration As Int, Elevation As Float) 
[Met]    RemoveAllViews()    ' Removes all child views.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  Touch (Action As Int, X As Float, Y As Float).Trim()
[Event]  Click.Trim()
[Event]  LongClick.Trim()

' === CLASE: Notification (anywheresoftware.b4a.objects.NotificationWrapper) ===
[Prop:W] Vibrate As Boolean    ' Sets whether the notification will vibrate.
Example:<code>
n.Vibrate = False</code>
[Prop:RW] Number As Int    ' Gets or sets a number that will be displayed on the icon. This is useful to represent multiple events in a single notification.
[Prop:W] Light As Boolean    ' Sets whether the notification will show a light.
Example:<code>
n.Light = False</code>
[Prop:W] Insistent As Boolean    ' Sets whether the sound will play repeatedly until the user opens the notifications screen.
[Prop:W] Sound As Boolean    ' Sets whether the notification will play a sound.
Example:<code>
n.Sound = False</code>
[Prop:W] Icon As String    ' Sets the icon displayed.
The icon value is the name of the image file without the extension. <b>The name is case sensitive.
The image file should be manually copied to the following folder: source folder\Objects\res\drawable.</b>
You can use "icon" to use the application icon (which is also located in this folder):<code>
n.Icon = "icon"</code>
[Prop:W] AutoCancel As Boolean    ' Sets whether the notification will be canceled automatically when the user clicks on it.
[Prop:W] OnGoingEvent As Boolean    ' Sets whether this notification is an "ongoing event". The notification will be displayed in the ongoing section
and it will not be cleared.
[Met]    SetInfo2New(Title As CharSequence, Body As CharSequence, Tag As CharSequence, Activity As Object)    ' Similar to SetInfo. Also sets a string that can be later extracted in Activity_Resume.
Title - The message title.
Body - The message body.
Tag - An arbitrary string that can be later extract when the user clicks on the notification.
Activity - The activity to start when the user presses on the notification.
Pass an empty string to start the current activity (when calling from an activity module).
Example of extracting the tag:<code>
Sub Activity_Resume
	Dim in As Intent
	in = Activity.GetStartingIntent
	If in.HasExtra("Notification_Tag") Then
		Log(in.GetExtra("Notification_Tag")) 'Will log the tag
	End If
End Sub</code>
[Met]    Notify(Id As Int)    ' Displays the notification.
Id - The notification id. This id can be used to later update this notification (by calling Notify again with the same Id),
or to cancel the notification.
[Met]    Cancel(Id As Int)    ' Cancels the notification with the given Id.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize()    ' Initializes the notification. By default the notification plays a sound, shows a light and vibrates the phone.
[Met]    SetInfoNew(Title As CharSequence, Body As CharSequence, Activity As Object)    ' Sets the message text and action.
Title - The message title.
Body - The message body.
Activity - The activity to start when the user presses on the notification.
Pass an empty string to start the current activity (when calling from an activity module).
Example:<code>
n.SetInfo("Some title", "Some text", Main)</code>
[Met]    Initialize2(ImportanceLevel As Int)    ' Initializes the notification and sets the notification channel importance level.
Note that the importance level only affect Android 8+ devices.
<code>
Dim no As Notification
no.Initialize2(no.IMPORTANCE_DEFAULT)</code>

' === CLASE: MediaPlayer (anywheresoftware.b4a.objects.MediaPlayerWrapper) ===
[Prop:RW] Position As Int    ' Gets or sets the current position (in milliseconds).
[Prop:RW] Looping As Boolean    ' Gets or sets whether the media player will restart playing automatically.
[Prop:R] Duration As Int    ' Returns the total duration of the loaded file (in milliseconds).
[Met]    Play()    ' Starts (or resumes) playing the loaded audio file.
[Met]    Load(Dir As String, FileName As String)    ' Loads an audio file and prepares it for playing.
[Met]    Pause()    ' Pauses playback. You can resume playback from the current position by calling Play.
[Met]    Initialize2(EventName As String)    ' Similar to Initialize2. Complete event will be raised when play back completes.
 EventName - The Sub that will handle the Complete event.
[Met]    Stop()    ' Stops playing. You must call Load before trying to play again.
[Met]    SetVolume(Left As Float, Right As Float)    ' Sets the playing volume for each channel. The value should be between 0 to 1.
[Met]    IsInitialized() As Boolean 
[Met]    IsPlaying() As Boolean    ' Returns true if the media player is currently playing.
[Met]    Initialize()    ' Initializes the object.
You should use Initialize2 if you want to handle the Complete event.
Example:<code>
Dim MP As MediaPlayer 'should be done in Sub Process_Globals
MP.Initialize2("MP")
MP.Load(File.DirAssets, "SomeFile.mp3")
MP.Play</code>
[Met]    Release()    ' Releases all resources allocated by the media player.
[Event]  Complete.Trim()

' === CLASE: ListView (anywheresoftware.b4a.objects.ListViewWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:W] ScrollingBackgroundColor As Int    ' Sets the background color that will be used while scrolling the list.
This is an optimization done to make the scrolling smoother.
Set to <code>Colors.Transparent</code> if the background behind the list is not solid color.
The default is black.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:R] Size As Int    ' Returns the number of items stored in the list.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:R] SingleLineLayout As SingleLineLayout    ' Returns the layout that is used to show single line items.
You can change the layout values to change the appearance of such items.
Example:<code>
Dim Label1 As Label
Label1 = ListView1.SingleLineLayout.Label
Label1.TextSize = 20
Label1.TextColor = Colors.Green</code>
[Prop:RW] Enabled As Boolean 
[Prop:R] TwoLinesAndBitmap As TwoLinesAndBitmapLayout    ' Returns the layout that is used to show two lines and bitmap items.
You can change the layout values to change the appearance of such items.
For example if you want to remove the second label (in all items with this layout):<code>
ListView1.TwoLinesAndBitmap.SecondLabel.Visible = False</code>
[Prop:RW] FastScrollEnabled As Boolean    ' Gets or sets whether the fast scroll icon will appear when the user scrolls the list.
The default is false.
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:R] TwoLinesLayout As TwoLinesLayout    ' Returns the layout that is used to show two lines items.
You can change the layout values to change the appearance of such items.
Example:<code>
Dim Label1 As Label
Label1 = ListView1.TwoLinesLayout.SecondLabel
Label1.TextSize = 20
Label1.TextColor = Colors.Green</code>
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    Clear()    ' Clears all items from the list.
[Met]    GetItem(Index As Int) As Object    ' Returns the value of the item at the specified position.
Returns the "return value" if it was set and if not returns the text of the first line.
[Met]    AddSingleLine2(Text As CharSequence, ReturnValue As Object)    ' Adds a single line item.
The specified return value will be returned when calling GetItem or in the ItemClick event.
Example:<code>
ListView1.AddSingleLine2("Sunday", 1)</code>
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    AddTwoLines(Text1 As CharSequence, Text2 As CharSequence)    ' Adds a two lines item.
Example:<code>
ListView1.AddTwoLines("This is the first line.", "And this is the second")</code>
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    AddTwoLinesAndBitmap2(Text1 As CharSequence, Text2 As CharSequence, Bitmap As Bitmap, ReturnValue As Object)    ' Adds a two lines and a bitmap item.
The specified return value will be returned when calling GetItem or in the ItemClick event.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    SetSelection(Position As Int)    ' Sets the currently selected item. Calling this method will make this item visible.
If the user is interacting with the list with the keyboard or the wheel button the item will also be visibly selected.
Example:<code>ListView1.SetSelection(10)</code>
[Met]    AddTwoLinesAndBitmap(Text1 As CharSequence, Text2 As CharSequence, Bitmap As Bitmap)    ' Adds a two lines and a bitmap item.
Example:<code>
ListView1.AddTwoLinesAndBitmap("First line", "Second line", LoadBitmap(File.DirAssets, "SomeImage.png"))</code>
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    AddTwoLines2(Text1 As CharSequence, Text2 As CharSequence, ReturnValue As Object)    ' Adds a two lines item.
The specified return value will be returned when calling GetItem or in the ItemClick event.
[Met]    RemoveAt(Index As Int)    ' Removes the item at the specified position.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Met]    AddSingleLine(Text As CharSequence)    ' Adds a single line item.
 Example:<code>
 ListView1.AddSingleLine("Sunday")</code>
[Event]  ItemClick (Position As Int, Value As Object).Trim()
[Event]  ItemLongClick (Position As Int, Value As Object).Trim()

' === CLASE: Label (anywheresoftware.b4a.objects.LabelWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] TextSize As Float    ' Get or sets the view's text size.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:RW] Ellipsize As String    ' Gets or sets the truncation mode. Only affects single line fields.
Possible values:
NONE
START - The three dots appear at the beginning.
MIDDLE - The three dots appear at the middle.
END - The three dots appear at the end.
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Prop:W] SingleLine As Boolean    ' Sets whether the text field should be in single line mode or multiline mode.
[Prop:RW] Gravity As Int 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    SetTextSizeAnimated(Duration As Int, TextSize As Float)    ' Changes the text size with an animation effect.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SetTextColorAnimated(Duration As Int, ToColor As Int)    ' Changes the text color with a transition animation between the current color and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  Click.Trim()
[Event]  LongClick.Trim()

' === CLASE: Intent (anywheresoftware.b4a.objects.IntentWrapper) ===
[Prop:RW] Action As String    ' Gets or sets the Intent action.
[Prop:RW] Flags As Int    ' Gets or sets the flags component.
[Met]    SetComponent(Component As String)    ' Explicitly sets the component that will handle this intent.
[Met]    ExtrasToString() As String    ' Returns a string containing the extra items. This is useful for debugging.
[Met]    AddCategory(Category As String)    ' Adds a category describing the intent required operation.
[Met]    GetExtra(Name As String) As Object    ' Returns the item value with the given key.
[Met]    HasExtra(Name As String) As Boolean    ' Tests whether an item with the given key exists.
[Met]    WrapAsIntentChooser(Title As String)    ' Wraps the intent in another "chooser" intent. A dialog will be displayed to the user with the available services that can act on the intent.
<code>WrapAsIntentChooser</code> should be the last method called before sending the intent.
[Met]    IsInitialized() As Boolean 
[Met]    PutExtra(Name As String, Value As Object)    ' Adds extra data to the intent.
[Met]    Initialize(Action As String, Uri As String)    ' Initializes the object using the given Action and data Uri. Action can be one of the action constants or any other string.
Pass an empty string if a Uri is not required.
[Met]    SetPackage(PackageName As String)    ' Explicitly sets the package name of the target application.
[Met]    Initialize2(Uri As String, Flags As Int)    ' Initializes the object by parsing the Uri.
Flags - Additional integer value. Pass 0 if it is not required.
Example:<code>
Dim Intent1 As Intent
Intent1.Initialize2("http://www.basic4ppc.com", 0)
StartActivity(Intent1)</code>
[Met]    SetType(Type As String)    ' Sets the MIME type.
Example:<code>
Intent1.SetType("text/plain")</code>
[Met]    GetData() As String    ' Retrieves the data component as a string.

' === CLASE: ImageView (anywheresoftware.b4a.objects.ImageViewWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Bitmap As Bitmap    ' Gets or sets the bitmap assigned to the ImageView.
Example:<code>
ImageView1.Bitmap = LoadBitmap(File.DirAssets, "someimage.jpg")</code>
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Prop:RW] Gravity As Int    ' Gets or sets the gravity assigned to the bitmap.
Example:<code>
ImageView1.Gravity = Gravity.Fill</code>
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is not changed.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  Click.Trim()
[Event]  LongClick.Trim()

' === CLASE: HorizontalScrollView (anywheresoftware.b4a.objects.HorizontalScrollViewWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] Enabled As Boolean 
[Prop:R] Panel As Panel    ' Returns the panel which you can use to add views to.
Example:<code>
HorizontalScrollView1.Panel.AddView(...)</code>
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] ScrollPosition As Int    ' Gets or sets the scroll position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    ScrollToNow(Scroll As Int)    ' Immediately scrolls the HorizontalScrollView (with no animations).
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Width As Int, EventName As String)    ' Initializes the object.
Width - The width of the inner panel.
EventName - Sets the sub that will handle the event.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    FullScroll(Right As Boolean)    ' Scrolls the view to the right or left.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  ScrollChanged(Position As Int).Trim()

' === CLASE: EditText (anywheresoftware.b4a.objects.EditTextWrapper) ===
[Prop:W] Wrap As Boolean    ' Sets whether the text content will wrap within the EditText bounds. Relevant when the EditText is in multiline mode.
Example:<code>
EditText1.Wrap = False</code>
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:W] ForceDoneButton As Boolean    ' By default the OS sets the virtual keyboard action key to display Done or Next according to the specific layout.
You can force it to display Done by setting this value to True.
Example:<code>
EditText1.ForceDoneButton = True</code>
[Prop:RW] Hint As String    ' Gets or sets the text that will appear when the EditText is empty.
Example:<code>
EditText1.Hint = "Enter username"</code>
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:RW] SelectionStart As Int    ' Gets or sets the selection start position (or the cursor position).
Returns -1 if there is no selection or cursor.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] TextColor As Int 
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Prop:RW] Gravity As Int 
[Prop:RW] HintColor As Int    ' Gets or sets the hint text color.
Example:<code>
EditText1.HintColor = Colors.Gray</code>
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:RW] Typeface As Typeface 
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] TextSize As Float    ' Get or sets the view's text size.
[Prop:RW] Enabled As Boolean 
[Prop:W] PasswordMode As Boolean    ' Sets whether the EditText should be in password mode and hide the actual characters.
[Prop:RW] Text As String 
[Prop:RW] Ellipsize As String    ' Gets or sets the truncation mode. Only affects single line fields.
Possible values:
NONE
START - The three dots appear at the beginning.
MIDDLE - The three dots appear at the middle.
END - The three dots appear at the end.
[Prop:RW] InputType As Int    ' Gets or sets the input type flag. This flag is used to determine the settings of the virtual keyboard.
Note that changing the input type will set the EditText to be in single line mode.
Example:<code>
EditText1.InputType = EditText1.INPUT_TYPE_NUMBERS</code>
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:W] SingleLine As Boolean    ' Sets whether the EditText should be in single line mode or multiline mode.
[Prop:R] SelectionLength As Int    ' Gets the selection length.
[Met]    IsInitialized() As Boolean 
[Met]    SelectAll()    ' Selects the entire text.
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    SetTextSizeAnimated(Duration As Int, TextSize As Float)    ' Changes the text size with an animation effect.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SetTextColorAnimated(Duration As Int, ToColor As Int)    ' Changes the text color with a transition animation between the current color and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    SetSelection(Start As Int, Length As Int)    ' Sets the selected text.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  TextChanged (Old As String, New As String).Trim()
[Event]  EnterPressed.Trim()
[Event]  FocusChanged (HasFocus As Boolean).Trim()

' === CLASE: CSBuilder (anywheresoftware.b4a.objects.CSBuilder) ===
[Prop:R] Length As Int    ' Returns the number of characters.
[Met]    Size(Size As Int) As CSBuilder    ' Starts a text size span. Note that you should not use 'dip' units with text size dimensions.
[Met]    IsInitialized() As Boolean 
[Met]    Image(Bitmap As Bitmap, Width As Int, Height As Int, Baseline As Boolean) As CSBuilder    ' Adds an image span. This method will add a space character as a placeholder for the image.
Unlike the other methods you do not need to call Pop to close this span as it is closed automatically.
Bitmap - The image.
Width / Height - Image dimensions.
Baseline - If true then the image will be aligned based on the baseline. Otherwise it will be aligned based on the lowest descender in the text.
[Met]    Initialize() As CSBuilder    ' Initializes the builder. You can call this method multiple times to create new CharSequences.
Note that like most other methods it returns the current object.
[Met]    Alignment(Alignment As Alignment) As CSBuilder    ' Starts an alignment span.
Alignment - One of the following strings: ALIGN_NORMAL, ALIGN_OPPOSITE or ALIGN_CENTER.
[Met]    Strikethrough() As CSBuilder    ' Starts a strikethrough span.
[Met]    Clickable(EventName As String, Tag As Object) As CSBuilder    ' Starts a clickable span. For the event to be raised you need to call the EnableClickEvents method.
Example:<code>
Sub Activity_Create(FirstTime As Boolean)
	Dim lbl As Label
	lbl.Initialize("")
	Activity.AddView(lbl, 0, 20dip, 100%x, 50dip)
	Dim cs As CSBuilder
	cs.Initialize.Size(20).Append("Click on underine word: ")
	cs.Clickable("cs", 1).Underline.Append("One").Pop.Pop
	cs.Append(", ").Clickable("cs", 2).Underline.Append("Two").PopAll
	cs.EnableClickEvents(lbl)
	lbl.Text = cs
End Sub

Sub cs_Click (Tag As Object)
	Log($"You have clicked on word: ${Tag}"$)
End Sub</code>
[Met]    Underline() As CSBuilder    ' Starts an underline span.
[Met]    RelativeSize(Proportion As Float) As CSBuilder    ' Starts a relative size span. The actual text size will be multiplied with the set Proportion.
[Met]    EnableClickEvents(Label As TextView)    ' This method should be called when using clickable spans.
[Met]    VerticalAlign(Shift As Int) As CSBuilder    ' Starts a vertical alignment span.
[Met]    PopAll() As CSBuilder    ' Closes all open spans.
[Met]    Typeface(Typeface As Typeface) As CSBuilder    ' Starts a custom typeface span.
[Met]    Color(Color As Int) As CSBuilder    ' Starts a foreground color span.
[Met]    ScaleX(Proportion As Float) As CSBuilder    ' Starts a scale X span. It horizontally scales the text.
[Met]    Pop() As CSBuilder    ' Closes the most recent span. All spans must be closed. You can call PopAll to close all open spans.
[Met]    Append(Text As CharSequence) As CSBuilder    ' Appends the provided String or CharSequence.
[Met]    Bold() As CSBuilder    ' Starts a bold span.
[Met]    ToString() As String    ' Returns a string with the characters.
[Met]    BackgroundColor(Color As Int) As CSBuilder    ' Starts a background color span.
[Event]  Click (Tag As Object).Trim()

' === CLASE: View (anywheresoftware.b4a.objects.ConcreteViewWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    IsInitialized() As Boolean 
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  Click.Trim()
[Event]  LongClick.Trim()

' === CLASE: CheckBox (anywheresoftware.b4a.objects.CompoundButtonWrapper.CheckBoxWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] TextSize As Float    ' Get or sets the view's text size.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:RW] Checked As Boolean 
[Prop:RW] Ellipsize As String    ' Gets or sets the truncation mode. Only affects single line fields.
Possible values:
NONE
START - The three dots appear at the beginning.
MIDDLE - The three dots appear at the middle.
END - The three dots appear at the end.
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Prop:W] SingleLine As Boolean    ' Sets whether the text field should be in single line mode or multiline mode.
[Prop:RW] Gravity As Int 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    SetTextSizeAnimated(Duration As Int, TextSize As Float)    ' Changes the text size with an animation effect.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SetTextColorAnimated(Duration As Int, ToColor As Int)    ' Changes the text color with a transition animation between the current color and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  CheckedChange(Checked As Boolean).Trim()

' === CLASE: RadioButton (anywheresoftware.b4a.objects.CompoundButtonWrapper.RadioButtonWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] TextSize As Float    ' Get or sets the view's text size.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:RW] Checked As Boolean 
[Prop:RW] Ellipsize As String    ' Gets or sets the truncation mode. Only affects single line fields.
Possible values:
NONE
START - The three dots appear at the beginning.
MIDDLE - The three dots appear at the middle.
END - The three dots appear at the end.
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Prop:W] SingleLine As Boolean    ' Sets whether the text field should be in single line mode or multiline mode.
[Prop:RW] Gravity As Int 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    SetTextSizeAnimated(Duration As Int, TextSize As Float)    ' Changes the text size with an animation effect.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SetTextColorAnimated(Duration As Int, ToColor As Int)    ' Changes the text color with a transition animation between the current color and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  CheckedChange(Checked As Boolean).Trim()

' === CLASE: ToggleButton (anywheresoftware.b4a.objects.CompoundButtonWrapper.ToggleButtonWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] TextSize As Float    ' Get or sets the view's text size.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Checked As Boolean 
[Prop:RW] TextOn As String    ' Gets or sets the text that will appear in the ON mode.
[Prop:RW] Ellipsize As String    ' Gets or sets the truncation mode. Only affects single line fields.
Possible values:
NONE
START - The three dots appear at the beginning.
MIDDLE - The three dots appear at the middle.
END - The three dots appear at the end.
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] TextOff As String    ' Gets or sets the text that will appear in the OFF mode.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Prop:W] SingleLine As Boolean    ' Sets whether the text field should be in single line mode or multiline mode.
[Prop:RW] Gravity As Int 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    SetTextSizeAnimated(Duration As Int, TextSize As Float)    ' Changes the text size with an animation effect.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SetTextColorAnimated(Duration As Int, ToColor As Int)    ' Changes the text color with a transition animation between the current color and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  CheckedChange(Checked As Boolean).Trim()

' === CLASE: Button (anywheresoftware.b4a.objects.ButtonWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:RW] Typeface As Typeface 
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] TextSize As Float    ' Get or sets the view's text size.
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String 
[Prop:RW] Ellipsize As String    ' Gets or sets the truncation mode. Only affects single line fields.
Possible values:
NONE
START - The three dots appear at the beginning.
MIDDLE - The three dots appear at the middle.
END - The three dots appear at the end.
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] TextColor As Int 
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Prop:W] SingleLine As Boolean    ' Sets whether the text field should be in single line mode or multiline mode.
[Prop:RW] Gravity As Int 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    SetTextSizeAnimated(Duration As Int, TextSize As Float)    ' Changes the text size with an animation effect.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SetTextColorAnimated(Duration As Int, ToColor As Int)    ' Changes the text color with a transition animation between the current color and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  Click.Trim()
[Event]  LongClick.Trim()

' === CLASE: Exception (anywheresoftware.b4a.objects.B4AException) ===
[Prop:R] Message As String 
[Met]    IsInitialized() As Boolean 

' === CLASE: AutoCompleteEditText (anywheresoftware.b4a.objects.AutoCompleteEditTextWrapper) ===
[Prop:W] Wrap As Boolean    ' Sets whether the text content will wrap within the EditText bounds. Relevant when the EditText is in multiline mode.
Example:<code>
EditText1.Wrap = False</code>
[Prop:RW] Left As Int    ' Gets or sets the view's left position.
[Prop:W] ForceDoneButton As Boolean    ' By default the OS sets the virtual keyboard action key to display Done or Next according to the specific layout.
You can force it to display Done by setting this value to True.
Example:<code>
EditText1.ForceDoneButton = True</code>
[Prop:RW] Hint As String    ' Gets or sets the text that will appear when the EditText is empty.
Example:<code>
EditText1.Hint = "Enter username"</code>
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:RW] SelectionStart As Int    ' Gets or sets the selection start position (or the cursor position).
Returns -1 if there is no selection or cursor.
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] TextColor As Int 
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Prop:RW] Gravity As Int 
[Prop:RW] HintColor As Int    ' Gets or sets the hint text color.
Example:<code>
EditText1.HintColor = Colors.Gray</code>
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:RW] Typeface As Typeface 
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:RW] TextSize As Float    ' Get or sets the view's text size.
[Prop:RW] Enabled As Boolean 
[Prop:W] PasswordMode As Boolean    ' Sets whether the EditText should be in password mode and hide the actual characters.
[Prop:RW] Text As String 
[Prop:RW] Ellipsize As String    ' Gets or sets the truncation mode. Only affects single line fields.
Possible values:
NONE
START - The three dots appear at the beginning.
MIDDLE - The three dots appear at the middle.
END - The three dots appear at the end.
[Prop:RW] InputType As Int    ' Gets or sets the input type flag. This flag is used to determine the settings of the virtual keyboard.
Note that changing the input type will set the EditText to be in single line mode.
Example:<code>
EditText1.InputType = EditText1.INPUT_TYPE_NUMBERS</code>
[Prop:RW] Top As Int    ' Gets or sets the view's top position.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:W] SingleLine As Boolean    ' Sets whether the EditText should be in single line mode or multiline mode.
[Prop:R] SelectionLength As Int    ' Gets the selection length.
[Met]    IsInitialized() As Boolean 
[Met]    SelectAll()    ' Selects the entire text.
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    SetTextSizeAnimated(Duration As Int, TextSize As Float)    ' Changes the text size with an animation effect.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    SetTextColorAnimated(Duration As Int, ToColor As Int)    ' Changes the text color with a transition animation between the current color and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetItems(Items As List)    ' Sets the list of possible items.
The items visual style will be the same as the style of the main text.
[Met]    ShowDropDown()    ' Forces the drop down list to appear.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    RemoveView()    ' Removes this view from its parent.
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    DismissDropDown()    ' Forces the drop down list to disappear.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetItems2(Items As List, Typeface As Typeface, Gravity As Int, TextSize As Float, TextColor As Int)    ' Sets the list of possible items and specifies their style.
Example:<code>
Dim act As AutoCompleteEditText
act.Initialize("act")
Activity.AddView(act, 10dip, 10dip, 200dip, 80dip)
act.SetItems2(Array As String("aab", "abc"), act.Typeface, Gravity.LEFT, 12, Colors.Green) </code>
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    SetSelection(Start As Int, Length As Int)    ' Sets the selected text.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  ItemClick (Value As String).Trim()
[Event]  TextChanged (Old As String, New As String).Trim()
[Event]  EnterPressed.Trim()
[Event]  FocusChanged (HasFocus As Boolean).Trim()

' === CLASE: Activity (anywheresoftware.b4a.objects.ActivityWrapper) ===
[Prop:RW] Left As Int 
[Prop:RW] Background As Drawable    ' Gets or sets the background drawable.
[Prop:R] Parent As Object    ' Returns the view's parent. In most cases the returned value can be casted to a Panel.
Returns Null if there is no parent.
[Prop:W] Color As Int    ' Sets the background of the view to be a ColorDrawable with the given color.
If the current background is of type GradientDrawable or ColorDrawable the round corners will be kept.
[Prop:R] NumberOfViews As Int    ' Returns the number of child views.
[Prop:RW] Title As CharSequence 
[Prop:RW] Top As Int 
[Prop:RW] Padding As Int()    ' Gets or sets the view's padding (distance between border and content).
The data is stored in a 4 element array with the following values: left, top, right and bottom.
Make sure to use 'dip' units when setting the padding. 
Example: <code>Button1.Padding = Array As Int (30dip, 10dip, 10dip, 10dip)</code>
[Prop:RW] TitleColor As Int    ' Gets or sets the title color. This property is only supported by Android 2.x devices. It will not do anything on newer devices.
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder which can used to store additional data.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Met]    AddMenuItem2(Title As CharSequence, EventName As String, Bitmap As Bitmap)    ' Adds a menu item to the activity.
Title - Menu item title.
EventName - The prefix name of the sub that will handle the click event.
Bitmap - Bitmap to draw as the item background.
Only the first five (or six if there are six total) menu items display icons.
This method should only be called inside sub Activity_Create.
Note that the 'Sender' value inside the click event equals to the clicked menu item text.
Example:<code>
Activity.AddMenuItem2("Open File", "OpenFile", LoadBitmap(File.DirAssets, "SomeImage.png"))
...
Sub OpenFile_Click
...
End Sub</code>
[Met]    GetView(Index As Int) As ConcreteView    ' Gets the view that is stored in the specified index.
[Met]    RerunDesignerScript(Layout As String, Width As Int, Height As Int)    ' <b>This method is deprecated.</b> It ignores the anchoring features and it will fail in Rapid Debug mode.
You should instead remove the views and load the layout again.
[Met]    AddView(View As View, Left As Int, Top As Int, Width As Int, Height As Int)    ' Adds a view to this activity.
[Met]    GetStartingIntent() As Intent    ' (Advanced) Gets the intent object that started this Activity.
This can be used together with SetActivityResult to return results to 3rd party applications.
[Met]    IsInitialized() As Boolean 
[Met]    GetAllViewsRecursive() As IterableList    ' Returns an iterator that iterates over all the child views including views that were added to other child views.
Example:<code>
For Each v As View In Activity.GetAllViewsRecursive
	...
Next</code>
[Met]    Initialize(EventName As String)    ' Initializes the view and sets the subs that will handle the events.
<b>Views added with the designer should NOT be initialized. These views are initialized when the layout is loaded.</b>
[Met]    SetLayout(Left As Int, Top As Int, Width As Int, Height As Int)    ' Changes the view position and size.
[Met]    RemoveViewAt(Index As Int)    ' Removes the view that is stored in the specified index.
[Met]    Finish()    ' Closes this activity.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Changes the view visibility with a fade-in or fade-out animation.
You must 
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
Visible - New visibility state.
[Met]    SetActivityResult(Result As Int, Data As Intent)    ' (Advanced) Sets the result that the calling Activity will get after calling StartActivityForResult.
[Met]    AddMenuItem(Title As CharSequence, EventName As String)    ' Adds a menu item to the activity.
Title - Menu item title.
EventName - The prefix name of the sub that will handle the click event.
This method should only be called inside sub Activity_Create.
Note that the 'Sender' value inside the click event equals to the clicked menu item text.
Example:<code>
Activity.AddMenuItem("Open File", "OpenFile")
...
Sub OpenFile_Click
...
End Sub</code>
[Met]    Invalidate3(Left As Int, Top As Int, Right As Int, Bottom As Int)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    Invalidate2(Rect As Rect)    ' Invalidates the given rectangle.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    LoadLayout(LayoutFile As String) As LayoutValues    ' Loads a layout file (.bal).
Returns the LayoutValues of the actual layout variant that was loaded.
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
The transition is based on the HSV color space.
Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    OpenMenu()    ' Programmatically opens the menu.
[Met]    SetBackgroundImageNew(Bitmap As Bitmap) As BitmapDrawable    ' Creates a BitmapDrawable with the given Bitmap and sets it as the view's background. The Gravity is set to FILL.
The BitmapDrawable is returned. You can use it to change the Gravity.
[Met]    DisableAccessibility(Disable As Boolean)    ' This method was added as a workaround for the following <link>Android bug|https://code.google.com/p/android/issues/detail?id=55933</link>.
 By setting the Disable property to True the child views (of all Activities) will not be added to the accessibility enabled list.
[Met]    RemoveAllViews()    ' Removes all child views.
[Met]    Invalidate()    ' Invalidates the whole view forcing the view to redraw itself.
Redrawing will only happen when the program can process messages. Usually when it finishes running the current code.
[Met]    CloseMenu()    ' Programmatically closes the menu.
[Met]    AddMenuItem3(Title As CharSequence, EventName As String, Bitmap As Bitmap, AddToActionBar As Boolean)    ' Similar to AddMenuItem2. If AddToActionBar is true then the item will be displayed in the action bar (on Android 3.0+ devices) if there is enough room.
If there is not enough room then the item will be displayed together with the other menu items.
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.
Duration - Animation duration measured in milliseconds.
[Met]    RequestFocus() As Boolean    ' Tries to set the focus to this view.
Returns True if the focus was set.
[Event]  Touch (Action As Int, X As Float, Y As Float).Trim()
[Event]  KeyPress (KeyCode As Int) As Boolean 'Return True to consume the event.Trim()
[Event]  KeyUp (KeyCode As Int) As Boolean.Trim()
[Event]  WindowFocusChanged (Focused As Boolean).Trim()
[Event]  ActionBarHomeClick.Trim()
[Event]  PermissionResult (Permission As String, Result As Boolean).Trim()
[Event]  Click.Trim()
[Event]  LongClick.Trim()

' === CLASE: StringBuilder (anywheresoftware.b4a.keywords.StringBuilderWrapper) ===
[Prop:R] Length As Int    ' Returns the number of characters.
[Met]    Remove(StartOffset As Int, EndOffset As Int) As StringBuilder    ' Removes the specified characters.
StartOffset - The first character to remove.
EndOffset - The ending index. This character will not be removed.
[Met]    IsInitialized() As Boolean 
[Met]    Insert(Offset As Int, Text As String) As StringBuilder    ' Inserts the specified text at the specified offset.
[Met]    Initialize()    ' Initializes the object.
Example:<code>
Dim sb As StringBuilder
sb.Initialize
sb.Append("The value is: ").Append(SomeOtherVariable).Append(CRLF)</code>
[Met]    Append(Text As String) As StringBuilder    ' Appends the specified text at the end.
Returns the same object, so you can chain methods.
Example:<code>
sb.Append("First line").Append(CRLF).Append("Second line")</code>
[Met]    ToString() As String    ' Converts the object to a string.

' === CLASE: Regex (anywheresoftware.b4a.keywords.Regex) ===
[Met]    Replace(Pattern As String, Text As String, Template As String) As String    ' Replaces all the matches in the text based on the specified pattern and template.
Example:<code>
Log(Regex.Replace("\d", "1 2 3 4", "-$0-")) '-1- -2- -3- -4-</code>
[Met]    IsMatch2(Pattern As String, Options As Int, Text As String) As Boolean    ' Tests whether the given text is a match for the given pattern.
Options - One or more pattern options. These options can be combined with Bit.Or.
[Met]    IsMatch(Pattern As String, Text As String) As Boolean    ' Tests whether the given text is a match for the given pattern.
The whole text should match the pattern. Use Matcher if you look for a substring that matches the pattern.
Example:<code>
If Regex.IsMatch("\d\d\d", EditText1.Text) = False Then ...</code>
[Met]    Matcher(Pattern As String, Text As String) As Matcher    ' Returns a Matcher object which can be used to find matches of the given pattern in the text.
Example:<code>
Dim text, pattern As String
text = "This is an interesting sentence with two numbers: 123456 and 7890."
pattern = "\d+" 'one or more digits
Dim Matcher1 As Matcher
Matcher1 = Regex.Matcher(pattern, text)
Do While Matcher1.Find
	Log("Found: " & Matcher1.Match)
Loop</code>
[Met]    Split2(Pattern As String, Options As Int, Text As String) As String()    ' Same as Split with the additional pattern options.
[Met]    Replace2(Pattern As String, Options As Int, Text As String, Template As String) As String    ' Similar to Replace. Allows setting the regex options.
[Met]    Split(Pattern As String, Text As String) As String()    ' Splits the given text around matches of the pattern.
Note that trailing empty matches will be removed.
Example:<code>
Dim components() As String
components = Regex.Split(",", "abc,def,,ghi") 'returns: "abc", "def", "", "ghi"
components = Regex.Split("\|", "abd|def||ghi") 'the pipe needs to be escaped as it has special meaning in Regex.</code>
[Met]    Matcher2(Pattern As String, Options As Int, Text As String) As Matcher    ' Same as Matcher with the additional pattern options.

' === CLASE: Matcher (anywheresoftware.b4a.keywords.Regex.MatcherWrapper) ===
[Prop:R] GroupCount As Int    ' Returns the number of capturing groups in the pattern.
Note that the number returned does not include group(0) which is the whole match.
[Prop:R] Match As String    ' Returns the matched value. This is the same as calling Group(0).
[Met]    Group(Index As Int) As String    ' Returns the value of the specified captured group.
Group(0) returns the whole match.
[Met]    Find() As Boolean    ' Searches for the next substring that matches the pattern.
Returns True if such a match was found.
Example:<code>
Dim text, pattern As String
text = "This is an interesting sentence with two numbers: 123456 and 7890."
pattern = "\d+" 'one or more digits
Dim Matcher1 As Matcher
Matcher1 = Regex.Matcher(pattern, text)
Do While Matcher1.Find
	Log("Found: " & Matcher1.Match)
Loop</code>
[Met]    GetEnd(Index As Int) As Int    ' Returns the end offset of the specified captured group.
Use GetEnd(0) to get the end offset of the whole match.
[Met]    IsInitialized() As Boolean 
[Met]    GetStart(Index As Int) As Int    ' Returns the start offset of the specified captured group.
Use GetStart(0) to get the start offset of the whole match.

' === CLASE: LayoutValues (anywheresoftware.b4a.keywords.LayoutValues) ===
[Prop:R] ApproximateScreenSize As Double    ' Returns the approximate screen size.
[Met]    toString() As String 

' === CLASE: LayoutValuesAndMap (anywheresoftware.b4a.keywords.LayoutBuilder.LayoutValuesAndMap) ===

' === CLASE: DesignerArgs (anywheresoftware.b4a.keywords.DesignerArgs) ===
[Prop:R] ParentHeight As Int    ' Returns the layout parent height.
[Prop:R] ChosenVariant As LayoutValues    ' Returns the parameters of the chosen variant.
[Prop:R] LayoutModule As Object    ' Returns a reference to the module that the layout is being loaded to. Can be used with CallSub.
[Prop:R] Views As List    ' Returns a list with the layout views.
[Prop:R] Parent As View    ' Returns the layout parent.
[Prop:R] ViewsNames As List    ' Returns a list with the views names.
[Prop:R] Arguments As List    ' Returns the passed arguments.
[Prop:R] FirstRun As Boolean    ' Returns true if the layout is being created right now.
It will always be true in B4A as there is no resize event.
[Prop:R] ParentWidth As Int    ' Returns the layout parent width.
[Prop:R] DesignerProperties As Map    ' Returns the low level layout data.
[Met]    GetViewByName(Name As String) As View    ' Returns the view with the set name.
Throws an error if no such view exists.
[Met]    GetViewFromArgs(Index As Int) As View    ' Shorthand for GetViewByName(Args(Index)).

' === CLASE: DateTime (anywheresoftware.b4a.keywords.DateTime) ===
[Prop:RW] TimeFormat As String    ' Gets or sets the format used to parse time strings.
See this page for the supported patterns: <link>formats|http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html</link>.
The default pattern is HH:mm:ss (23:45:12 for example). <b>HH not hh</b>.
[Prop:R] DeviceDefaultTimeFormat As String    ' Returns the default time format based on the device selected language.
[Prop:R] Now As Long    ' Gets the current time as ticks (number of milliseconds since January 1, 1970).
[Prop:RW] DateFormat As String    ' Gets or sets the format used to parse date strings.
See this page for the supported patterns: <link>formats|http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html</link>.
The default pattern is MM/dd/yyyy (04/23/2002 for example). <b>MM not mm</b>.
[Prop:R] DeviceDefaultDateFormat As String    ' Returns the default date format based on the device selected language.
[Prop:R] TimeZoneOffset As Double    ' Returns the current offset measured in hours from UTC.
[Met]    Add(Ticks As Long, Years As Int, Months As Int, Days As Int) As Long    ' Returns a ticks value which is the result of adding the specified time spans to the given ticks value.
Pass negative values if you want to subtract the values.
Example:<code>
Dim Tomorrow As Long
Tomorrow = DateTime.Add(DateTime.Now, 0, 0, 1)
Log("Tomorrow date is: " & DateTime.Date(Tomorrow))</code>
[Met]    GetHour(Ticks As Long) As Int    ' Returns the hour of day component from the ticks value.
Values are between 0 to 23.
[Met]    TimeParse(Time As String) As Long    ' Parses the given time string and returns its ticks representation.
Note that the returned value date will be today.
[Met]    DateParse(Date As String) As Long    ' Parses the given date string and returns its ticks representation.
An exception will be thrown if parsing fails.
Example:<code>
Dim SomeTime As Long
SomeTime = DateTime.DateParse("02/23/2007")</code>
[Met]    DateTimeParse(Date As String, Time As String) As Long    ' Parses the given date and time strings and returns the ticks representation.
[Met]    GetMonth(Ticks As Long) As Int    ' Returns the month of year component from the ticks value.
Values are between 1 to 12.
[Met]    Time(Ticks As Long) As String    ' Returns a string representation of the time (which is stored as ticks).
The time format can be set with the TimeFormat keyword.
Example:<code>
Log("The time now is: " & DateTime.Time(DateTime.Now))</code>
[Met]    Date(Ticks As Long) As String    ' Returns a string representation of the date (which is stored as ticks).
The date format can be set with the DateFormat keyword.
Example:<code>
Log("Today is: " & DateTime.Date(DateTime.Now))</code>
[Met]    GetSecond(Ticks As Long) As Int    ' Returns the seconds within a minute component from the ticks value.
Values are between 0 to 59.
[Met]    GetMinute(Ticks As Long) As Int    ' Returns the minutes within a hour component from the ticks value.
Values are between 0 to 59.
[Met]    GetTimeZoneOffsetAt(Date As Long) As Double    ' Returns the offset measured in hours from UTC at the specified date (offset can change due to daylight saving settings).
[Met]    GetYear(Ticks As Long) As Int    ' Returns the year component from the ticks value.
[Met]    GetDayOfYear(Ticks As Long) As Int    ' Returns the day of year component from the ticks value.
Values are between 1 to 366.
[Met]    SetTimeZone(OffsetHours As Double)    ' Sets the application time zone. This setting affect the conversions of dates to ticks value and vice versa (device default settings are not changed).
[Met]    GetDayOfMonth(Ticks As Long) As Int    ' Returns the day of month component from the ticks value.
Values are between 1 to 31.
[Met]    GetDayOfWeek(Ticks As Long) As Int    ' Returns the day of week component from the ticks value.
Values are between 1 to 7, where 1 means Sunday.
You can use the AHLocale library if you need to change the first day.
[Met]    ListenToExternalTimeChanges()    ' Creates a dynamic broadcast receiver that listens to the "time-zone changed" event and "time set" event.
By calling this method the time-zone will update automatically when the device time-zone changes.
DateTime_TimeChanged event will be raised when the time-zone changes or when the time is set.
[Event]  TimeChanged.Trim()

' === CLASE: Common (anywheresoftware.b4a.keywords.Common) ===
[Met]    PerYToCurrent(Percentage As Float) As Int    ' Returns the actual size of the given percentage of the activity height.
Example:
Button1.Height = PerYToCurrent(50) 'Button1.Height = 50% * Activity.Height

A shorthand syntax for this method is available. Any number followed by the string '%y'
will be converted in the same manner (no spaces are allowed between the number and '%y').
So the previous code is equivalent to:
Button1.Height = 50%y
[Met]    CallSubDelayed3(Component As Object, Sub As String, Argument1 As Object, Argument2 As Object)    ' Similar to CallSubDelayed. Calls a sub with two arguments.
[Met]    RndSeed(Seed As Long)    ' Sets the random seed value. 
This method can be used for debugging as it allows you to get the same results each time.
[Met]    CallSubDelayed2(Component As Object, Sub As String, Argument As Object)    ' Similar to CallSubDelayed. Calls a sub with a single argument.
[Met]    GetDeviceLayoutValues() As LayoutValues    ' Returns the device LayoutValues.

Example:<code>
Log(GetDeviceLayoutValues)</code>
[Met]    CallSubNew(Component As Object, Sub As String) As Object    ' Calls the given sub. CallSub can be used to call a sub which belongs to a different module.
However the sub will only be called if the other module is not paused. In that case an empty string will be returned.
You can use IsPaused to test whether a module is paused.
This means that one activity cannot call a sub of a different activity. As the other activity will be paused for sure.
CallSub allows an activity to call a service sub or a service to call an activity sub.
CallSub can also be used to call subs in the current module. Pass Me as the component in that case.
Note that it is not possible to call subs of code modules.
To avoid issues with obfuscation, it is recommended to include an underscore in the target sub name.
Example:<code>
CallSub(Main, "RefreshData")</code>
[Met]    StartActivity(Activity As Object)    ' Starts an activity or brings it to front if it already exists.
The target activity will be started once the program is free to process its message queue.
Activity can be a string with the target activity name or it can be the actual activity.
After this call the current activity will be paused and the target activity will be resumed.
This method can also be used to send Intents objects to the system.
Note that you should usually not call StartActivity from a Service.
Example: StartActivity (Activity2)
[Met]    InputListAsync(Items As List, Title As CharSequence, CheckedItem As Int, Cancelable As Boolean) As Object    ' Shows a non-modal dialog with a list of items and radio buttons. Pressing on an item will close the dialog.
Returns the index of the selected item or DialogResponse.Cancel if the user pressed on the back key.
The InputList_Result event will be raised with the result.
List - Items to display.
Title - Dialog title.
CheckedItem - The index of the item that will first be selected. Pass -1 if no item should be preselected.
Cancelable - If true then the dialog can be canceled by clicking on the back key or outside the dialog.
The object returned can be used as the Sender Filter parameter of Wait For.
Example: <code>
Dim options As List = Array("Red", "Green", "Blue")
InputListAsync(options, "Select Color", 0, False)
Wait For InputList_Result (Index As Int)
If Index <> DialogResponse.CANCEL Then
	Log("Selected color: " & options.Get(Index))
End If</code>
[Met]    StartService(Service As Object)    ' Starts the given service. The service will be first created if it was not started before.
The target service will be started once the program is free to process its message queue.
Note that you cannot show a Msgbox after this call and before the service starts.
Service - The service module or the service name.
Example:<code>
StartService(SQLService)</code>
[Met]    CallSubNew3(Component As Object, Sub As String, Argument1 As Object, Argument2 As Object) As Object    ' Similar to CallSub. Calls a sub with two arguments.
[Met]    ATanD(Value As Double) As Double    ' Returns the angle measured with degrees.
[Met]    CallSubNew2(Component As Object, Sub As String, Argument As Object) As Object    ' Similar to CallSub. Calls a sub with a single argument.
[Met]    Exit()    ' Exits the most inner loop.
Note that Exit inside a Select block will exit the Select block.
[Met]    Msgbox(Message As CharSequence, Title As CharSequence)    ' Shows a modal message box with the specified message and title.
The dialog will show one OK button.
<b>It is recommended to use MsgboxAsync instead.</b>
Note that services cannot show dialogs.
[Met]    Msgbox2Async(Message As CharSequence, Title As CharSequence, Positive As String, Cancel As String, Negative As String, Icon As Bitmap, Cancelable As Boolean) As Object    ' Shows a non-modal message box with the specified message and title. The Msgbox_Result event will be raised with the result.
Message - The dialog message.
Title - The dialog title.
Positive - The text to show for the "positive" button. Pass "" to hide the button.
Cancel - The text to show for the "cancel" button. Pass "" to hide the button.
Negative - The text to show for the "negative" button. Pass "" to hide the button.
Icon - A bitmap that will be drawn near the title. Pass Null to hide hide the icon.
Cancelable - If true then the dialog can be canceled by clicking on the back key or outside the dialog.
The object returned can be used as the Sender Filter parameter of Wait For.
Example:<code>
Msgbox2Async("Question?", "Title", "Yes", "Cancel", "No", Null, False)
Wait For Msgbox_Result (Result As Int)
If Result = DialogResponse.POSITIVE Then
	'...
End If</code>
[Met]    Sub()    ' Declares a sub with the parameters and return type.
Syntax: Sub name [(list of parameters)] [As return-type]
Parameters include name and type.
The lengths of arrays dimensions should not be included.
Example:<code>
Sub MySub (FirstName As String, LastName As String, Age As Int, OtherValues() As Double) As Boolean
 ...
End Sub</code>
In this example OtherValues is a single dimension array.
The return type declaration is different than other declarations as the array parenthesis follow the type and not
the name (which does not exist in this case).
[Met]    Log(Message As String)    ' Logs a message. The log can be viewed in the Logs tab.
[Met]    ProgressDialogHide()    ' Hides a visible progress dialog. Does not do anything if no progress dialog is visible.
[Met]    ATan2(Y As Double, X As Double) As Double    ' Returns the angle measured with radians.
[Met]    CallSubDelayed(Component As Object, Sub As String)    ' CallSubDelayed is a combination of StartActivity, StartService and CallSub.
Unlike CallSub which only works with currently running components, CallSubDelayed will first start the target component if needed.
CallSubDelayed can also be used to call subs in the current module. Instead of calling these subs directly, a message will be sent to the message queue.
The sub will be called when the message is processed. This is useful in cases where you want to do something "right after" the current sub (usually related to UI events).
Note that if you call an Activity while the whole application is in the background (no visible activities), the sub will be executed once the target activity is resumed.
[Met]    StopService(Service As Object)    ' Stops the given service. Service_Destroy will be called. Call StartService afterwards will first create the service.
Service - The service module or service name. Pass Me to stop the current service (from the service module).
Example:<code>
StopService(SQLService)</code>
[Met]    StartReceiverAt(Receiver As Object, Time As Long, DuringSleep As Boolean)    ' Schedules the given receiver to start at the given time. Does not work with services in newer versions of Android.
Receiver - The receiver module. Pass Me when calling from a receiver module that schedules itself.
Time - The time to start the receiver. If this time has already past the receiver will be started now.
The actual delivery time might change to reduce battery usage. Use StartServiceAtExact if the exact time is important.
DuringSleep - Whether to start the receiver when the device is sleeping. If set to false and the device is sleeping
at the specified time, the receiver will be started when the device wakes up.
Setting DuringSleep to True can have a large impact on the battery usage.
This call cancels previous scheduled tasks (for the same receiver).
Example:<code>
StartServiceAt(Receiver1, DateTime.Now + 30 * 1000, false) 'will start after 30 seconds.</code>
[Met]    GetType(object As Object) As String    ' Returns a string representing the object's java type.
[Met]    Sender() As Object    ' Returns the object that raised the event.
Only valid while inside the event sub and before calls to Sleep or Wait For.
Example:<code>
Sub Button_Click
 Dim b As B4XView = Sender
 b.Text = "I've been clicked"
End Sub</code>
[Met]    StartServiceAt(Receiver As Object, Time As Long, DuringSleep As Boolean)    ' Use StartReceiverAt instead.
[Met]    Min(Number1 As Double, Number2 As Double) As Double    ' Returns the smaller number between the two numbers.
[Met]    MsgboxAsync(Message As CharSequence, Title As CharSequence)    ' Shows a non-modal message box with the specified message and title.
The dialog will show one OK button.
Note that services cannot show dialogs.
You can use Wait For to wait for the Msgbox_Result event, if you want to continue the code flow after the dialog is dismissed.
Example:<code>
MsgboxAsync("Hello world", "This is the title")</code>
[Met]    Ceil(Number As Double) As Double    ' Returns the smallest double that is greater or equal to the specified number and is equal to an integer.
[Met]    LoadBitmapSample(Dir As String, FileName As String, MaxWidth As Int, MaxHeight As Int) As Bitmap    ' Loads the bitmap.
The decoder will subsample the bitmap if MaxWidth or MaxHeight are smaller than the bitmap dimensions.
This can save a lot of memory when loading large images.
<b>In most cases it is better to use LoadBitmapResize.</b>
Example:<code>
Activity.SetBackgroundImage(LoadBitmapSample(File.DirAssets, "SomeFile.jpg", Activity.Width, Activity.Height))</code>
[Met]    If()    ' Single line:
If condition Then true-statement [Else false-statement]
Multiline:
If condition Then
 statement
Else If condition Then
 statement
...
Else
 statement
End If
[Met]    InputList(Items As List, Title As CharSequence, CheckedItem As Int) As Int    ' Shows a modal dialog with a list of items and radio buttons. Pressing on an item will close the dialog.
Returns the index of the selected item or DialogResponse.Cancel if the user pressed on the back key.
It is recommended to use InputListAsync instead.
List - Items to display.
Title - Dialog title.
CheckedItem - The index of the item that will first be selected. Pass -1 if no item should be preselected.
[Met]    Max(Number1 As Double, Number2 As Double) As Double    ' Returns the larger number between the two numbers.
[Met]    Catch()    ' Any exception thrown inside a try block will be caught in the catch block.
Call LastException to get the caught exception.
Syntax:
Try
 ...
Catch
 ...
End Try
[Met]    IIf(Condition As Boolean, TrueValue As Object, FalseValue As Object) As Object    ' Inline If - returns TrueValue if Condition is True and False otherwise. Only the relevant expression is evaluated.
[Met]    ATan2D(Y As Double, X As Double) As Double    ' Returns the angle measured with degrees.
[Met]    Is()    ' Tests whether the object is of the given type.
Example:<code>
For i = 0 To Activity.NumberOfViews - 1
  If Activity.GetView(i) Is Button Then
   Dim b As Button
   b = Activity.GetView(i)
   b.Color = Colors.Blue
  End If
Next</code>
[Met]    Asc(Char As Char) As Int    ' Returns the unicode code point of the given character or first character in string.
[Met]    Abs(Number As Double) As Double    ' Returns the absolute value.
[Met]    IsNumber(Text As String) As Boolean    ' Tests whether the specified string can be safely parsed as a number.
[Met]    ExitApplication()    ' Immediately ends the application and stops the process.
Most applications should not use this method and prefer Activity.Finish which lets the OS decide when the process is killed.
[Met]    PerXToCurrent(Percentage As Float) As Int    ' Returns the actual size of the given percentage of the activity width.
Example:
Button1.Width = PerXToCurrent(50) 'Button1.Width = 50% * Activity.Width

A shorthand syntax for this method is available. Any number followed by the string '%x'
will be converted in the same manner (no spaces are allowed between the number and '%x').
So the previous code is equivalent to:
Button1.Width = 50%x
[Met]    SubExists(Object As Object, Sub As String) As Boolean    ' Tests whether the object includes the specified method.
Returns false if the object was not initialized or not an instance of a user class.
[Met]    InputMultiList(Items As List, Title As CharSequence) As List    ' Shows a modal dialog with a list of items and checkboxes. The user can select multiple items.
The dialog is closed by pressing on the "Ok" button.
Returns a list with the indices of the selected items. The list is sorted.
Returns an empty list if the user has pressed on the back key.
[Met]    Cos(Radians As Double) As Double    ' Calculates the trigonometric cosine function. Angle measured in radians.
[Met]    Sqrt(Value As Double) As Double    ' Returns the positive square root.
[Met]    Dim()    ' Declares a variable.
Syntax:
Declare a single variable:
Dim variable name [As type] [= expression]
The default type is String.

Declare multiple variables. All variables will be of the specified type.
Dim [Const] variable1 [= expression], variable2 [= expression], ..., [As type]
Note that the shorthand syntax only applies to Dim keyword.
Example:<code>Dim a = 1, b = 2, c = 3 As Int</code>

Declare an array:
Dim variable(Rank1, Rank2, ...) [As type]
Example:<code>Dim Days(7) As String</code>
The actual rank can be omitted for zero length arrays.
[Met]    ProgressDialogShow2(Text As CharSequence, Cancelable As Boolean)    ' Shows a dialog with a circular spinning bar and the specified text.
Unlike Msgbox and InputList methods, the code will not block.
You should call ProgressDialogHide to remove the dialog.
Cancelable - Whether the user can dismiss the dialog by pressing on the Back key.
[Met]    IsDevTool(ToolName As String) As Boolean    ' Returns true if ToolName equals B4A.
[Met]    Type()    ' Declares a structure.
Can only be used inside sub Globals or sub Process_Globals.
Syntax:
Type type-name (field1, field2, ...)
Fields include name and type.
Example:<code>
Type MyType (Name As String, Items(10) As Int)
Dim a, b As MyType
a.Initialize
a.Items(2) = 123</code>
[Met]    Sleep(Milliseconds As Int)    ' Pauses the current sub execution and resumes it after the specified time.
[Met]    InputMapAsync(Items As Map, Title As CharSequence, Cancelable As Boolean) As Object    ' Shows a non-modal dialog with a list of items and checkboxes. The user can select multiple items.
The dialog is closed by pressing on the "Ok" button.
The object returned can be used as the Sender Filter parameter of Wait For.
The items displayed are the map keys. Items with a value of True will be checked.
When the user checks or unchecks an item, the related item value gets updated.
Items - A map object with the items as keys and their checked state as values.
Cancelable - If true then the dialog can be closed by clicking on the back key or outside the dialog (the changes will not be canceled).
Example: <code>
Dim m As Map = CreateMap("Item #1": True, "Item #2": True, "Item #3": False)
InputMapAsync(m, "Select items", True)
Wait For InputMap_Result
Log(m)</code>
[Met]    Select()    ' Compares a single value to multiple values.
Example:<code>
Dim value As Int
value = 7
Select value
	Case 1
		Log("One")
	Case 2, 4, 6, 8
		Log("Even")
	Case 3, 5, 7, 9
		Log("Odd larger than one")
	Case Else
		Log("Larger than 9")
End Select</code>
[Met]    Power(Base As Double, Exponent As Double) As Double    ' Returns the Base value raised to the Exponent power.
[Met]    Tan(Radians As Double) As Double    ' Calculates the trigonometric tangent function. Angle measured in radians.
[Met]    LoadBitmapResize(Dir As String, FileName As String, Width As Int, Height As Int, KeepAspectRatio As Boolean) As Bitmap    ' Loads the bitmap and sets its size.
The bitmap scale will be the same as the device scale.
Unlike LoadBitmapSample which requires the container Gravity to be set to FILL, LoadBitmapResize provides better results when the Gravity is set to CENTER. 
Example:<code>
Dim bd As BitmapDrawable = Activity.SetBackgroundImage(LoadBitmapResize(File.DirAssets, "SomeFile.jpg", 100%x, 100%y, True))
bd.Gravity = Gravity.CENTER</code>
Or:<code>
Activity.SetBackgroundImage(LoadBitmapResize(File.DirAssets, "SomeFile.jpg", 100%x, 100%y, True)).Gravity = Gravity.CENTER</code>
[Met]    Rnd(Min As Int, Max As Int) As Int    ' Returns a random integer between Min (inclusive) and Max (exclusive).
[Met]    Chr(UnicodeValue As Int) As Char    ' Returns the character that is represented by the given unicode value.
[Met]    LoadBitmap(Dir As String, FileName As String) As Bitmap    ' Loads the bitmap.
Note that the Android file system is case sensitive.
You should consider using LoadBitmapSample if the image size is large.
The actual file size is not relevant as images are usually stored compressed.
Example:<code>
Activity.SetBackgroundImage(LoadBitmap(File.DirAssets, "SomeFile.jpg"))</code>
[Met]    ProgressDialogShow(Text As CharSequence)    ' Shows a dialog with a circular spinning bar and the specified text.
Unlike Msgbox and InputList methods, the code will not block.
You should call ProgressDialogHide to remove the dialog.
The dialog will also be removed if the user presses on the Back key.
[Met]    ACos(Value As Double) As Double    ' Returns the angle measured with radians.
[Met]    Try()    ' Any exception thrown inside a try block will be caught in the catch block.
Call LastException to get the caught exception.
Syntax:
Try
 ...
Catch
 ...
End Try
[Met]    CosD(Degrees As Double) As Double    ' Calculates the trigonometric cosine function. Angle measured in degrees.
[Met]    For()    ' Syntax:
For variable = value1 To value2 [Step interval]
 ...
Next
If the iterator variable was not declared before it will be of type Int.

Or:
For Each variable As type In collection
 ...
Next
Examples:<code>
For i = 1 To 10
 Log(i) 'Will print 1 to 10 (inclusive).
Next
For Each n As Int In Numbers 'an array
 Sum = Sum + n
Next
</code>
Note that the loop limits will only be calculated once before the first iteration.
[Met]    SinD(Degrees As Double) As Double    ' Calculates the trigonometric sine function. Angle measured in degrees.
[Met]    IsPaused(Component As Object) As Boolean    ' Tests whether the given component is paused. Will also return true for components that were not started yet.
Example:<code>
If IsPaused(Main) = False Then CallSub(Main, "RefreshData")</code>
[Met]    StartReceiver(Receiver As Object)    ' Starts the given receiver. This will cause Receiver_Receive to run.
[Met]    Not(Value As Boolean) As Boolean    ' Inverts the value of the given boolean.
[Met]    DoEvents()    ' <b>DoEvents is deprecated.</b> It can lead to stability issues.
Consider using Sleep(0) instead.
[Met]    ConfigureHomeWidget(LayoutFile As String, EventName As String, UpdateIntervalMinutes As Int, WidgetName As String, CenterWidget As Boolean) As RemoteViews    ' Creates a RemoteViews object based on the layout file. The compiler will generate the required XML files based on the parameters.
See the widgets tutorial for more information: <link>Widgets tutorial|http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/10166-android-home-screen-widgets-tutorial-part-i.html</link>.
Note that all parameters must be strings or numbers as they are read by the compiler.
LayoutFile - The widget layout file.
EventName - Sets the subs that will handle the RemoteViews events.
UpdateIntervalMinutes - Sets the update interval. Pass 0 to disable automatic updates. Minimum value is 30 (or 0).
WidgetName - The name of the widget as appears in the widgets list.
CenterWidget - Whether to center the widget.
[Met]    Me() As Object    ' For classes: returns a reference to the current instance.
For activities and services: returns a reference to an object that can be used with CallSub, CallSubDelayed and SubExists keywords.
Cannot be used in code modules.
[Met]    Sin(Radians As Double) As Double    ' Calculates the trigonometric sine function. Angle measured in radians.
[Met]    InputMap(Items As Map, Title As CharSequence)    ' Shows a modal dialog with a list of items and checkboxes. The user can select multiple items.
The dialog is closed by pressing on the "Ok" button. The InputMap_Result event will be raised.
It is recommended to use InputMapAsync instead.
The items displayed are the map keys. Items with a value of True will be checked.
When the user checks or unchecks an item, the related item value gets updated.
Items - A map object with the items as keys and their checked state as values.
[Met]    CreateMap()    ' Creates a Map with the given key / value pairs.
The syntax is: CreateMap (key1: value1, key2: value2, ...)
Example: <code>
Dim m As Map = CreateMap("January": 1, "February": 2)</code>
[Met]    ATan(Value As Double) As Double    ' Returns the angle measured with radians.
[Met]    LastException() As B4AException    ' Returns the last exception that was caught (if such exists).
[Met]    TanD(Degrees As Double) As Double    ' Calculates the trigonometric tangent function. Angle measured in degrees.
[Met]    Round2(Number As Double, DecimalPlaces As Int) As Double    ' Rounds the given number and leaves up to the specified number of fractional digits.
[Met]    NumberFormat2(Number As Double, MinimumIntegers As Int, MaximumFractions As Int, MinimumFractions As Int, GroupingUsed As Boolean) As String    ' Converts the specified number to a string. 
The string will include at least Minimum Integers, at most Maximum Fractions digits and at least Minimum Fractions digits.
GroupingUsed - Determines whether to group every three integers.
Example:<code>
Log(NumberFormat2(12345.67, 0, 3, 3, false)) '"12345.670"</code>
[Met]    ASin(Value As Double) As Double    ' Returns the angle measured with radians.
[Met]    CharsToString(Chars As Char(), StartOffset As Int, Length As Int) As String    ' Creates a new String by copying the characters from the array.
Copying starts from StartOffset and the number of characters copied equals to Length.
[Met]    ACosD(Value As Double) As Double    ' Returns the angle measured with degrees.
[Met]    DipToCurrent(Length As Int) As Int    ' Scales the value, which represents a specific length on a default density device (Density = 1.0),
to the current device.
For example, the following code will set the width value of this button to be the same physical size
on all devices.
Button1.Width = DipToCurrent(100)

Note that a shorthand syntax for this method is available. Any number followed by the string 'dip'
will be converted in the same manner (no spaces are allowed between the number and 'dip').
So the previous code is equivalent to:
Button1.Width = 100dip 'dip -> density independent pixel
[Met]    LogColor(Message As String, Color As Int)    ' Logs a message. The message will be displayed in the IDE with the specified color.
[Met]    Continue()    ' Stops executing the current iteration and continues with the next one.
[Met]    SmartStringFormatter(Format As String, Value As Object) As String    ' Internal keyword used by the Smart String literal.
[Met]    Logarithm(Number As Double, Base As Double) As Double 
[Met]    Round(Number As Double) As Long    ' Returns the closest long number to the given number.
[Met]    ToastMessageShow(Message As CharSequence, LongDuration As Boolean)    ' Shows a quick little message that goes out automatically.
Message - The text message to show.
LongDuration - If true then shows the message for a long period, otherwise shows the message for a short period.
[Met]    BytesToString(Data As Byte(), StartOffset As Int, Length As Int, CharSet As String) As String    ' Decodes the given bytes array as a string.
Data - The bytes array.
StartOffset - The first byte to read.
Length - Number of bytes to read.
CharSet - The name of the character set.
Example:<code>
Dim s As String
s = BytesToString(Buffer, 0, Buffer.Length, "UTF-8")</code>
[Met]    Until()    ' Loops until the condition is true.
 Syntax:
 Do Until condition
  ...
 Loop
[Met]    CancelScheduledService(Service As Object)    ' Cancels previously scheduled tasks for this service.
[Met]    Floor(Number As Double) As Double    ' Returns the largest double that is smaller or equal to the specified number and is equal to an integer.
[Met]    Return()    ' Returns from the current sub and optionally returns the given value.
Syntax: Return [value]
[Met]    While()    ' Loops while the condition is true.
 Syntax:
 Do While condition
  ...
 Loop
[Met]    Array()    ' Creates a single dimension array of the specified type.
The syntax is: Array [As type] (list of values).
If the type is ommitted then an array of objects will be created.
Example:<code>
Dim Days() As String
Days = Array As String("Sunday", "Monday", ...)</code>
[Met]    IsBackgroundTaskRunning(ContainerObject As Object, TaskId As Int) As Boolean    ' Tests whether a background task, submitted by the container object and with the specified id, is running.
[Met]    ASinD(Value As Double) As Double    ' Returns the angle measured with degrees.
[Met]    StartServiceAtExact(Receiver As Object, Time As Long, DuringSleep As Boolean)    ' Similar to StartServiceAt.
On Android 4.4+ it forces the OS to start the service at the exact time. This method will have a larger impact on the battery compared
to StartServiceAt and should only be used in cases where it is important for the service to start at the exact time.
This method requires special permission on Android 12+.
[Met]    Msgbox2(Message As CharSequence, Title As CharSequence, Positive As String, Cancel As String, Negative As String, Icon As Bitmap) As Int    ' Shows a modal message box with the specified message and title.
 <b>It is recommended to use Msgbox2Async instead.</b>
Message - The dialog message.
Title - The dialog title.
Positive - The text to show for the "positive" button. Pass "" to hide the button.
Cancel - The text to show for the "cancel" button. Pass "" to hide the button.
Negative - The text to show for the "negative" button. Pass "" to hide the button.
Icon - A bitmap that will be drawn near the title. Pass Null to hide hide the icon.
Returns one of the DialogResponse values.
Example:<code>
Dim result As Int
result = Msgbox2("This is the message", "This is the title", "Good", "", "Bad", LoadBitmap(File.DirAssets, "smiley.gif"))
If result = DialogResponse.Positive Then ...
</code>
[Met]    NumberFormat(Number As Double, MinimumIntegers As Int, MaximumFractions As Int) As String    ' Converts the specified number to a string. 
The string will include at least Minimum Integers and at most Maximum Fractions digits.
Example:<code>
Log(NumberFormat(12345.6789, 0, 2)) '"12,345.68"
Log(NumberFormat(1, 3 ,0)) '"001"</code>

' === CLASE: ResumableSub (anywheresoftware.b4a.keywords.Common.ResumableSubWrapper) ===
[Prop:R] Completed As Boolean    ' Tests whether the resumable sub has already completed.
[Met]    IsInitialized() As Boolean 

' === CLASE: Bit (anywheresoftware.b4a.keywords.Bit) ===
[Met]    ShiftRight(N As Int, Shift As Int) As Int    ' Shifts N right.
Keeps the original value sign
Shift - Number of positions to shift.
[Met]    Or(N1 As Int, N2 As Int) As Int    ' Returns the bitwise OR of the two values.
[Met]    ShiftLeft(N As Int, Shift As Int) As Int    ' Shifts N left.
Shift - Number of positions to shift.
[Met]    ParseLong(Value As String, Radix As Int) As Long    ' Parses Value as a long using the specified radix.
Radix - Should be between 2 to 36.
[Met]    OrLong(N1 As Long, N2 As Long) As Long    ' Returns the bitwise OR of the two values.
[Met]    UnsignedShiftRight(N As Int, Shift As Int) As Int    ' Shifts N right.
Shifts zeroes in the leftmost positions.
Shift - Number of positions to shift.
[Met]    XorLong(N1 As Long, N2 As Long) As Long    ' Returns the bitwise XOR of the two values.
[Met]    ToOctalString(N As Int) As String    ' Returns a string representation of N in base 8.
[Met]    ToHexString(N As Int) As String    ' Returns a string representation of N in base 16.
[Met]    Not(N As Int) As Int    ' Returns the bitwise complement of the given value.
[Met]    ToBinaryString(N As Int) As String    ' Returns a string representation of N in base 2.
[Met]    ToHexStringLong(N As Long) As String    ' Returns a string representation of N in base 16.
[Met]    ArrayCopy(SrcArray As Object, SrcOffset As Int, DestArray As Object, DestOffset As Int, Count As Int)    ' Copies elements from SrcArray to DestArray.
SrcArray - Source array.
SrcOffset - Index of first element in the source array.
DestArray - Destination array.
DestOffset - Index of the first element in the destination array.
Count - Number of elements to copy.
[Met]    And(N1 As Int, N2 As Int) As Int    ' Returns the bitwise AND of the two values.
[Met]    ShiftRightLong(N As Long, Shift As Int) As Long    ' Shifts N right.
Keeps the original value sign
Shift - Number of positions to shift.
[Met]    NotLong(N As Long) As Long    ' Returns the bitwise complement of the given value.
[Met]    ShiftLeftLong(N As Long, Shift As Int) As Long    ' Shifts N left.
Shift - Number of positions to shift.
[Met]    Xor(N1 As Int, N2 As Int) As Int    ' Returns the bitwise XOR of the two values.
[Met]    ParseInt(Value As String, Radix As Int) As Int    ' Parses Value as an integer using the specified radix.
Radix - Should be between 2 to 36.
[Met]    AndLong(N1 As Long, N2 As Long) As Long    ' Returns the bitwise AND of the two values.
[Met]    UnsignedShiftRightLong(N As Long, Shift As Int) As Long    ' Shifts N right.
Shifts zeroes in the leftmost positions.
Shift - Number of positions to shift.
[Met]    InputStreamToBytes(In As InputStream) As Byte()    ' Reads the data from the input stream and writes it into an array of bytes.
The input stream is automatically closed at the end.

' === CLASE: B4AApplication (anywheresoftware.b4a.keywords.B4AApplication) ===
[Prop:R] VersionCode As Int    ' Returns the application version code (VersionCode attribute).
[Prop:R] PackageName As String    ' Returns the application package name.
[Prop:R] LabelName As String    ' Returns the application name (ApplicationLabel attribute).
[Prop:R] VersionName As String    ' Returns the application version name (VersionName attribute).
[Prop:R] Icon As Bitmap    ' Returns the application icon.

' ######################################################################
' LIBRERÃA: DateUtils (v1.05)
' ######################################################################

' === CLASE: DateUtils (b4a.example.dateutils) ===
[Met]    _addperiod(Ticks As Long, Per As _period) As Long    ' Adds a Period to the given date instance. Do not forget to assign the result.
[Met]    _getdayofweekname(Ticks As Long) As String    ' Returns the day of week name.
Similar to DateTime.GetDayOfWeek which returns the day of week as an integer.
[Met]    _getdaysnames() As List    ' Returns a list with the week days names, using the device set locale.
[Met]    _getmonthname(Ticks As Long) As String    ' Returns the month name of the given date.
Similar To DateTime.GetMonth which returns the month as an integer.
[Met]    _getmonthsnames() As List    ' Returns a list with the months names, using the device set locale.
[Met]    _issameday(Ticks1 As Long, Ticks2 As Long) As Boolean    ' Tests whether the two ticks values represent the same day.
[Met]    _numberofdaysinmonth(Month As Int, Year As Int) As Int    ' Returns the number of days in the given month
[Met]    _periodbetween(Start As Long, EndTime As Long) As _period    ' Calculates the period between two date instances. 
This method returns a Period type with years, months, days, hours, minutes, seconds.
[Met]    _periodbetweenindays(Start As Long, EndTime As Long) As _period    ' Calculates the period between two date instances.
This method returns a Period type with days, hours, minutes, seconds
[Met]    _process_globals() As String 
[Met]    _setdate(Years As Int, Months As Int, Days As Int) As Long    ' Returns the ticks value of the given date (the time will be 00:00:00).
[Met]    _setdateandtime(Years As Int, Months As Int, Days As Int, Hours As Int, Minutes As Int, Seconds As Int) As Long    ' Returns the ticks value of the given date and time
[Met]    _setdateandtime2(Years As Int, Months As Int, Days As Int, Hours As Int, Minutes As Int, Seconds As Int, TimeZone As Double) As Long    ' Returns the ticks value of the given date and time with the specified time zone offset.
The last parameter is the time zone offset measured in hours.
[Met]    _tickstostring(Ticks As Long) As String 
[Met]    _tickstounixtime(Ticks As Long) As Long    ' Converts ticks value to unix time.
[Met]    _unixtimetoticks(UnixTime As Long) As Long    ' Converts unix time to ticks value.

' === CLASE: Period (b4a.example.dateutils._period) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' ######################################################################
' LIBRERÃA: FirebaseAdMob (v2.0)
' ######################################################################

' === CLASE: ConsentManager (anywheresoftware.b4a.admobwrapper.ConsentManager) ===
[Prop:RW] ConsentState As String    ' Gets or sets the current consent state. Value will be one of the STATE constants.
[Prop:R] IsRequestLocationInEeaOrUnknown As Boolean    ' Returns true if the user is located in the European Economic Area or if the location is unknown.
[Met]    RequestInfoUpdate(PublisherIds As List)    ' Checks for the current consent state. Raises the InfoUpdated event.
Example:<code>
consent.RequestInfoUpdate(Array("pub-12633333333"))
Wait For consent_InfoUpdated (Success As Boolean)
If Success = False Then
	Log($"Error getting consent state: ${LastException}"$)
End If</code>
[Met]    ShowConsentForm(PrivacyURL As String, PersonalizedOption As Boolean, NonPersonalizedOption As Boolean, AdFreeOption As Boolean)    ' Shows the consent form. Must be called from an activity.
This method should be called when needed, after the current consent state becomes available.
Raises the FormResult event.
 PrivacyURL - A link to your privacy URL page.
 PersonalizedOption - Whether to show the personalized option.
 NonPersonalizedOption - Whether to show the non-personalized option.
 AdFreeOption - Whether to show the ad free option.
[Met]    AddTestDevice(DeviceId As String)    ' Adds a test device id. You can see the current device id in the unfiltered logs.
This allows setting the location with SetDebugGeography.
[Met]    Initialize(EventName As String) 
[Met]    SetDebugGeography(InEea As Boolean)    ' Sets the geographic location for the test devices.
[Event]  InfoUpdated (Success As Boolean).Trim()
[Event]  FormResult (Success As Boolean, UserPrefersAdFreeOption As Boolean).Trim()

' === CLASE: AdView (anywheresoftware.b4a.admobwrapper.AdViewWrapper) ===
[Prop:RW] Left As Int 
[Prop:RW] Background As Drawable 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int 
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int 
[Met]    LoadAdWithBuilder(Builder As AdRequestBuilder)    ' Requests an ad configured with AdRequestBuilder.
[Met]    Pause()    ' Should be called from Activity_Pause.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String, PublisherId As String)    ' Initializes the AdView using the default 320dip x 50dip size.
EventName - Name of Subs that will handle the events.
PublisherId - The publisher id you received from AdMob.
[Met]    BringToFront() 
[Met]    SetLayout(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(arg0 As Int, arg1 As Boolean) 
[Met]    LoadAdWithTestDevice(TestDevice As String)    ' Requests an ad.
TestDevice - The test device id. You can see the id in the unfiltered logs.
[Met]    RemoveView() 
[Met]    Invalidate3(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    Invalidate2(arg0 As Rect) 
[Met]    SetColorAnimated(arg0 As Int, arg1 As Int, arg2 As Int) 
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    LoadAd()    ' Sends a request to AdMob, requesting an ad.
[Met]    Initialize2(EventName As String, AdUnitId As String, Size As Object)    ' Initializes the AdView.
EventName - Name of Subs that will handle the events.
AdUnitId - The Ad unit id received from AdMob.
Size - One of the SIZE constants.
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int) 
[Met]    RequestFocus() As Boolean 
[Met]    Resume()    ' Should be called from Activity_Resume.
[Event]  ReceiveAd.Trim()
[Event]  FailedToReceiveAd (ErrorCode As String).Trim()
[Event]  AdScreenDismissed.Trim()
[Event]  PresentScreen.Trim()

' === CLASE: NativeExpressAd (anywheresoftware.b4a.admobwrapper.AdViewWrapper.NativeExpressAdWrapper) ===
[Prop:RW] Left As Int 
[Prop:RW] Background As Drawable 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int 
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int 
[Met]    LoadAdWithBuilder(Builder As AdRequestBuilder)    ' Requests an ad configured with AdRequestBuilder.
[Met]    Pause()    ' Should be called from Activity_Pause.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String, AdUnitId As String, Width As Float, Height As Float)    ' Initializes the ad view.
EventName - Sets the subs that will handle the events.
AdUnitId - Ad unit ID of a native ad.
Width - Requested ad width.
Height - Requested ad height.
[Met]    BringToFront() 
[Met]    SetLayout(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(arg0 As Int, arg1 As Boolean) 
[Met]    LoadAdWithTestDevice(TestDevice As String)    ' Requests an ad.
TestDevice - The test device id. You can see the id in the unfiltered logs.
[Met]    RemoveView() 
[Met]    Invalidate3(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    Invalidate2(arg0 As Rect) 
[Met]    SetColorAnimated(arg0 As Int, arg1 As Int, arg2 As Int) 
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    LoadAd()    ' Sends a request to AdMob, requesting an ad.
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int) 
[Met]    RequestFocus() As Boolean 
[Met]    Resume()    ' Should be called from Activity_Resume.

' === CLASE: InterstitialAd (anywheresoftware.b4a.admobwrapper.AdViewWrapper.InterstitialAdWrapper) ===
[Prop:R] Ready As Boolean    ' Tests whether there is an ad ready to be shown.
[Met]    LoadAdWithBuilder(Builder As AdRequestBuilder)    ' Requests an ad configured with AdRequestBuilder.
[Met]    LoadAd()    ' Requests an ad. The ReceiveAd or FailedToReceiveAd events will be raised.
[Met]    Show()    ' Shows the loaded ad.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String, AdUnitId As String)    ' Initializes the object.
EventName - Set the subs that will handle the events.
AdUnitId - The ad unit id. Test id: <code>ca-app-pub-3940256099942544/1033173712</code>
[Event]  ReceiveAd.Trim()
[Event]  FailedToReceiveAd (ErrorCode As String).Trim()
[Event]  AdClosed.Trim()
[Event]  AdOpened.Trim()
[Event]  AdLeftApplication.Trim()

' === CLASE: MobileAds (anywheresoftware.b4a.admobwrapper.AdViewWrapper.MobileAdsWrapper) ===
[Met]    Initialize() 

' === CLASE: RewardedVideoAd (anywheresoftware.b4a.admobwrapper.AdViewWrapper.RewardedVideoAdWrapper) ===
[Prop:R] Ready As Boolean    ' Tests whether there is an ad ready to be shown.
[Met]    LoadAdWithBuilder(AdUnitId As String, Builder As AdRequestBuilder)    ' Requests an ad configured with AdRequestBuilder.
[Met]    LoadAd(AdUnitId As String)    ' Requests an ad. The ReceiveAd or FailedToReceiveAd events will be raised.
[Met]    Show()    ' Shows the loaded ad.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String) 
[Event]  ReceiveAd.Trim()
[Event]  FailedToReceiveAd (ErrorCode As String).Trim()
[Event]  AdClosed.Trim()
[Event]  AdOpened.Trim()
[Event]  AdLeftApplication.Trim()
[Event]  Rewarded (Item As Object).Trim()

' === CLASE: AdRequestBuilder (anywheresoftware.b4a.admobwrapper.AdViewWrapper.AdRequestBuilderWrapper) ===
[Met]    AddTestDevice(DeviceId As String) As AdRequestBuilder    ' Add a test device. You can see the device id in the unfiltered logs.
[Met]    IsInitialized() As Boolean 
[Met]    NonPersonalizedAds() As AdRequestBuilder    ' Request non-personalized ads.
[Met]    Initialize() As AdRequestBuilder 

' ######################################################################
' LIBRERÃA: FirebaseAdMob2 (v3.0)
' ######################################################################

' === CLASE: AdView (anywheresoftware.b4a.admobwrapper.AdViewWrapper) ===
[Prop:RW] Left As Int 
[Prop:RW] Background As Drawable 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int 
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int 
[Met]    LoadAdWithBuilder(Builder As AdRequestBuilder)    ' Requests an ad configured with AdRequestBuilder.
[Met]    Pause()    ' Should be called from Activity_Pause.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String, PublisherId As String)    ' Initializes the AdView using the default 320dip x 50dip size.
EventName - Name of Subs that will handle the events.
PublisherId - The publisher id you received from AdMob.
[Met]    BringToFront() 
[Met]    SetLayout(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(arg0 As Int, arg1 As Boolean) 
[Met]    RemoveView() 
[Met]    Invalidate3(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    Invalidate2(arg0 As Rect) 
[Met]    SetColorAnimated(arg0 As Int, arg1 As Int, arg2 As Int) 
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    LoadAd()    ' Sends a request to AdMob, requesting an ad.
[Met]    Initialize2(EventName As String, AdUnitId As String, Size As Object)    ' Initializes the AdView.
EventName - Name of Subs that will handle the events.
AdUnitId - The Ad unit id received from AdMob.
Size - One of the SIZE constants.
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int) 
[Met]    RequestFocus() As Boolean 
[Met]    Resume()    ' Should be called from Activity_Resume.
[Event]  ReceiveAd.Trim()
[Event]  FailedToReceiveAd (ErrorCode As String).Trim()
[Event]  AdScreenDismissed.Trim()
[Event]  PresentScreen.Trim()

' === CLASE: InterstitialAd (anywheresoftware.b4a.admobwrapper.AdViewWrapper.InterstitialAdWrapper) ===
[Prop:R] Ready As Boolean    ' Tests whether there is an ad ready to be shown.
[Met]    LoadAdWithBuilder(AdRequestBuilder As Builder)    ' Requests an ad configured with AdRequestBuilder.
[Met]    LoadAd()    ' Requests an ad. The AdLoaded event will be raised.
[Met]    Show()    ' Shows the loaded ad.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String, AdUnitId As String)    ' Initializes the object.
EventName - Set the subs that will handle the events.
AdUnitId - The ad unit id. Test id: <code>ca-app-pub-3940256099942544/1033173712</code>
[Event]  ReceiveAd.Trim()
[Event]  FailedToReceiveAd (ErrorCode As String).Trim()
[Event]  AdClosed.Trim()
[Event]  AdOpened.Trim()

' === CLASE: MobileAds (anywheresoftware.b4a.admobwrapper.AdViewWrapper.MobileAdsWrapper) ===
[Met]    CreateRequestConfigurationBuilder(TestDeviceIds As List) As Object 
[Met]    SetConfiguration(ConfigurationBuilder As Object) 
[Met]    Initialize() As Object    ' Should be called before requesting an ad. Can be used with Wait For like this:
<code>Wait For (MobileAds.Initialize) MobileAds_Ready</code>

' === CLASE: AdRequestBuilder (anywheresoftware.b4a.admobwrapper.AdViewWrapper.AdRequestBuilderWrapper) ===
[Met]    IsInitialized() As Boolean 
[Met]    NonPersonalizedAds() As AdRequestBuilder    ' Request non-personalized ads.
[Met]    Initialize() As AdRequestBuilder 

' ######################################################################
' LIBRERÃA: FirebaseAnalytics (v3.0)
' ######################################################################

' === CLASE: FirebaseAnalytics (anywheresoftware.b4a.objects.FirebaseAnalyticsWrapper) ===
[Prop:R] IsGooglePlayServicesAvailable As Boolean    ' Tests whether Google Play Services are available on the device.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize()    ' Initializes the object. FirebaseAnalytics should be
[Met]    SendEvent(EventName As String, Parameters As Map)    ' Sends an event to the analytics service.
EventName - Event name.
Parameters - Map of parameters. Pass Null if not needed.

' ######################################################################
' LIBRERÃA: FirebaseAuth (v3.0)
' ######################################################################

' === CLASE: FirebaseAuth (anywheresoftware.b4a.objects.FirebaseAuthWrapper) ===
[Prop:R] CurrentUser As FirebaseUser    ' Returns the current signed in user. Returns an uninitialized object if there is no user.
[Met]    SignOutFromGoogle()    ' Sign outs from Firebase and Google.
[Met]    GetUserTokenId(User As FirebaseUser, ForceRefresh As Boolean)    ' Retrieves the token id. This token can be sent to your backend server. The server can use it to verify the user.
The TokenAvailable event will be raised in the current module.
[Met]    Initialize(EventName As String)    ' Initializes the object. The SignedIn event will be raised if there is already a signed in user.
[Met]    SignInWithGoogle()    ' Start the sign in process.
[Event]  SignedIn (User As FirebaseUser).Trim()
[Event]  TokenAvailable (User As FirebaseUser, Success As Boolean, TokenId As String).Trim()
[Event]  SignError (Error As Exception).Trim()

' === CLASE: FirebaseUser (anywheresoftware.b4a.objects.FirebaseAuthWrapper.FirebaseUserWrapper) ===
[Prop:R] Uid As String 
[Prop:R] Email As String 
[Prop:R] DisplayName As String 
[Prop:R] PhotoUrl As String 
[Met]    IsInitialized() As Boolean 

' ######################################################################
' LIBRERÃA: FirebaseNotifications (v3.1)
' ######################################################################

' === CLASE: FirebaseMessaging (anywheresoftware.b4a.objects.FirebaseNotificationsService.FirebaseMessageWrapper) ===
[Prop:R] Token As String    ' Returns the device token. The token can change from time to time. The TokenRefresh event is raised when the token changes.
The token is only needed when sending messages to a specific device.
[Met]    HandleIntent(Intent As Intent) As Boolean    ' Should be called from Service_Start. Returns true if the intent was handled.
[Met]    SubscribeToTopic(Topic As String)    ' Subscribes to the specified topic.
Example:<code>
fm.SubscribeToTopic("general")</code>
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String) 
[Met]    UnsubscribeFromTopic(Topic As String)    ' Unsubscribes from a topic.
[Event]  TokenRefresh (Token As String).Trim()
[Event]  MessageArrived (Message As RemoteMessage).Trim()

' === CLASE: RemoteMessage (anywheresoftware.b4a.objects.FirebaseNotificationsService.RemoteMessageWrapper) ===
[Prop:R] SentTime As Long    ' Returns the time the message was sent.
[Prop:R] From As String    ' Returns the sender id or the topic name. In the later case the value will start with /topics/
[Prop:R] CollapseKey As String    ' Gets the collapse key (if set).
[Prop:R] MessageId As String    ' Gets the message id.
[Met]    GetData() As Map    ' Returns a Map with the key / values set as the message data.
[Met]    IsInitialized() As Boolean 

' ######################################################################
' LIBRERÃA: FirebaseStorage (v3.0)
' ######################################################################

' === CLASE: FirebaseStorage (anywheresoftware.b4x.objects.FirebaseStorageWrapper) ===
[Met]    UploadFile(Dir As String, FileName As String, ServerPath As String)    ' Reads the data from the file and uploads it to the specified ServerPath.
The UploadCompleted event will be raised in the current module.
[Met]    DownloadFile(ServerPath As String, Dir As String, FileName As String)    ' Downloads the remote resource and writes it to the specified file.
The DownloadCompleted event will be raised in the current module.
[Met]    GetMetadata(ServerPath As String)    ' Retrieves the metadata of the remote resource. The MetadataCompleted event will be raised in the current module.
[Met]    UploadStream(InputStream As InputStream, ServerPath As String)    ' Reads the data from the input stream and uploads it to the specified ServerPath.
The UploadCompleted event will be raised in the current module.
[Met]    Initialize(EventName As String, Bucket As String)    ' Initializes the object.
 Bucket - The url from Firebase console (ex: gs://yourapp.appspot.com)
[Met]    DownloadStream(ServerPath As String, OutputStream As OutputStream)    ' Downloads the remote resource and writes it to the OutputStream.
The DownloadCompleted event will be raised in the current module.
[Met]    DeleteFile(ServerPath As String)    ' Deletes the remote resource. The DeleteCompleted event will be raised in the current module.
[Event]  UploadCompleted (ServerPath As String, Success As Boolean).Trim()
[Event]  DownloadCompleted (ServerPath As String, Success As Boolean).Trim()
[Event]  MetadataCompleted (Metadata As StorageMetadata, Success As Boolean).Trim()
[Event]  DeleteCompleted (ServerPath As String, Success As Boolean).Trim()

' === CLASE: StorageMetadata (anywheresoftware.b4x.objects.FirebaseStorageWrapper.StorageMetadataWrapper) ===
[Prop:R] Path As String    ' Returns the resource path.
[Prop:R] Size As Long    ' Returns the resource size in bytes.
[Prop:R] Timestamp As Long    ' Returns the last updated time as ticks.
[Prop:R] Name As String    ' Returns the resource name.
[Met]    IsInitialized() As Boolean 

' ######################################################################
' LIBRERÃA: GameView (v0.9)
' ######################################################################

' === CLASE: GameView (anywheresoftware.b4a.objects.GameViewWrapper) ===
[Prop:RW] Top As Int 
[Prop:RW] Enabled As Boolean 
[Prop:R] BitmapsData As List    ' Returns the list of BitmapData objects.
[Prop:RW] Visible As Boolean 
[Prop:R] IsHardwareAccelerated As Boolean    ' Tests whether hardware acceleration is supported.
[Prop:RW] Background As Drawable 
[Prop:RW] Height As Int 
[Prop:RW] Left As Int 
[Prop:W] Color As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int 
[Met]    Initialize(arg1 As String) 
[Met]    BringToFront() 
[Met]    RequestFocus() As Boolean 
[Met]    RemoveView() 
[Met]    SetBackgroundImage(arg0 As Bitmap) 
[Met]    Invalidate() 
[Met]    SetLayout(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    Invalidate3(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    Invalidate2(arg0 As Rect) 
[Met]    SendToBack() 
[Met]    IsInitialized() As Boolean 
[Event]  Touch (Action As Int, X As Float, Y As Float).Trim()

' === CLASE: BitmapData (anywheresoftware.b4a.objects.GameViewWrapper.BitmapData) ===

' ######################################################################
' LIBRERÃA: Gestures (v1.2)
' ######################################################################

' === CLASE: Gestures (anywheresoftware.b4a.agraham.gestures.Gestures) ===
[Prop:R] Version As Double    ' Returns the version of the library.
[Met]    SetOnTouchListener(view As View, sub As String)    ' Target must be a View of some sort.
Sets the onTouchListener of the view to a Sub that must have a signature of
Sub Whatever(view As Object, pointerID as Int, action As Int, X As Float, Y As Float) As Boolean.
The view parameter is the Android View object that is raising the touch event.
The X and Y parameters are the data for the pointer ID parameter.
This Sub must return True if it wants to consume the event or False otherwise.
[Met]    GetX(pointerID As Int) As Float    ' Returns the X position for the specified pointerID or -1 if there is no data for that pointer.
[Met]    GetY(pointerID As Int) As Float    ' Returns the Y position for the specified pointerID or -1 if there is no data for that pointer.
[Met]    GetPointerCount() As Int    ' Returns the number of pointers in contact with the screen.
[Met]    GetPointerID(pointerindex As Int) As Int    ' Pointer data is returned internally in arrays of length PointerCount which always start at index 0.
This returns the pointerID whose data is at the specified index in those arrays.
Returns -1 if there is no pointerID at that index.

' ######################################################################
' LIBRERÃA: GooglePlayBilling (v5.0)
' ######################################################################

' === CLASE: BillingClient (anywheresoftware.b4a.objects.BillingClientWrapper) ===
[Prop:R] SubscriptionsSupported As Boolean    ' Tests whether subscriptions are supported.
[Met]    VerifyPurchase(Purchase As Purchase, Base64Key As String) As Boolean    ' Tests whether the purchase was signed properly.
Base64Key - Key from Google Play Console.
[Met]    InitializeWithBuilder(EventName As String, Builder As Builder)    ' Alternative initialization method that accepts a custom client builder.
[Met]    Consume(PurchaseToken As String, Unused As String) As Object    ' Consumes a product. It will not be "owned" after this call.
[Met]    AcknowledgePurchase(PurchaseToken As String, Unused As String) As Object    ' All purchases must be acknowledged or consumed in 3 days. Call this method to acknowledge the purchase.
PurchaseToken - The token as retrieved with Purchase.PurchaseToken.
Unused - (developer payload value is no longer supported).

<code>Wait For (Billing.AcknowledgePurchase(p.PurchaseToken, "")) Billing_AcknowledgeCompleted (Result As BillingResult)</code>
[Met]    QueryPurchases(SkuType As String) As Object    ' Gets purchases details for all owned products. Check the purchases state as pending purchases will also be listed.
 SkuType - "inapp" for regular purchases and "subs" for subscriptions.
Example:
<code>
Wait For (Starter.Billing.ConnectIfNeeded) Billing_Connected (Result As BillingResult)
If Result.IsSuccess Then
	Wait For (Starter.Billing.QueryPurchases("inapp")) Billing_PurchasesQueryCompleted (Result As BillingResult, Purchases As List)
	If Result.IsSuccess Then
		For Each Purchase As Purchase In Purchases
			
		Next
	End If
End If</code>
[Met]    LaunchBillingFlow(Sku As SkuDetails) As BillingResult    ' Starts the billing flow. Returns a BillingResult. The PurchasesUpdated event will be raised if a purchase was done (successfully or unsuccessfully).
This method must be called from an Activity or a class with an activity context.
<code>
Result = Starter.Billing.LaunchBillingFlow(SkuDetails.Get(0))
Log("LaunchBillingFlow: " & Result.IsSuccess)</code>
[Met]    QuerySkuDetails(SkuType As String, SKUs As List) As Object    ' Gets the details of the specified SKUs.
SkyType - "inapp" for regular products or "subs" for subscriptions.
SKUs - List or array with the requested SKU ids.

Example:<code>
Dim sf As Object = Starter.Billing.QuerySkuDetails("inapp", Array("android.test.purchased"))
Wait For (sf) Billing_SkuQueryCompleted (Result As BillingResult, SkuDetails As List)
If Result.IsSuccess And SkuDetails.Size = 1 Then</code>
[Met]    ConnectIfNeeded() As Object    ' Connects to the store service if not already connected. Should always be called before making other requests.
The Connected event will be raised.

Example from the Starter service:
<code>Wait For (Billing.ConnectIfNeeded) Billing_Connected (Result As BillingResult)</code>
Example from other modules:
<code>Wait For (Starter.Billing.ConnectIfNeeded) Billing_Connected (Result As BillingResult)
If Result.IsSuccess Then
 
End If
</code>
[Met]    Initialize(EventName As String)    ' Initializes the billing client.
[Event]  Connected (Result As BillingResult).Trim()
[Event]  SkuQueryCompleted (Result As BillingResult, SkuDetails As List).Trim()
[Event]  PurchasesQueryCompleted (Result As BillingResult, Purchases As List).Trim()
[Event]  PurchasesUpdated (Result As BillingResult, Purchases As List).Trim()
[Event]  ConsumeCompleted (Result As BillingResult).Trim()
[Event]  AcknowledgeCompleted (Result As BillingResult).Trim()

' === CLASE: SkuDetails (anywheresoftware.b4a.objects.BillingClientWrapper.SkuDetailsWrapper) ===
[Prop:R] Description As String    ' Returns the product description.
[Prop:R] Price As String    ' Returns the formatted price with the currency sign for one time purchase offers.
[Prop:R] Title As String    ' Returns the product title.
[Prop:R] Sku As String    ' Returns the product id.
[Met]    IsInitialized() As Boolean 

' === CLASE: BillingResult (anywheresoftware.b4a.objects.BillingClientWrapper.BillingResultWrapper) ===
[Prop:R] IsSuccess As Boolean    ' Tests whether the result was successful. Logs the response code and debug string in debug mode when the result was unsuccessful.
[Prop:R] ResponseCode As Int    ' Returns the response code. One of the CODE constants.
[Prop:R] ResponseCodeString As String    ' Returns the response code as a string.
[Prop:R] DebugMessage As String    ' Returns the debug message.
[Met]    IsInitialized() As Boolean 

' === CLASE: Purchase (anywheresoftware.b4a.objects.BillingClientWrapper.PurchaseWrapper) ===
[Prop:R] IsAcknowledged As Boolean    ' Tests whether the purchase was acknowledged. All purchases should be acknowledged or consumed in 3 days.
[Prop:R] PurchaseTime As Long    ' Returns the time the product was purchased.
[Prop:R] PurchaseToken As String    ' Returns a token that uniquely identifies a purchase for a given time and user pair.
[Prop:R] DeveloperPayload As String    ' Deprecated.
[Prop:R] Signature As String    ' Gets the purchase data signature.
[Prop:R] OrderId As String    ' Returns an unique order identifier for the transaction.
[Prop:R] Sku As String    ' Returns the product id
[Prop:R] OriginalJson As String    ' Gets the json string that includes the purchase information.
[Prop:R] PurchaseState As Int    ' Returns the purchase state. One of the STATE constants.
[Prop:R] IsAutoRenewing As Boolean    ' Tests whether the subscription renews automatically.
[Met]    IsInitialized() As Boolean 

' ######################################################################
' LIBRERÃA: GPS (v1.2)
' ######################################################################

' === CLASE: Location (anywheresoftware.b4a.gps.LocationWrapper) ===
[Prop:R] AltitudeValid As Boolean    ' Returns true if the fix includes altitude value.
[Prop:RW] Accuracy As Float    ' Gets or sets the fix accuracy (meters).
[Prop:R] BearingValid As Boolean    ' Returns true if the fix includes bearing value.
[Prop:R] SpeedValid As Boolean    ' Returns true if the fix includes speed value.
[Prop:RW] Altitude As Double    ' Gets or sets the fix altitude (meters).
[Prop:RW] Speed As Float    ' Gets or sets the fix speed (meters / second).
[Prop:RW] Time As Long    ' Gets or sets the fix time.
[Prop:RW] Latitude As Double    ' Gets or sets the fix latitude (degrees from -90 (South) to 90 (North)).
[Prop:RW] Longitude As Double    ' Gets or sets the fix longitude (degrees from -180 to 180, positive values represent the eastern hemisphere).
[Prop:R] AccuracyValid As Boolean    ' Returns true if the fix includes accuracy value.
[Prop:RW] Bearing As Float    ' Gets or sets the fix bearing East of true North.
[Met]    Initialize()    ' Initializes an empty location object.
[Met]    ConvertToSeconds(Coordinate As Double) As String    ' Converts the given coordinate to a string formatted with the following format:
[+-]DDD:MM:SS.SSSSS (Minute = 1 / 60 of a degree, Second = 1 / 3600 of a degree)
[Met]    DistanceTo(TargetLocation As Location) As Float    ' Returns the distance to the given location, measured in meters.
[Met]    ConvertToMinutes(Coordinate As Double) As String    ' Converts the given coordinate to a string formatted with the following format:
[+-]DDD:MM.MMMMM (Minute = 1 / 60 of a degree)
[Met]    Initialize2(Latitude As String, Longitude As String)    ' Initializes the location object with the given Latitude and Longitude.
Values can be formatted in any of the three formats:
Degrees: [+-]DDD.DDDDD
Minutes: [+-]DDD:MM.MMMMM (Minute = 1 / 60 of a degree)
Seconds: [+-]DDD:MM:SS.SSSSS (Second = 1 / 3600 of a degree)
Example:<code>
Dim L1 As Location
L1.Initialize2("45:30:30", "45:20:15")</code>
[Met]    IsInitialized() As Boolean 
[Met]    BearingTo(TargetLocation As Location) As Float    ' Returns the bearing to the given location.

' === CLASE: GPSSatellite (anywheresoftware.b4a.gps.GpsSatelliteWrapper) ===
[Prop:R] UsedInFix As Boolean    ' Tests whether this satellite was used to calculate the most recent fix.
[Prop:R] Prn As Int    ' Returns the PRN (pseudo-random number) for the satellite.
[Prop:R] Elevation As Float    ' Returns the satellite elevation in degrees (0 - 90).
[Prop:R] Azimuth As Float    ' Returns the satellite azimuth in degrees (0 - 360).
[Prop:R] Snr As Float    ' Returns the signal to noise ratio for the satellite.
[Met]    IsInitialized() As Boolean 

' === CLASE: GPS (anywheresoftware.b4a.gps.GPS) ===
[Prop:R] GPSEnabled As Boolean    ' Tests whether the user has enabled the GPS.
[Prop:R] LocationSettingsIntent As Intent    ' Returns the intent that is used to show the global locations settings.
Example:<code>
If GPS1.GPSEnabled = False Then StartActivity(GPS1.LocationSettingsIntent)</code>
[Met]    Initialize(EventName As String) 
[Met]    Start(MinimumTime As Long, MinimumDistance As Float)    ' Starts listening for events.
MinimumTime - The shortest period (measured in milliseconds) between events. Pass 0 for highest frequency.
MinimumDistance - The shortest change in distance (measured in meters) for which to raise events. Pass 0 for highest frequency.
[Met]    Stop()    ' Stops listening to the GPS. You will usually want to call Stop inside Sub Activity_Pause.
[Met]    IsInitialized() As Boolean 
[Event]  LocationChanged (Location1 As Location).Trim()
[Event]  UserEnabled (Enabled As Boolean).Trim()
[Event]  GpsStatus (Satellites As List).Trim()
[Event]  NMEA (TimeStamp As Long, Sentence As String).Trim()

' ######################################################################
' LIBRERÃA: IME (v1.1)
' ######################################################################

' === CLASE: IME (anywheresoftware.b4a.objects.IME) ===
[Met]    HideKeyboard()    ' Hides the soft keyboard if it is visible.
[Met]    Initialize(EventName As String)    ' Initializes the object and sets the subs that will handle the events.
[Met]    SetCustomFilter(EditText As EditText, DefaultInputType As Int, AcceptedCharacters As String)    ' Sets a custom filter.
EditText - The target EditText.
DefaultInputType - Sets the keyboard mode.
AcceptedCharacters - The accepted characters.
Example: Create a filter that will accept IP addresses (numbers with multiple dots)
<code>
IME.SetCustomFilter(EditText1, EditText1.INPUT_TYPE_NUMBERS, "0123456789.")</code>
[Met]    AddHandleActionEvent(EditText As EditText)    ' Adds the HandleAction event to the given EditText.
[Met]    AddHeightChangedEvent()    ' Enables the HeightChanged event. This event is raised when the soft keyboard state changes.
You can use this event to resize other views to fit the new screen size.
Note that this event will not be raised in full screen activities (an Android limitation).
[Met]    SetLengthFilter(EditText As EditText, MaxLength As Int)    ' Sets a filter that limits the maximum length to the specified value.
[Met]    ShowKeyboard(View As View)    ' Sets the focus to the given view and opens the soft keyboard.
The keyboard will only show if the view has received the focus.
[Event]  HeightChanged (NewHeight As Int, OldHeight As Int).Trim()
[Event]  HandleAction As Boolean.Trim()

' ######################################################################
' LIBRERÃA: JavaObject (v2.06)
' ######################################################################

' === CLASE: JavaObject (anywheresoftware.b4j.object.JavaObject) ===
[Met]    InitializeContext() As JavaObject    ' <b>B4A only method.</b>
Initializes the object with the current context (current Activity or Service).
[Met]    InitializeNewInstance(ClassName As String, Params As Object()) As JavaObject    ' Creates a new instance of the given class.
ClassName - The full class name.
Params - An array of objects to pass to the constructor (or Null).
[Met]    InitializeStatic(ClassName As String) As JavaObject    ' Initializes the object. The object will wrap the given class (for static access).
ClassName - The full class name.
[Met]    GetField(Field As String) As Object    ' Gets the value of the given field.
[Met]    CreateEvent(Interface As String, EventName As String, DefaultReturnValue As Object) As Object    ' Creates an instance of the interface and binds it to the object.
Interface - The full interface name.
EventName - The prefix of the event sub.
DefaultReturnValue - This value will be returned if no value was returned from the event sub. This can happen if the Activity is paused for example.

For example:<code>
Sub Activity_Create(FirstTime As Boolean)
   Dim b As Button
   b.Initialize("")
   Activity.AddView(b, 0, 0, 200dip, 200dip)
   Dim jo As JavaObject = b
   Dim e As Object = jo.CreateEvent("android.view.View.OnTouchListener", "btouch", False)
   jo.RunMethod("setOnTouchListener", Array As Object(e))
End Sub

Sub btouch_Event (MethodName As String, Args() As Object) As Object
   Dim motion As JavaObject = Args(1) 'args(0) is View
   Dim x As Float = motion.RunMethod("getX", Null)
   Dim y As Float = motion.RunMethod("getY", Null)
   Log(x & ", " & y)
   Return True
End Sub</code>
[Met]    GetFieldJO(Field As String) As JavaObject    ' Similar to GetField. Returns a JavaObject instead of Object.
[Met]    RunMethodJO(MethodName As String, Params As Object()) As JavaObject    ' Similar to RunMethod. Returns a JavaObject instead of Object.
[Met]    InitializeArray(ClassName As String, Values As Object()) As JavaObject    ' Creates an array with the given class and values.
[Met]    SetField(FieldName As String, Value As Object)    ' Sets the value of the given field.
[Met]    RunMethod(MethodName As String, Params As Object()) As Object    ' Runs the given method and returns the method return value.
MethodName - The case-sensitive method name.
Params - Method paramters (or Null).
[Met]    CreateEventFromUI(Interface As String, EventName As String, ReturnValue As Object) As Object    ' Similar to CreateEvent. The event will be sent to the message queue and then be processed (similar to CallSubDelayed).
[Met]    IsInitialized() As Boolean 
[Event]  Event (MethodName As String, Args() As Object) As Object.Trim()

' ######################################################################
' LIBRERÃA: JSON (v1.21)
' ######################################################################

' === CLASE: JSONParser (anywheresoftware.b4a.objects.collections.JSONParser) ===
[Met]    NextArray() As List    ' Parses the text assuming that the top level value is an array.
[Met]    NextValue() As Object    ' Parses the text assuming that the top level value is a simple value.
[Met]    NextObject() As Map    ' Parses the text assuming that the top level value is an object.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Text As String)    ' Initializes the object and sets the text that will be parsed.

' === CLASE: JSONGenerator (anywheresoftware.b4a.objects.collections.JSONParser.JSONGenerator) ===
[Met]    ToPrettyString(Indent As Int) As String    ' Creates a JSON string from the initialized object.
The string will be indented and easier for reading.
Note that the string created is a valid JSON string.
Indent - Number of spaces to add to each level.
[Met]    Initialize2(List As List)    ' Initializes the object with the given List.
[Met]    ToString() As String    ' Creates a JSON string from the initialized object.
This string does not include any extra whitespace.
[Met]    Initialize(Map As Map)    ' Initializes the object with the given Map.

' === CLASE: JSON (anywheresoftware.b4a.objects.collections.JSONParser.JSONConverter) ===
[Met]    ToCompactString() As String    ' Converts a Map or List to a JSON string, without whitespace. Same as JsonGenerator.ToString.
[Met]    ToMap() As Map    ' Converts the string to a Map.
[Met]    IsInitialized() As Boolean 
[Met]    ToString() As String    ' Converts a Map or List to a JSON string. Same as JsonGenerator.ToPrettyString(4).
[Met]    ToList() As List    ' Converts the string to a List.

' ######################################################################
' LIBRERÃA: KeyValueStore2 (v2.21)
' ######################################################################

' === CLASE: KeyValueStore (b4a.example3.keyvaluestore) ===
[Met]    IsInitialized() As Boolean    ' Tests whether the object has been initialized.
[Met]    _class_globals() As String 
[Met]    _close() As String    ' Closes the store.
[Met]    _containskey(Key As String) As Boolean    ' Tests whether a key is available in the store.
[Met]    _deleteall() As String    ' Deletes all data from the store.
[Met]    _get(Key As String) As Object 
[Met]    _getbitmap(Key As String) As Bitmap 
[Met]    _getdefault(Key As String, DefaultValue As Object) As Object 
[Met]    _getencrypted(Key As String, Password As String) As Object 
[Met]    _getmapasync(Keys As List) As ResumableSub    ' Asynchronously retrieves the values from the store.
The result is a map with the keys and values.
<code>
Wait For (Starter.kvs.GetMapAsync(Array("2 custom types", "time"))) Complete (Result As Map)
</code>
[Met]    _initialize(Dir As String, FileName As String) As String    ' Initializes the store and sets the store file.
[Met]    _listkeys() As List    ' Returns a list with all the keys.
[Met]    _put(Key As String, Value As Object) As String 
[Met]    _putbitmap(Key As String, Value As Bitmap) As String 
[Met]    _putencrypted(Key As String, Value As Object, Password As String) As String 
[Met]    _putmapasync(Map As Map) As ResumableSub    ' Asynchronously inserts the keys and values from the map.
Note that each pair is inserted as a separate item.
Call it with Wait For if you want to wait for the insert to complete.
[Met]    _remove(Key As String) As String    ' Removes the key and value mapped to this key.

' ######################################################################
' LIBRERÃA: LiveWallpaper (v1.01)
' ######################################################################

' === CLASE: LWManager (anywheresoftware.b4a.objects.WallpaperInternalService.LWManager) ===
[Met]    Initialize(EventName As String, TouchEventsEnabled As Boolean)    ' Initializes the object.
EventName - Sets the Subs that will handle the events.
TouchEventsEnabled - Whether the wallpaper should raise the Touch event when the user touches the screen.
[Met]    StopTicking()    ' Stops the internal timer.
[Met]    StartTicking(IntervalMs As Int)    ' Starts the internal timer.
IntervalMs - Interval in milliseconds.
[Event]  SizeChanged (Engine As LWEngine).Trim()
[Event]  Touch (Engine As LWEngine, Action As Int, X As Float, Y As Float).Trim()
[Event]  VisibilityChanged (Engine As LWEngine, Visible As Boolean).Trim()
[Event]  EngineDestroyed (Engine As LWEngine).Trim()
[Event]  Tick (Engine As LWEngine).Trim()
[Event]  OffsetChanged (Engine As LWEngine).Trim()

' === CLASE: LWEngine (anywheresoftware.b4a.objects.WallpaperInternalService.LWEngine) ===
[Prop:R] CurrentOffsetY As Int    ' Returns the current vertical offset related to the full wallpaper height.
[Prop:R] CurrentOffsetX As Int    ' Returns the current horizontal offset related to the full wallpaper width.
[Prop:R] FullWallpaperWidth As Int    ' Returns the full wallpaper width. A wallpaper can be made of several screens.
[Prop:R] IsVisible As Boolean    ' Tests whether this wallpaper is visible.
[Prop:R] ScreenHeight As Int    ' Returns the screen height.
[Prop:R] Canvas As Canvas    ' Returns the canvas which is used to draw on the wallpaper.
Changes will not be visible till you call Refresh or RefreshAll.
[Prop:R] IsPreview As Boolean    ' Tests whether this wallpaper is running in "preview mode".
[Prop:R] FullWallpaperHeight As Int    ' Returns the full wallpaper height.
[Prop:R] ScreenWidth As Int    ' Returns the screen width.
[Met]    RefreshAll()    ' Refreshes the complete screen.
[Met]    Refresh(DirtyRect As Rect)    ' Refreshes the given region.
[Met]    IsInitialized() As Boolean    ' Tests whether this object is initialized.

' ######################################################################
' LIBRERÃA: Network (v1.53)
' ######################################################################

' === CLASE: Socket (anywheresoftware.b4a.objects.SocketWrapper) ===
[Prop:R] Connected As Boolean    ' Tests whether the socket is connected.
[Prop:RW] TimeOut As Int    ' Gets or sets the timeout of the socket's InputStream. Value is specified in milliseconds.
By default there is no timeout.
[Prop:R] InputStream As InputStream    ' Returns the socket's InputStream which is used to read data.
[Prop:R] OutputStream As OutputStream    ' Returns the socket's OutputStream which is used to write data.
[Met]    InitializeSSL(EventName As String, KeyStoreStream As InputStream, Password As String)    ' Initializes a new SSL socket.
 EventName - Sets the sub that will handle the Connected event.
 KeystoreStream - An InputStream that points to an alternate keystore. Pass Null to use the default keystore.
The keystore format should be BKS.
 Password - Custom keystore password.
[Met]    Connect(Host As String, Port As Int, TimeOut As Int)    ' Tries to connect to the given address. The connection is done in the background.
The Connected event will be raised when the connection is ready or if it has failed.
Host - The host name or IP.
Port - Port number.
TimeOut - Connection timeout. Value is specified in milliseconds. Pass 0 to disable the timeout.
[Met]    Close()    ' Closes the socket and the streams.
It is safe to call this method multiple times.
[Met]    IsInitialized() As Boolean    ' Tests whether the object was initialized.
[Met]    Initialize(EventName As String)    ' Initializes a new socket.
[Met]    ResolveHost(Host As String) As String    ' Resolves the host name and returns the IP address.
<b>This method is deprecated and will not work properly on Android 4+ devices.</b>
[Met]    InitializeSSLAcceptAll(EventName As String)    ' Initializes a new SSL socket that accepts all certificates automatically. This method is less secure as the server certificate is not tested.
[Event]  Connected (Successful As Boolean).Trim()

' === CLASE: ServerSocket (anywheresoftware.b4a.objects.SocketWrapper.ServerSocketWrapper) ===
[Met]    GetMyIP() As String    ' Returns the server's IP. Will return "127.0.0.1" (localhost) if no other IP is found.
This method will return the wifi network IP if it is available.
[Met]    Listen()    ' Starts listening in the background for incoming connections.
When a connection is established, the NewConnection event is raised. If the connection is successful a Socket object will be passed in the event.
Calling Listen while the ServerSocket is listening will not do anything.
[Met]    Close()    ' Closes the ServerSocket. This will not close any other sockets.
You should call Initialize if you want to use this object again.
[Met]    IsInitialized() As Boolean    ' Tests whether the object is initialized.
[Met]    Initialize(Port As Int, EventName As String)    ' Initializes the ServerSocket.
Port - The port that the server will listen to. Note that you should call Listen to start listening. Port numbers lower than 1024 are restricted by the system.
EventName - The event Sub prefix name.
[Met]    GetMyWifiIP() As String    ' Returns the IP address of the wifi network.
Returns "127.0.0.1" (localhost) if not connected.
[Event]  NewConnection (Successful As Boolean, NewSocket As Socket).Trim()

' === CLASE: UDPSocket (anywheresoftware.b4a.objects.SocketWrapper.UDPSocket) ===
[Prop:R] Port As Int    ' Gets the local port that this socket listens to.
[Met]    GetBroadcastAddress() As String    ' Returns the network broadcast address.
Note that the loopback broadcast address is 127.255.255.255.
[Met]    Close()    ' Closes the socket.
[Met]    toString() As String 
[Met]    IsInitialized() As Boolean    ' Tests whether this object is initialized.
[Met]    Initialize(EventName As String, Port As Int, ReceiveBufferSize As Int)    ' Initializes the socket and starts listening for packets.
EventName - The name of the Sub that will handle the events.
Port - Local port to listen on. Passing 0 will cause the OS to choose an available port automatically.
ReceiveBufferSize - The size of the receiving packet. Packets larger than this value will be truncated.
Pass 0 if you do not want to receive any packets.
[Met]    Send(Packet As UDPPacket)    ' Sends a Packet. The packet will be sent in the background (asynchronously).
[Event]  PacketArrived (Packet As UDPPacket).Trim()

' === CLASE: UDPPacket (anywheresoftware.b4a.objects.SocketWrapper.UDPSocket.UDPPacket) ===
[Prop:R] Length As Int    ' Gets the length of available bytes in the data. This can be shorter than the array length.
[Prop:R] Port As Int    ' Gets the port of the sending machine.
[Prop:R] Data As Byte()    ' Gets the data array received.
[Prop:R] Host As String    ' <b>This method is deprecated and will not work properly on Android 4+ device.</b>
Use HostAddress instead.
[Prop:R] HostAddress As String    ' Gets the IP address of the sending machine.
[Prop:R] Offset As Int    ' Gets the offset in the data array where the available data starts.
[Met]    Initialize2(Data As Byte(), Offset As Int, Length As Int, Host As String, Port As Int)    ' Similar to Initialize. The data sent is based on the Offset and Length values.
[Met]    toString() As String 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Data As Byte(), Host As String, Port As Int)    ' Initializes the packet and makes it ready for sending.
Data - The data that will be send.
Host - The target host name or IP address.
Port - The target port.

' ######################################################################
' LIBRERÃA: NFC (v2.02)
' ######################################################################

' === CLASE: NFC (anywheresoftware.b4a.objects.NFC) ===
[Prop:R] IsEnabled As Boolean    ' Returns true if NFC is supported and is enabled.
If IsSupported returned True and IsEnabled returned False then you can show the NFC settings page:
<code>
Dim in As Intent
in.Initialize("android.settings.NFC_SETTINGS", "")
StartActivity(in)</code>
[Prop:R] IsSupported As Boolean    ' Returns true if an NFC adapter is available.
[Met]    EnableForegroundDispatch()    ' Forces all NFC intents to be sent to the current activity. Should be called from Activity_Resume.
DisableForegroundDispatch should called from Activity_Pause.
[Met]    IsNdefIntent(Intent As Intent) As Boolean    ' Tests whether the Intent contains data read from an NDef tag.
[Met]    GetTechList(Intent As Intent) As String()    ' Returns an array with the technologies supported by the NFC tag.
[Met]    PreparePushMessage(EventName As String)    ' Sets the sub that will handle the CreateMessage event.
[Met]    CreateUriRecord(Uri As String) As Object    ' Creates an NdefMessage with a Uri payload.
[Met]    CreateMimeRecord(Mime As String, Data As Byte()) As Object    ' Creates an NdefMessage with the given mime type and data.
Note that this method is only supported by Android 4.1+ (API 16).
[Met]    GetNdefRecords(Intent As Intent) As List    ' Retrieves the NdefRecords stored in the Intent object.
[Met]    DisableForegroundDispatch()    ' See EnableForegroundDispatch.
[Event]  CreateMessage As List.Trim()

' === CLASE: NdefRecord (anywheresoftware.b4a.objects.NFC.NdefRecordWrapper) ===
[Met]    GetPayload() As Byte()    ' Returns the whole payload.
[Met]    GetAsTextType() As String    ' Reads the payload and returns the stored text.
[Met]    GetAsUriType() As String    ' Reads the payload and returns the stored Uri.
[Met]    IsInitialized() As Boolean 

' === CLASE: TagTechnology (anywheresoftware.b4a.objects.NFC.TagTechnologyWrapper) ===
[Prop:R] Connected As Boolean    ' Returns true if there is an active connection.
[Met]    Connect()    ' Connects to the tag. The Connected event will be raised.
[Met]    RunAsync(EventName As String, Method As String, Params As Object(), Flag As Int)    ' Asynchronously runs the given method. This can be used to access native I/O methods.
EventName - The sub that will handle the RunAsync event.
Method - Java method name.
Params - Array of parameters.
Flag - Arbitrary number that will be passed to the RunAsync event.
[Met]    Close()    ' Closes the connection.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String, Tech As String, Intent As Intent)    ' Initializes the object.
EventName - Set the subs that will handle the events.
Tech - The NFC technology that will be used.
Intent - The intent received in Activity_Resume.
[Event]  Connected (Success As Boolean).Trim()
[Event]  RunAsync (Flag As Int, Success As Boolean, Result As Object).Trim()

' ######################################################################
' LIBRERÃA: OkHttp (v1.5)
' ######################################################################

' === CLASE: OkHttpClient (anywheresoftware.b4h.okhttp.OkHttpClientWrapper) ===
[Met]    Execute(HttpRequest As OkHttpRequest, TaskId As Int) As Boolean    ' Executes the OkHttpRequest asynchronously. ResponseSuccess or ResponseError events will be fired later.
If there is a request with the same TaskId already running then this method will return False and the new request will not be submitted.
[Met]    ExecuteCredentials(Request As OkHttpRequest, TaskId As Int, UserName As String, Password As String) As Boolean    ' Same behavior as Execute. The UserName and Password will be used for Basic authentication and Digest authentication.
[Met]    InitializeAcceptAll(EventName As String)    ' Similar to Initialize, with one important difference. All SSL certificates will be automatically accepted.
<b>This method should only be used when trying to connect to a server located in a secured network</b>.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes this object.
IMPORTANT: this object should be declared in Sub Process_Globals.
EventName - The prefix that will be used for ResponseSuccess and ResponseError events.
[Event]  ResponseSuccess (Response As OkHttpResponse, TaskId As Int).Trim()
[Event]  ResponseError (Response As OkHttpResponse, Reason As String, StatusCode As Int, TaskId As Int).Trim()

' === CLASE: OkHttpRequest (anywheresoftware.b4h.okhttp.OkHttpClientWrapper.OkHttpRequest) ===
[Prop:RW] Timeout As Int    ' Gets or sets the request timeout, measured in milliseconds. Default value is 30,000 (30 seconds).
[Met]    InitializePost2(URL As String, Data As Byte())    ' Initializes the request and sets it to be a Http Post method.
The specified Data array will be added to the request.
Unlike InitializePost this method will enable the request to retry and send the data several times in case of IO errors.
[Met]    InitializePut(URL As String, InputStream As InputStream, Length As Int)    ' Initializes the request and sets it to be a Http Put method.
The specified InputStream will be read and added to the request.
[Met]    SetContentType(ContentType As String)    ' Sets the Mime header of the request.
This method should only be used with requests that have a payload.
[Met]    InitializeDelete(URL As String)    ' Initializes the request and sets it to be a Http Delete method.
[Met]    InitializePatch(URL As String, InputStream As InputStream, Length As Int)    ' Initializes the request and sets it to be a Http Patch method.
The specified InputStream will be read and added to the request.
[Met]    InitializePatch2(URL As String, Data As Byte())    ' Initializes the request and sets it to be a Http Patch method.
The specified Data array will be added to the request.
Unlike InitializePost this method will enable the request to retry and send the data several times in case of IO errors.
[Met]    RemoveHeaders(Name As String)    ' Removes all headers with the given name.
[Met]    InitializeDelete2(URL As String, Data As Byte())    ' Initializes the request and sets it to be a Http Delete method with the given payload.
[Met]    InitializeHead(URL As String)    ' Initializes the request and sets it to be a Http Head method.
[Met]    InitializeGet(URL As String)    ' Initializes the request and sets it to be a Http Get method.
[Met]    InitializePost(URL As String, InputStream As InputStream, Length As Int)    ' Initializes the request and sets it to be a Http Post method.
The specified InputStream will be read and added to the request.
[Met]    InitializePut2(URL As String, Data As Byte())    ' Initializes the request and sets it to be a Http Put method.
The specified Data array will be added to the request.
Unlike InitializePost this method will enable the request to retry and send the data several times in case of IO errors.
[Met]    SetContentEncoding(Encoding As String)    ' Sets the encoding header of the request.
[Met]    SetHeader(Name As String, Value As String)    ' Sets the value of the header with the given name. If no such header exists then a new header will be added.

' === CLASE: OkHttpResponse (anywheresoftware.b4h.okhttp.OkHttpClientWrapper.OkHttpResponse) ===
[Prop:R] ContentType As String    ' Returns the Content-Type header.
[Prop:R] ContentEncoding As String    ' Returns the Content-Encoding header.
[Prop:R] ContentLength As Long    ' Returns the response body length.
[Prop:R] StatusCode As Int    ' Returns the response Http code.
Returns -1 is the status code is not available.
[Prop:R] ErrorResponse As String    ' Returns the server response as a string (for failed responses only).
[Met]    GetHeaders() As Map    ' Returns a Map object with the response headers.
Each elements is made of a key which is the header name and a value which is a list containing the values (one or more).
Example:<code>
Dim list1 As List
list1 = response.GetHeaders.Get("Set-Cookie")
For i = 0 To list1.Size - 1
	Log(list1.Get(i))
Next</code>
[Met]    GetAsynchronously(EventName As String, Output As OutputStream, CloseOutput As Boolean, TaskId As Int) As Boolean    ' Asynchronously reads the response and writes it to the given OutputStream.
If there is a request with the same TaskId already running then this method will return False, and the response object will be released.
The StreamFinish event will be raised after the response has been fully read.
EventName - The sub that will handle the StreamFinish event.
Output - The stream from the server will be written to this stream.
CloseOutput - Whether to close the specified output stream when done.
TaskId - The task id given to this task.
Example:<code>
Sub Http_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	Response.GetAsynchronously("ImageResponse", _ 
		File.OpenOutput(File.DirInternalCache, "image.jpg", False), True, TaskId)
End Sub

Sub ImageResponse_StreamFinish (Success As Boolean, TaskId As Int)
	If Success = False Then
		Msgbox(LastException.Message, "Error")
		Return
	End If
	ImageView1.Bitmap = LoadBitmap(File.DirInternalCache, "image.jpg")
End Sub</code>
[Met]    Release()    ' Frees resources allocated for this object.
[Event]  StreamFinish (Success As Boolean, TaskId As Int).Trim()

' ######################################################################
' LIBRERÃA: Phone (v2.53)
' ######################################################################

' === CLASE: SmsMessages (anywheresoftware.b4a.phone.SmsWrapper) ===
[Met]    GetByType(Type As Int) As List    ' Returns a list with all messages of the given type. The type should be one of the type constants.
[Met]    GetAll() As List    ' Returns all stored messages.
[Met]    GetBetweenDates(StartDate As Long, EndDate As Long) As List    ' Returns all messages between the given dates. Start value is inclusive and end value is exclusive.
[Met]    GetByThreadId(ThreadId As Int) As List    ' Returns a list with all messages with the given ThreadId.
[Met]    GetByPersonId(PersonId As Int) As List    ' Returns a list with all messages received from the person with the given id.
[Met]    GetByMessageId(Id As Int) As List 
[Met]    GetAllSince(Date As Long) As List    ' Returns all messages since the given date.
[Met]    GetUnreadMessages() As List    ' Returns all unread messages.

' === CLASE: Sms (anywheresoftware.b4a.phone.SmsWrapper.Sms) ===

' === CLASE: RingtoneManager (anywheresoftware.b4a.phone.RingtoneManagerWrapper) ===
[Met]    Play(Uri As String) As Object    ' Plays a ringtone Uri.
Returns an object that can be passed to Stop, to stop playback.
[Met]    Stop(Ringtone As Object)    ' Stops playback of a previously played ringtone.
Ringtone - the object returned from Play.
[Met]    GetDefault(Type As Int) As String    ' Returns the Uri of the default ringtone of a specific type.
Returns an empty string if no default is available.
Use Play to play the ringtone._
[Met]    DeleteRingtone(Uri As String)    ' Deletes the given entry.
[Met]    AddToMediaStore(Dir As String, FileName As String, Title As String, IsAlarm As Boolean, IsNotification As Boolean, IsRingtone As Boolean, IsMusic As Boolean) As String    ' This method no longer works due to restrictions in Android.
[Met]    SetDefault(Type As Int, Uri As String)    ' Sets the default ringtone for the given type.
In order to get the Uri you should use AddToMediaStore (for new sounds) or ShowRingtonePicker (for existing sounds).
[Met]    ShowRingtonePicker(EventName As String, Type As Int, IncludeSilence As Boolean, ChosenRingtone As String)    ' Shows the ringtone picker activity.
The PickerResult will be raised after the user selects a ringtone.
EventName - Sets the sub that will handle the PickerResult event.
Type - Defines the type(s) of sounds that will be listed. Multiple types can be set using Bit.Or.
IncludeSilence - Whether to include the Silence option in the list.
ChosenRingtone - The uri of the ringtone that will be selected when the dialog opens. Pass an empty string if not needed.
[Met]    GetContentDir() As String    ' Returns a string that represents the virtual content folder. This can be used to play a Ringtone with MediaPlayer.
[Event]  PickerResult (Success As Boolean, Uri As String).Trim()

' === CLASE: PhoneEvents (anywheresoftware.b4a.phone.PhoneEvents) ===
[Met]    InitializeWithPhoneState(EventName As String, PhoneId As PhoneId)    ' Initializes the object and starts listening for events.
The PhoneStateEvent will also be handled.
Example:<code>
Dim PhoneId As PhoneId
Dim PE As PhoneEvents
PE.InitializeWithPhoneState("PE", PhoneId)</code>
[Met]    StopListening()    ' Stops listening for events. You can later call Initialize to start listening for events again.
[Met]    Initialize(EventName As String)    ' Initializes the object and starts listening for events.
The PhoneStateEvent will not be raised. Use InitializeWithPhoneState instead if it is needed.
[Event]  AirplaneModeChanged (State As Boolean, Intent As Intent).Trim()
[Event]  BatteryChanged (Level As Int, Scale As Int, Plugged As Boolean, Intent As Intent).Trim()
[Event]  ConnectivityChanged (NetworkType As String, State As String, Intent As Intent).Trim()
[Event]  DeviceStorageLow (Intent As Intent).Trim()
[Event]  DeviceStorageOk (Intent As Intent).Trim()
[Event]  PackageAdded (Package As String, Intent As Intent).Trim()
[Event]  PackageRemoved (Package As String, Intent As Intent).Trim()
[Event]  PhoneStateChanged (State As String, IncomingNumber As String, Intent As Intent).Trim()
[Event]  ScreenOff (Intent As Intent).Trim()
[Event]  ScreenOn (Intent As Intent).Trim()
[Event]  SmsDelivered (PhoneNumber As String, Intent As Intent).Trim()
[Event]  SmsSentStatus (Success As Boolean, ErrorMessage As String, PhoneNumber As String, Intent As Intent).Trim()
[Event]  Shutdown (Intent As Intent).Trim()
[Event]  TextToSpeechFinish (Intent As Intent).Trim()
[Event]  UserPresent (Intent As Intent).Trim()

' === CLASE: SmsInterceptor (anywheresoftware.b4a.phone.PhoneEvents.SMSInterceptor) ===
[Met]    Initialize2(EventName As String, Priority As Int)    ' Initializes the object and starts listening for new messages.
The last parameter defines the application priority compared to other applications that listen to incoming messages.
You should set it to 999 according to the official Android documentation in order to receive the message first.
It is however possible that a third party application has used a higher value.
[Met]    ListenToOutgoingMessages()    ' Listens to outgoing messages. MessageSent event will be raised when a message is sent.
You can call SmsMessages.GetByMessageId to retrieve the message.
[Met]    StopListening()    ' Stops listening for events. You can later call Initialize to start listening again.
[Met]    Initialize(EventName As String)    ' Initializes the object and starts listening for new messages.
[Event]  MessageReceived (From As String, Body As String) As Boolean.Trim()
[Event]  MessageSent (MessageId As Int).Trim()

' === CLASE: Phone (anywheresoftware.b4a.phone.Phone) ===
[Prop:R] SdkVersion As Int    ' Returns an integer describing the SDK version.
[Prop:R] Model As String 
[Prop:R] Manufacturer As String 
[Prop:R] Product As String 
[Met]    GetMaxVolume(Channel As Int) As Int    ' Gets the maximum volume index (value) for the given channel.
Channel - One of the VOLUME constants.
[Met]    SetScreenOrientation(Orientation As Int)    ' Changes the current activity orientation. This method cannot be called from a service module.
Orientation - -1 for unspecified, 0 for landscape and 1 for portrait.
[Met]    GetNetworkType() As String    ' Returns the currently used cellular network type.
Possible values: 1xRTT, CDMA, EDGE, EHRPD, EVDO_0, EVDO_A, EVDO_B, GPRS, HSDPA, 
HSPA, HSPAP, HSUPA, IDEN, LTE, UMTS, UNKNOWN.
[Met]    GetVolume(Channel As Int) As Int    ' Returns the volume of the specified channel.
Channel - One of the VOLUME constants.
[Met]    ShellAsync(Command As String, Args As String()) As Object    ' Asynchronous version of Shell. Should be used with Wait For:
 <code>
Dim p As Phone
Wait For (p.ShellAsync("ping", Array As String("-c", "1", "b4x.com"))) Complete (Success As Boolean, ExitValue As Int, StdOut As String, StdErr As String)
If Success Then
	Log(ExitValue)
	Log("Out: " & StdOut)
	Log("Err: "&  StdErr)
Else
	Log("Error: " & LastException)
End If</code>
[Met]    GetSimOperator() As String    ' Returns the code of the SIM provider.
Returns an empty string if it is not available.
[Met]    SendBroadcastIntent(Intent As Intent)    ' Sends an intent to all BroadcastReceivers that listen to this type of intents.
Example of asking the media scanner to rescan a file:<code>
Dim i As Intent
i.Initialize("android.intent.action.MEDIA_SCANNER_SCAN_FILE", _
	"file://" & File.Combine(File.DirRootExternal, "pictures/1.jpg"))
Dim p As Phone
p.SendBroadcastIntent(i)</code>
[Met]    GetResourceDrawable(ResourceId As Int) As Drawable    ' Returns an internal drawable object.
See this <link>page|http://developer.android.com/intl/fr/reference/android/R.drawable.html</link> for a list of available resources.
Example:<code>
Dim p As Phone
Dim bd As BitmapDrawable
bd = p.GetResourceDrawable(17301618)
Activity.AddMenuItem2("Menu1", "Menu1", bd.Bitmap)</code>
[Met]    IsNetworkRoaming() As Boolean    ' Returns true if the device is considered roaming on the current network.
[Met]    IsAirplaneModeOn() As Boolean    ' Tests whether the phone "airplane mode" is on.
[Met]    GetPhoneType() As String    ' Returns the phone radio type. Possible values: CDMA, GSM, NONE.
[Met]    Shell(Command As String, Args As String(), StdOut As StringBuilder, StdErr As StringBuilder) As Int    ' Runs a native shell command. Many commands are inaccessible because of OS security restrictions.
Calling Shell will block the calling thread until the other process completes.
Command - Command to run.
Args - Additional arguments. Can be Null if not needed.
StdOut - A StringBuilder that will hold the standard output value. Can be Null if not needed.
StdErr - A StringBuilder that will hold the standard error value. Can be Null if not needed.
Returns the process exit value.
Example:<code>
Dim p As Phone
Dim sb As StringBuilder
sb.Initialize
p.Shell("df", Null, sb, Null)
Msgbox(sb.ToString, "Free space:")</code>
[Met]    SetScreenBrightness(Value As Float)    ' Sets the brightness of the current activity. This method cannot be called from a service module.
Value - A float between 0 to 1. Set -1 for automatic brightness.
Example:<code>
Sub Process_Globals
	Dim phone1 As Phone
End Sub

Sub Globals
	Dim sb As SeekBar
End Sub

Sub Activity_Create(FirstTime As Boolean)
	sb.Initialize("sb")
	sb.Max = 100
	sb.Value = 50
	Activity.AddView(sb, 10dip, 10dip, 90%x, 30dip)
End Sub
Sub sb_ValueChanged (Value As Int, UserChanged As Boolean)
	phone1.SetScreenBrightness(Max(Value, 5) / 100)
End Sub</code>
[Met]    SetRingerMode(Mode As Int)    ' Sets the phone ringer mode.
Mode - One of the RINGER constants.
Starting from Android 7+ this method will throw an exception if the user set the Do Not Disturb mode,
unless your app has requested a special permission with NOTIFICATION_POLICY_ACCESS_SETTINGS.
Example:<code>
Dim p As Phone
p.SetRingerMode(p.RINGER_VIBRATE)</code>
[Met]    SetVolume(Channel As Int, VolumeIndex As Int, ShowUI As Boolean)    ' Sets the volume of the specified channel.
Channel - One of the VOLUME constants.
VolumeIndex - The volume index. GetMaxVolume can be used to find the largest possible value.
ShowUI - Whether to show the volume UI windows.
Starting from Android 7+ this method will throw an exception if the user set the Do Not Disturb mode,
unless your app has requested a special permission with NOTIFICATION_POLICY_ACCESS_SETTINGS.
Example:<code>
Dim p As Phone
p.SetVolume(p.VOLUME_MUSIC, 3, True)</code>
[Met]    GetDataState() As String    ' Returns the current cellular data connection state.
Possible values: DISCONNECTED, CONNECTING, CONNECTED, SUSPENDED.
[Met]    GetRingerMode() As Int    ' Returns the phone ringer mode.
Value will be one of the RINGER constants.
[Met]    GetNetworkOperatorName() As String    ' Returns the name of current registered operator.
Returns an empty string if it is not available.
[Met]    HideKeyboard(Activity As Activity)    ' Hides the soft keyboard if it is displayed.
Example:<code>
Dim p As Phone
p.HideKeyboard(Activity)</code>
[Met]    SetMute(Channel As Int, Mute As Boolean)    ' Mutes or unmutes the given channel.
Channel - One of the VOLUME constants.
Mute - Whether to mute or unmute the channel.
Starting from Android 7+ this method will throw an exception if the user set the Do Not Disturb mode,
unless your app has requested a special permission with NOTIFICATION_POLICY_ACCESS_SETTINGS.
[Met]    GetSettings(Settings As String) As String    ' Returns the value of the phone settings based on the given key.
The possible keys are listed <link>here|http://developer.android.com/intl/fr/reference/android/provider/Settings.Secure.html</link>.
The keys are lower cased.
Example:<code>
Dim p As Phone
Log(p.GetSettings("android_id"))</code>

' === CLASE: PhoneId (anywheresoftware.b4a.phone.Phone.PhoneId) ===
[Met]    GetLine1Number() As String    ' Returns the phone number string for line 1 as configured in the SIM card.
Returns an empty string if it is not available.
[Met]    GetSubscriberId() As String    ' Returns the unique subscriber id.
Returns an empty string if it is not available.
[Met]    GetDeviceId() As String    ' Returns a unique device Id. Returns an empty string if the device Id is not available (usually on wifi only devices).
<b>This method will not work on Android 10+ devices. It will throw an exception in some cases. Do not use.</b>
[Met]    GetSimSerialNumber() As String    ' Returns the serial number of the SIM card.
Returns an empty string if it is not available.

' === CLASE: PhoneVibrate (anywheresoftware.b4a.phone.Phone.PhoneVibrate) ===
[Met]    Vibrate(TimeMs As Long)    ' Vibrates the phone for the specified duration.

' === CLASE: PhoneWakeState (anywheresoftware.b4a.phone.Phone.PhoneWakeState) ===
[Met]    ReleaseKeepAlive()    ' Releases the power lock and allows the device to go to sleep.
[Met]    PartialLock()    ' Acquires a partial lock. This will prevent the CPU from going to sleep, even if the user presses on the power button.
Make sure to call ReleasePartialLock eventually to release this lock.
[Met]    KeepAlive(BrightScreen As Boolean)    ' Prevents the device from going to sleep.
Call ReleaseKeepAlive to release the power lock.
BrightScreen - Whether to keep the screen bright or dimmed.
[Met]    ReleasePartialLock()    ' Releases a partial lock that was previously acquired by calling PartialLock.

' === CLASE: PhoneIntents (anywheresoftware.b4a.phone.Phone.PhoneIntents) ===
[Met]    PlayAudio(Dir As String, File As String) As Intent    ' Creates an intent that will start playing the given audio file with the default player.
This method cannot work with internal files.
[Met]    PlayVideo(Dir As String, File As String) As Intent    ' Creates an intent that will start playing the given video file with the default player.
This method cannot work with internal files.
[Met]    OpenBrowser(Uri As String) As Intent    ' Creates an intent that will open the specified URI.
Example:<code>
StartActivity (PhoneIntents.OpenBrowser("http://www.google.com"))</code>

' === CLASE: PhoneCalls (anywheresoftware.b4a.phone.Phone.PhoneCalls) ===
[Met]    Call(PhoneNumber As String) As Intent    ' Creates an intent that will call a phone number.
Example:<code>
Dim p As PhoneCalls
StartActivity(p.Call("1234567890"))</code>

' === CLASE: PhoneSms (anywheresoftware.b4a.phone.Phone.PhoneSms) ===
[Met]    Send2(PhoneNumber As String, Text As String, ReceiveSentNotification As Boolean, ReceiveDeliveredNotification As Boolean)    ' Sends an Sms message. Note that this method actually sends the message (unlike most other methods that
create an intent object).
You can use PhoneEvents to handle the SmsSentStatus and SmsDelivered events.
ReceiveSentNotification - If true then the SmsSentStatus event (PhoneEvents) will be raised when the message is sent.
ReceiveDeliveredNotification - If true then the SmsDelivered event (PhoneEvents) will be raised when the message is delivered.
Note that the two above notifications might incur an additional payment.
[Met]    Send(PhoneNumber As String, Text As String)    ' Sends an Sms message. Note that this method actually sends the message (unlike most other methods that
create an intent object).
You can use PhoneEvents to handle the SmsSentStatus and SmsDelivered events.
This method is equivalent to calling Send2(PhoneNumber, Text, True, True).

' === CLASE: Email (anywheresoftware.b4a.phone.Phone.Email) ===
[Met]    GetHtmlIntent() As Intent    ' Returns the Intent that should be sent with StartActivity.
The email message will be a Html message.
[Met]    GetIntent() As Intent    ' Returns the Intent that should be sent with StartActivity.

' === CLASE: LogCat (anywheresoftware.b4a.phone.Phone.LogCat) ===
[Met]    LogCatStop()    ' Stops tracking the logs.
[Met]    LogCatStart(Args As String(), EventName As String)    ' Starts tracking the logs.
Args - Optional arguments passed to the internal LogCat command.
EventName - The Sub that will handle the LogCatData event.
[Event]  LogCatData (Buffer() As Byte, Length As Int).Trim()

' === CLASE: ContentChooser (anywheresoftware.b4a.phone.Phone.ContentChooser) ===
[Met]    Show(Mime As String, Title As String)    ' Sends the request to the system. If there are more than one applications that support the given Mime then a list with the applications will be displayed to the user.
The Result event will be raised after the user chose an item or canceled the dialog.
Mime - The content MIME type.
Title - The title of the chooser dialog (when there is more than one application).
Examples:<code>
CC.Show("image/*", "Choose image")
CC.Show("audio/*", "Choose audio file")</code>
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object and sets the Sub that will handle the Result event.
Example:<code>
Dim CC As ContentChooser
CC.Initialize("CC")</code>
[Event]  Result (Success As Boolean, Dir As String, FileName As String).Trim()

' === CLASE: VoiceRecognition (anywheresoftware.b4a.phone.Phone.VoiceRecognition) ===
[Prop:W] Language As String    ' Sets the language used. By default the device default language is used.
Example:<code>
VR.Language = "en"</code>
[Prop:W] Prompt As String    ' Sets the prompt that is displayed in the "Speak now" dialog in addition to the "Speak now" message.
[Met]    Listen()    ' Starts listening. The Result event will be raised when the result arrives.
[Met]    Listen2(RecognizeIntent As Intent)    ' Similar to Listen. Allows you to build the intent yourself.
[Met]    IsSupported() As Boolean    ' Tests whether voice recognition is supported on this device.
[Met]    Initialize(EventName As String)    ' Initializes the object and sets the Sub that will catch the Result event.
Example:<code>
Dim VR As VoiceRecognition
VR.Initialize("VR")</code>
[Event]  Result (Success As Boolean, Texts As List).Trim()

' === CLASE: PhoneOrientation (anywheresoftware.b4a.phone.Phone.PhoneOrientation) ===
[Met]    StartListening(EventName As String)    ' Starts listening for OrientationChanged events.
[Met]    StopListening()    ' Stops listening for events.
[Event]  OrientationChanged (Azimuth As Float, Pitch As Float, Roll As Float).Trim()

' === CLASE: PhoneAccelerometer (anywheresoftware.b4a.phone.Phone.PhoneAccelerometer) ===
[Met]    StartListening(EventName As String)    ' Starts listening for AccelerometerChanged events.
[Met]    StopListening()    ' Stops listening for events.
[Event]  AccelerometerChanged (X As Float, Y As Float, Z As Float).Trim()

' === CLASE: PhoneSensors (anywheresoftware.b4a.phone.Phone.PhoneSensors) ===
[Prop:R] Accuracy As Int    ' Returns the event accuracy, between 0 (unreliable) to 3 (maximum accuracy).
[Prop:R] MaxValue As Float    ' Returns the maximum value for this sensor.
Returns -1 if this sensor is not supported.
[Prop:R] Timestamp As Long    ' Returns the event timestamp measured in nanoseconds. Note that the actual value has different meanings on different devices.
Thus it should only be used to compare between sensor events.
[Met]    Initialize2(SensorType As Int, SensorDelay As Int)    ' Initializes the object and sets the sensor type and sensor events rate.
SensorType - One of the TYPE_ constants.
SensorDelay - A value between 0 (fastest rate) to 3 (slowest rate). This is only a hint to the system.
[Met]    StartListening(EventName As String) As Boolean    ' Starts listening for sensor events.
Returns True if the sensor is supported.
Usually you will want to start listening in Sub Activity_Resume and stop listening in Sub Activity_Pause.
[Met]    StopListening()    ' Stops listening for events.
[Met]    Initialize(SensorType As Int)    ' Initializes the object and sets the sensor type (one of the TYPE_ constants).
[Event]  SensorChanged (Values() As Float).Trim()

' === CLASE: PackageManager (anywheresoftware.b4a.phone.PackageManagerWrapper) ===
[Met]    GetVersionName(Package As String) As String    ' Returns the application version name.
[Met]    GetInstalledPackages() As List    ' Returns a list of the installed packages.
Example:<code>
Dim pm As PackageManager
Dim packages As List
packages = pm.GetInstalledPackages
For i = 0 To packages.Size - 1
	Log(packages.Get(i))
Next</code>
[Met]    GetVersionCode(Package As String) As Int    ' Returns the application version code.
[Met]    GetApplicationIntent(Package As String) As Intent    ' Returns an Intent object that can be used to start the given application.
Example:<code>
Dim in As Intent
Dim pm As PackageManager
in = pm.GetApplicationIntent("com.google.android.youtube")
If in.IsInitialized Then StartActivity(in)
StartActivity(in)</code>
[Met]    QueryIntentActivities(Intent As Intent) As List    ' Returns a list with the installed activities that can handle the given intent.
Each item in the list is the "component name" of an activity. You can use Intent.SetComponent to explicitly choose the activity.
The first item is considered the best match.
For example, the following code lists all the activities that can "view" a text file:<code>
Dim pm As PackageManager
Dim Intent1 As Intent
Intent1.Initialize(Intent1.ACTION_VIEW, "file://")
Intent1.SetType("text/*")
For Each cn As String In pm.QueryIntentActivities(Intent1)
	Log(cn)
Next</code>
[Met]    GetApplicationLabel(Package As String) As String    ' Returns the application label.
[Met]    GetApplicationIcon(Package As String) As Drawable    ' Returns the application icon.
Example:<code>
Dim pm As PackageManager
Activity.Background = pm.GetApplicationIcon("com.google.android.youtube")</code>

' === CLASE: Contacts (anywheresoftware.b4a.phone.ContactsWrapper) ===
[Met]    FindByMail(Email As String, Exact As Boolean) As List    ' Returns a List of Contact objects with all contacts matching the given email.
Email - The email to search for.
Exact - If True then only contacts with the exact email address (case sensitive) will return
, otherwise all contacts email addresses that include the Email string will return (case insensitive).
[Met]    GetAll() As List    ' Returns a List of Contact objects with all the contacts. This list can be very large.
[Met]    GetById(Id As Int) As Contact    ' Returns the Contact with the specified Id.
 Returns Null if no matching contact found.
[Met]    FindByName(Name As String, Exact As Boolean) As List    ' Returns a List of Contact objects with all contacts matching the given name.
Name - The name to search for.
Exact - If True then only contacts with the exact name value (case sensitive) will return
, otherwise all contacts names that include the Name string will return (case insensitive).

' === CLASE: Contact (anywheresoftware.b4a.phone.ContactsWrapper.Contact) ===
[Met]    GetEmails() As Map    ' Returns a Map with the contacts email addresses as keys and the email types as values.
This call executes an additional query.
[Met]    GetPhones() As Map    ' Returns a Map with all the contacts phone numbers as keys and the phone types as values.
This call executes an additional query.
[Met]    GetPhoto() As Bitmap    ' Returns the contact photo or Null if there is no attached photo.
This call executes an additional query.

' === CLASE: Contacts2 (anywheresoftware.b4a.phone.Contacts2Wrapper) ===
[Met]    FindByMail(Email As String, Exact As Boolean, IncludePhoneNumber As Boolean, IncludeNotes As Boolean) As List    ' Returns a List of Contact objects with all contacts matching the given email.
Email - The email to search for.
Exact - If True then only contacts with the exact email address (case sensitive) will return
, otherwise all contacts email addresses that include the Email string will return (case insensitive).

IncludePhoneNumber - Whether to fetch the default phone number.
IncludeNotes - Whether to fetch the notes field.
[Met]    GetAll(IncludePhoneNumber As Boolean, IncludeNotes As Boolean) As List    ' Returns a List of Contact objects with all the contacts. This list can be very large.
[Met]    GetContactsByQuery(Query As String, Arguments As String(), IncludePhoneNumber As Boolean, IncludeNotes As Boolean) As List    ' Returns a list of contacts based on the specified query and arguments.
Query - The SQL query. Pass an empty string to return all contacts.
Arguments - An array of strings used for parameterized queries. Pass Null if not needed.
IncludePhoneNumber - Whether to fetch the phone number for each contact.
IncludeNotes - Whether to fetch the notes field for each contact.
[Met]    GetContactsAsync(EventName As String, Query As String, Arguments As String(), IncludePhoneNumber As Boolean, IncludeNotes As Boolean)    ' This method is an asynchronous version of GetContactsByQuery. Once the list is ready the Complete event will be raised.
The EventName parameter sets the sub that will handle this event.
[Met]    GetById(Id As Int, IncludePhoneNumber As Boolean, IncludeNotes As Boolean) As Contact    ' Returns the Contact with the specified Id.
Returns Null if no matching contact found.
IncludePhoneNumber - Whether to fetch the default phone number.
IncludeNotes - Whether to fetch the notes field.
[Met]    FindByName(Name As String, Exact As Boolean, IncludePhoneNumber As Boolean, IncludeNotes As Boolean) As List    ' Returns a List of Contact objects with all contacts matching the given name.
Name - The name to search for.
Exact - If True then only contacts with the exact name value (case sensitive) will return
, otherwise all contacts names that include the Name string will return (case insensitive).

IncludePhoneNumber - Whether to fetch the default phone number.
IncludeNotes - Whether to fetch the notes field.
[Event]  Complete (ListOfContacts As List).Trim()

' === CLASE: CallLog (anywheresoftware.b4a.phone.CallLogWrapper) ===
[Met]    GetAll(Limit As Int) As List    ' Returns all calls ordered by date (descending) as a List of CallItems.
Limit - Maximum number of CallItems to return. Pass 0 to return all items.
[Met]    GetSince(Date As Long, Limit As Int) As List    ' Returns all CallItems with a date value larger than the specified value.
Limit - Maximum number of items to return. Pass 0 to return all items.
[Met]    GetById(Id As Int) As CallItem    ' Returns the CallItem with the specified Id.
Returns Null if no matching CallItem found.

' === CLASE: CallItem (anywheresoftware.b4a.phone.CallLogWrapper.CallItem) ===

' ######################################################################
' LIBRERÃA: PreferenceActivity (v1.01)
' ######################################################################

' === CLASE: preferenceactivity (anywheresoftware.b4a.objects.preferenceactivity) ===
[Prop:RW] Intent As Intent 
[Prop:W] Visible As Boolean 
[Prop:R] PackageCodePath As String 
[Prop:R] CacheDir As File 
[Prop:R] LastNonConfigurationInstance As Object 
[Prop:W] ContentView As Int 
[Prop:R] CallingPackage As String 
[Prop:RW] PreferenceScreen As PreferenceScreen 
[Prop:R] MenuInflater As MenuInflater 
[Prop:R] FilesDir As File 
[Prop:R] Window As Window 
[Prop:RW] TitleColor As Int 
[Prop:W] Result As Int 
[Prop:R] WallpaperDesiredMinimumWidth As Int 
[Prop:R] Parent As Activity 
[Prop:R] PackageManager As PackageManager 
[Prop:R] ContentResolver As ContentResolver 
[Prop:R] CurrentFocus As View 
[Prop:R] SelectedItemId As Long 
[Prop:RW] ListAdapter As ListAdapter 
[Prop:R] PackageName As String 
[Prop:R] SelectedItemPosition As Int 
[Prop:R] Application As Application 
[Prop:R] ApplicationInfo As ApplicationInfo 
[Prop:W] Persistent As Boolean 
[Prop:R] BaseContext As Context 
[Prop:R] MainLooper As Looper 
[Prop:R] PreferenceManager As PreferenceManager 
[Prop:R] PackageResourcePath As String 
[Prop:R] ComponentName As ComponentName 
[Prop:R] Resources As Resources 
[Prop:W] ProgressBarIndeterminateVisibility As Boolean 
[Prop:RW] VolumeControlStream As Int 
[Prop:R] Assets As AssetManager 
[Prop:R] ListView As ListView 
[Prop:R] TaskId As Int 
[Prop:W] DefaultKeyMode As Int 
[Prop:R] LayoutInflater As LayoutInflater 
[Prop:R] WindowManager As WindowManager 
[Prop:W] ProgressBarVisibility As Boolean 
[Prop:R] ClassLoader As ClassLoader 
[Prop:RW] RequestedOrientation As Int 
[Prop:R] CallingActivity As ComponentName 
[Prop:RW] Title As CharSequence 
[Prop:W] ProgressBarIndeterminate As Boolean 
[Prop:W] Progress As Int 
[Prop:R] InstanceCount As Long 
[Prop:R] WallpaperDesiredMinimumHeight As Int 
[Prop:RW] Theme As Theme 
[Prop:RW] Wallpaper As Drawable 
[Prop:R] ChangingConfigurations As Int 
[Prop:R] ApplicationContext As Context 
[Prop:W] SecondaryProgress As Int 
[Prop:W] Selection As Int 
[Prop:R] LocalClassName As String 
[Met]    onPanelClosed(arg0 As Int, arg1 As Menu) 
[Met]    onCreateThumbnail(arg0 As Bitmap, arg1 As Canvas) As Boolean 
[Met]    startNextMatchingActivity(arg0 As Intent) As Boolean 
[Met]    getDatabasePath(arg0 As String) As File 
[Met]    onWindowFocusChanged(arg0 As Boolean) 
[Met]    isTaskRoot() As Boolean 
[Met]    enforceCallingPermission(arg0 As String, arg1 As String) 
[Met]    startService(arg0 As Intent) As ComponentName 
[Met]    createPendingResult(arg0 As Int, arg1 As Intent, arg2 As Int) As PendingIntent 
[Met]    startActivityFromChild(arg0 As Activity, arg1 As Intent, arg2 As Int) 
[Met]    dispatchKeyEvent(arg0 As KeyEvent) As Boolean 
[Met]    startManagingCursor(arg0 As Cursor) 
[Met]    isRestricted() As Boolean 
[Met]    databaseList() As String() 
[Met]    deleteDatabase(arg0 As String) As Boolean 
[Met]    addContentView(arg0 As View, arg1 As LayoutParams) 
[Met]    setFeatureDrawableUri(arg0 As Int, arg1 As Uri) 
[Met]    onKeyDown(arg0 As Int, arg1 As KeyEvent) As Boolean 
[Met]    finishActivityFromChild(arg0 As Activity, arg1 As Int) 
[Met]    deleteFile(arg0 As String) As Boolean 
[Met]    enforceCallingOrSelfPermission(arg0 As String, arg1 As String) 
[Met]    onCreateView(arg0 As String, arg1 As Context, arg2 As AttributeSet) As View 
[Met]    requestWindowFeature(arg0 As Int) As Boolean 
[Met]    enforceCallingOrSelfUriPermission(arg0 As Uri, arg1 As Int, arg2 As String) 
[Met]    getSharedPreferences(arg0 As String, arg1 As Int) As SharedPreferences 
[Met]    checkUriPermission(arg0 As Uri, arg1 As Int, arg2 As Int, arg3 As Int) As Int 
[Met]    onCreateContextMenu(arg0 As ContextMenu, arg1 As View, arg2 As ContextMenuInfo) 
[Met]    revokeUriPermission(arg0 As Uri, arg1 As Int) 
[Met]    getDir(arg0 As String, arg1 As Int) As File 
[Met]    onPreparePanel(arg0 As Int, arg1 As View, arg2 As Menu) As Boolean 
[Met]    finishFromChild(arg0 As Activity) 
[Met]    getFileStreamPath(arg0 As String) As File 
[Met]    startActivityForResult(arg0 As Intent, arg1 As Int) 
[Met]    onCreateOptionsMenu(arg0 As Menu) As Boolean 
[Met]    findPreference(arg0 As CharSequence) As Preference 
[Met]    unregisterReceiver(arg0 As BroadcastReceiver) 
[Met]    checkCallingPermission(arg0 As String) As Int 
[Met]    getString(arg0 As Int) As String 
[Met]    onUserInteraction() 
[Met]    setFeatureDrawableResource(arg0 As Int, arg1 As Int) 
[Met]    setContentView(arg0 As View, arg1 As LayoutParams) 
[Met]    addPreferencesFromIntent(arg0 As Intent) 
[Met]    stopManagingCursor(arg0 As Cursor) 
[Met]    setFeatureDrawableAlpha(arg0 As Int, arg1 As Int) 
[Met]    isFinishing() As Boolean 
[Met]    findViewById(arg0 As Int) As View 
[Met]    sendBroadcast(arg0 As Intent) 
[Met]    openOptionsMenu() 
[Met]    onKeyMultiple(arg0 As Int, arg1 As Int, arg2 As KeyEvent) As Boolean 
[Met]    onSearchRequested() As Boolean 
[Met]    peekWallpaper() As Drawable 
[Met]    clearWallpaper() 
[Met]    setFeatureDrawable(arg0 As Int, arg1 As Drawable) 
[Met]    fileList() As String() 
[Met]    openOrCreateDatabase(arg0 As String, arg1 As Int, arg2 As CursorFactory) As SQLiteDatabase 
[Met]    closeContextMenu() 
[Met]    openFileOutput(arg0 As String, arg1 As Int) As FileOutputStream 
[Met]    takeKeyEvents(arg0 As Boolean) 
[Met]    startActivity(arg0 As Intent) 
[Met]    grantUriPermission(arg0 As String, arg1 As Uri, arg2 As Int) 
[Met]    sendOrderedBroadcast(arg0 As Intent, arg1 As String) 
[Met]    onConfigurationChanged(arg0 As Configuration) 
[Met]    bindService(arg0 As Intent, arg1 As ServiceConnection, arg2 As Int) As Boolean 
[Met]    startSearch(arg0 As String, arg1 As Boolean, arg2 As Bundle, arg3 As Boolean) 
[Met]    openContextMenu(arg0 As View) 
[Met]    onPreferenceTreeClick(arg0 As PreferenceScreen, arg1 As Preference) As Boolean 
[Met]    removeDialog(arg0 As Int) 
[Met]    createPackageContext(arg0 As String, arg1 As Int) As Context 
[Met]    checkCallingOrSelfUriPermission(arg0 As Uri, arg1 As Int) As Int 
[Met]    onPrepareOptionsMenu(arg0 As Menu) As Boolean 
[Met]    onLowMemory() 
[Met]    showDialog(arg0 As Int) 
[Met]    getSystemService(arg0 As String) As Object 
[Met]    startInstrumentation(arg0 As ComponentName, arg1 As String, arg2 As Bundle) As Boolean 
[Met]    dispatchPopulateAccessibilityEvent(arg0 As AccessibilityEvent) As Boolean 
[Met]    onKeyUp(arg0 As Int, arg1 As KeyEvent) As Boolean 
[Met]    runOnUiThread(arg0 As Runnable) 
[Met]    sendStickyBroadcast(arg0 As Intent) 
[Met]    onCreatePanelView(arg0 As Int) As View 
[Met]    onMenuOpened(arg0 As Int, arg1 As Menu) As Boolean 
[Met]    onOptionsMenuClosed(arg0 As Menu) 
[Met]    onOptionsItemSelected(arg0 As MenuItem) As Boolean 
[Met]    startActivityIfNeeded(arg0 As Intent, arg1 As Int) As Boolean 
[Met]    onContextItemSelected(arg0 As MenuItem) As Boolean 
[Met]    onWindowAttributesChanged(arg0 As LayoutParams) 
[Met]    finish() 
[Met]    enforcePermission(arg0 As String, arg1 As Int, arg2 As Int, arg3 As String) 
[Met]    checkPermission(arg0 As String, arg1 As Int, arg2 As Int) As Int 
[Met]    registerReceiver(arg0 As BroadcastReceiver, arg1 As IntentFilter) As Intent 
[Met]    unregisterForContextMenu(arg0 As View) 
[Met]    dispatchTrackballEvent(arg0 As MotionEvent) As Boolean 
[Met]    onContextMenuClosed(arg0 As Menu) 
[Met]    onRetainNonConfigurationInstance() As Object 
[Met]    unbindService(arg0 As ServiceConnection) 
[Met]    onCreateDescription() As CharSequence 
[Met]    isChild() As Boolean 
[Met]    obtainStyledAttributes(arg0 As Int()) As TypedArray 
[Met]    onCreatePanelMenu(arg0 As Int, arg1 As Menu) As Boolean 
[Met]    onCreate(savedInstanceState As Bundle) 
[Met]    finishActivity(arg0 As Int) 
[Met]    addPreferencesFromResource(arg0 As Int) 
[Met]    hasWindowFocus() As Boolean 
[Met]    openFileInput(arg0 As String) As FileInputStream 
[Met]    dispatchTouchEvent(arg0 As MotionEvent) As Boolean 
[Met]    getText(arg0 As Int) As CharSequence 
[Met]    setResult(arg0 As Int, arg1 As Intent) 
[Met]    enforceUriPermission(arg0 As Uri, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As String) 
[Met]    onMenuItemSelected(arg0 As Int, arg1 As MenuItem) As Boolean 
[Met]    enforceCallingUriPermission(arg0 As Uri, arg1 As Int, arg2 As String) 
[Met]    onContentChanged() 
[Met]    stopService(arg0 As Intent) As Boolean 
[Met]    removeStickyBroadcast(arg0 As Intent) 
[Met]    onTrackballEvent(arg0 As MotionEvent) As Boolean 
[Met]    getPreferences(arg0 As Int) As SharedPreferences 
[Met]    closeOptionsMenu() 
[Met]    checkCallingOrSelfPermission(arg0 As String) As Int 
[Met]    onTouchEvent(arg0 As MotionEvent) As Boolean 
[Met]    moveTaskToBack(arg0 As Boolean) As Boolean 
[Met]    registerForContextMenu(arg0 As View) 
[Met]    checkCallingUriPermission(arg0 As Uri, arg1 As Int) As Int 
[Met]    managedQuery(arg0 As Uri, arg1 As String(), arg2 As String, arg3 As String(), arg4 As String) As Cursor 
[Met]    dismissDialog(arg0 As Int) 

' === CLASE: PreferenceManager (anywheresoftware.b4a.objects.preferenceactivity.PreferenceManager) ===
[Met]    GetAll() As Map    ' Returns a Map with all the Keys and Values. Note that changes to this map will not affect the stored values.
[Met]    GetUpdatedKeys() As List    ' Returns a list with the keys that were updated since the last call to GetUpdatedKeys.
Note that the updated keys may include keys with unchanged values.
[Met]    GetString(Key As String) As String    ' Returns the String value mapped to the given key. Returns an empty string if the key is not found.
[Met]    SetBoolean(Key As String, Value As Boolean)    ' Maps the given key to the given Boolean value.
[Met]    ClearAll()    ' Clears all stored entries.
[Met]    SetString(Key As String, Value As String)    ' Maps the given key to the given String value.
[Met]    GetBoolean(Key As String) As Boolean    ' Returns the Boolean value mapped to the given key. Returns False is the key is not found.

' === CLASE: PreferenceScreen (anywheresoftware.b4a.objects.preferenceactivity.PreferenceScreenWrapper) ===
[Met]    AddEditText(Key As String, Title As String, Summary As String, DefaultValue As String)    ' Adds a preference entry which allows the user to enter free text.
Key - The preference key associated with the value.
Title - Entry title.
Summary - Entry summary (second row).
DefaultValue - The default value of this preference entry if the key does not already exist.
[Met]    Initialize(Title As String, Summary As String)    ' Initializes the object and sets the title that will show. The summary will show for secondary PreferenceScreens.
[Met]    AddPreferenceCategory(PreferenceCategory As PreferenceCategory)    ' Adds a PreferenceCategory. A preference category is made of a title and a group of entries.
Note that a PreferenceCategory cannot hold other PreferenceCategories.
[Met]    AddCheckBox(Key As String, Title As String, Summary As String, DefaultValue As Boolean)    ' Adds a preference entry with a check box. The entry values can be either True or False.
Key - The preference key associated with the value.
Title - Entry title.
Summary - Entry summary (second row).
DefaultValue - The default value of this preference entry if the key does not already exist.
[Met]    AddPreferenceScreen(PreferenceScreen As PreferenceScreen)    ' Adds a secondary PreferenceScreen. When the user presses on this entry the second screen will appear.
[Met]    AddList(Key As String, Title As String, Summary As String, DefaultValue As String, Values As List)    ' Adds a preference entry which allows the user to choose a single item out of a list.
Key - The preference key associated with the value.
Title - Entry title.
Summary - Entry summary (second row).
DefaultValue - The default value of this preference entry if the key does not already exist. Should match one of the values.
Values - A list of strings with the possible values.
[Met]    CreateIntent() As Intent    ' Creates the Intent object that is required for showing the PreferencesActivity.
Example:<code>StartActivity(PreferenceScreen1.CreateIntent)</code>

' === CLASE: PreferenceCategory (anywheresoftware.b4a.objects.preferenceactivity.PreferenceCategoryWrapper) ===
[Met]    AddEditText(Key As String, Title As String, Summary As String, DefaultValue As String)    ' Adds a preference entry which allows the user to enter free text.
Key - The preference key associated with the value.
Title - Entry title.
Summary - Entry summary (second row).
DefaultValue - The default value of this preference entry if the key does not already exist.
[Met]    Initialize(Title As String)    ' Initializes the object and sets the category title.
[Met]    AddPreferenceCategory(PreferenceCategory As PreferenceCategory)    ' Adds a PreferenceCategory. A preference category is made of a title and a group of entries.
Note that a PreferenceCategory cannot hold other PreferenceCategories.
[Met]    AddCheckBox(Key As String, Title As String, Summary As String, DefaultValue As Boolean)    ' Adds a preference entry with a check box. The entry values can be either True or False.
Key - The preference key associated with the value.
Title - Entry title.
Summary - Entry summary (second row).
DefaultValue - The default value of this preference entry if the key does not already exist.
[Met]    AddPreferenceScreen(PreferenceScreen As PreferenceScreen)    ' Adds a secondary PreferenceScreen. When the user presses on this entry the second screen will appear.
[Met]    AddList(Key As String, Title As String, Summary As String, DefaultValue As String, Values As List)    ' Adds a preference entry which allows the user to choose a single item out of a list.
Key - The preference key associated with the value.
Title - Entry title.
Summary - Entry summary (second row).
DefaultValue - The default value of this preference entry if the key does not already exist. Should match one of the values.
Values - A list of strings with the possible values.
[Met]    CreateIntent() As Intent    ' Creates the Intent object that is required for showing the PreferencesActivity.
Example:<code>StartActivity(PreferenceScreen1.CreateIntent)</code>

' ######################################################################
' LIBRERÃA: RandomAccessFile (v2.33)
' ######################################################################

' === CLASE: RandomAccessFile (anywheresoftware.b4a.randomaccessfile.RandomAccessFile) ===
[Prop:R] Size As Long    ' Returns the file size.
[Met]    WriteLong(Value As Long, Position As Long)    ' Writes a Long value to the specified position.
Writes 8 bytes.
[Met]    ReadShort(Position As Long) As Short    ' Reads a Short value stored in the specified position.
Reads 2 bytes.
[Met]    ReadInt(Position As Long) As Int    ' Reads an Int value stored in the specified position.
Reads 4 bytes.
[Met]    ReadDouble(Position As Long) As Double    ' Reads a Double value stored in the specified position.
Reads 8 bytes.
[Met]    WriteShort(Value As Short, Position As Long)    ' Writes a Short value to the specified position.
Writes 2 bytes.
[Met]    WriteDouble(Value As Double, Position As Long)    ' Writes a Double value to the specified position.
Writes 8 bytes.
[Met]    Initialize(Dir As String, File As String, ReadOnly As Boolean)    ' Opens the specified file.
Note that it is not possible to open a file saved in the assets folder with this object.
If needed you can copy the file to another location and then open it.
ReadOnly - Whether to open the file in read only mode (otherwise it will be readable and writable).
Example:<code>
Dim raf As RandomAccessFile
raf.Initialize(File.DirInternal, "1.dat", false)</code>
[Met]    ReadEncryptedObject(Password As String, Position As Long) As Object    ' Reads an encrypted object from the stream.
Password - The password used while writing the object.
Position - Stream position.
[Met]    ReadSignedByte(Position As Long) As Byte    ' Reads a signed byte (-128 - 127) stored in the specified position.
[Met]    WriteFloat(Value As Float, Position As Long)    ' Writes a Float value to the specified position.
Writes 4 bytes.
[Met]    ReadB4XObject(Position As Long) As Object    ' Reads an object previously written with WriteB4XObject.
[Met]    WriteObject(Object As Object, Compress As Boolean, Position As Long)    ' Writes the given object to the stream.
This method is capable of writing the following types of objects: Lists, Arrays, Maps, Strings, primitive types and user defined types.
Combinations of these types are also supported. For example, a map with several lists of arrays can be written.
The element type inside a collection must be a String or primitive type.
Note that changing your package name may make older objects files unusable (requiring you to write them again).
Object - The object that will be written.
Compress - Whether to compress the data before writing it. Should be true in most cases.
Position - The position in the file that this object will be written to.
[Met]    ReadUnsignedByte(Position As Long) As Int    ' Reads an unsigned bytes (0 - 255) stored in the specified position.
The value returned is of type Int as Byte can only store values between -128 to 127.
[Met]    Flush()    ' Flushes any cached data.
[Met]    ReadBytes(Buffer As Byte(), StartOffset As Int, Length As Int, Position As Long) As Int    ' Reads bytes from the stream and into to the given array.
Buffer - Array of bytes where the data will be written to.
StartOffset - The first byte read will be written to Buffer(StartOffset).
Length - Number of bytes to read.
Position - The position of the first byte to read.
Returns the number of bytes read which is equal to Length (unless the file is smaller than the requested length).
[Met]    WriteByte(Byte As Byte, Position As Long)    ' Writes a Byte value to the specified position.
Writes 1 byte.
[Met]    ReadLong(Position As Long) As Long    ' Reads a Long value stored in the specified position.
Reads 8 bytes.
[Met]    Initialize3(Buffer As Byte(), LittleEndian As Boolean)    ' Treats the given buffer as a random access file with a constant size.
This allows you to read and write values to an array of bytes.
[Met]    Initialize2(Dir As String, File As String, ReadOnly As Boolean, LittleEndian As Boolean)    ' Same as Initialize with the option to set the byte order to little endian instead of the
default big endian. This can be useful when sharing files with Windows computers.
[Met]    ReadFloat(Position As Long) As Float    ' Reads a Float value stored in the specified position.
Reads 4 bytes.
[Met]    ReadObject(Position As Long) As Object    ' Reads an object from the stream.
See WriteObject for supported types.
[Met]    Close()    ' Closes the stream.
[Met]    WriteInt(Value As Int, Position As Long)    ' Writes an Int value to the specified position.
Writes 4 bytes.
[Met]    WriteBytes(Buffer As Byte(), StartOffset As Int, Length As Int, Position As Long) As Int    ' Writes the given buffer to the stream. The first byte written is Buffer(StartOffset)
and the last is Buffer(StartOffset + Length - 1).
Returns the numbers of bytes written which is equal to Length.
[Met]    WriteB4XObject(Object As Object, Position As Long)    ' Similar to WriteObject. This method writes the object in a format supported by B4i, B4A and B4J.
 The following types are supported: Lists, Arrays of bytes and Arrays of objects, Maps, Strings, primitive types and user defined types.
 Note that user defined types should be declared in the Main module.
[Met]    WriteEncryptedObject(Object As Object, Password As String, Position As Long)    ' Similar to WriteObject. The object is encrypted with AES-256 and then written to the stream.
Note that it is faster to write a single large object compared to many smaller objects.
Object - The object that will be written.
Password - The password that protects the object.
Position - The position in the file that this object will be written to.

' === CLASE: CountingInputStream (anywheresoftware.b4a.randomaccessfile.CountingStreams.CountingInput) ===
[Prop:RW] Count As Long    ' Gets or sets the number of bytes read.
[Met]    BytesAvailable() As Int 
[Met]    Close() 
[Met]    ReadBytes(arg0 As Byte(), arg1 As Int, arg2 As Int) As Int 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(InputStream As InputStream)    ' Initializes the counting stream by wrapping the given input stream.

' === CLASE: CountingOutputStream (anywheresoftware.b4a.randomaccessfile.CountingStreams.CountingOutput) ===
[Prop:RW] Count As Long    ' Gets or sets the number of bytes written.
[Met]    Flush() 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(OutputStream As OutputStream)    ' Initializes the counting stream by wrapping the given output stream.
[Met]    ToBytesArray() As Byte() 
[Met]    Close() 
[Met]    WriteBytes(arg0 As Byte(), arg1 As Int, arg2 As Int) 

' === CLASE: CompressedStreams (anywheresoftware.b4a.randomaccessfile.CompressedStreams) ===
[Met]    WrapOutputStream(Out As OutputStream, CompressMethod As String) As OutputStream    ' Wraps an output streams and returns an output stream that automatically compresses the data when it is written to the stream.
Out - The original output stream.
CompressMethod - The name of the compression method (gzip or zlib).
[Met]    DecompressBytes(CompressedData As Byte(), CompressMethod As String) As Byte()    ' Returns a byte array with the decompressed data.
CompressedData - The compressed data that should be decompressed.
CompressMethod - The name of the compression method (gzip or zlib).
[Met]    CompressBytes(Data As Byte(), CompressMethod As String) As Byte()    ' Returns a byte array with the compressed data.
Data - Data to compress.
CompressMethod - The name of the compression method (gzip or zlib).
[Met]    WrapInputStream(In As InputStream, CompressMethod As String) As InputStream    ' Wraps an input stream and returns an input stream that automatically decompresses the stream when it is read.
In - The original input stream.
CompressMethod - The name of the compression method (gzip or zlib).

' === CLASE: B4XSerializator (anywheresoftware.b4a.randomaccessfile.B4XSerializator) ===
[Prop:RW] Tag As Object    ' Gets or sets the Tag value. This is a place holder that can used to store additional data.
[Met]    ConvertBytesToObjectAsync(Bytes As Byte(), EventName As String)    ' Asynchronously converts the bytes to object. The BytesToObject event will be raised when the object is ready.
Do not reuse the same B4XSerializator instance when calling asynchronous methods.
[Met]    ConvertObjectToBytesAsync(Object As Object, EventName As String)    ' Asynchronously converts the object to bytes. The ObjectToBytes event will be raised with the serialized bytes.
Do not reuse the same B4XSerializator instance when calling asynchronous methods.
[Met]    ConvertBytesToObject(Bytes As Byte()) As Object    ' In-memory version of RandomAccessFile.ReadB4XObject.
[Met]    ConvertObjectToBytes(Object As Object) As Byte()    ' In-memory version of RandomAccessFile.WriteB4XObject.
The following types are supported: Lists, Arrays of bytes and Arrays of objects, Maps, Strings, primitive types and user defined types.
Note that user defined types should be declared in the Main module.
[Event]  ObjectToBytes (Success As Boolean, Bytes() As Byte).Trim()
[Event]  BytesToObject (Success As Boolean, NewObject As Object).Trim()

' === CLASE: AsyncStreams (anywheresoftware.b4a.randomaccessfile.AsyncStreams) ===
[Prop:R] StreamTotal As Long    ' Returns the total number of bytes of the currently received file. Only valid in prefix mode.
[Prop:R] StreamReceived As Long    ' Returns the number of bytes of the currently received file. Only valid in prefix mode.
[Prop:R] OutputQueueSize As Int    ' Returns the number of messages waiting in the output queue.
[Met]    Write(Buffer As Byte()) As Boolean    ' Adds the given bytes array to the output stream queue.
If the object was initialized with InitializePrefix then the array length will be added before the array.
Returns False if the queue is full and it is not possible to queue the data.
[Met]    InitializePrefix(In As InputStream, BigEndian As Boolean, Out As OutputStream, EventName As String)    ' Initializes the object and sets it in "prefix" mode. In this mode incoming data should adhere to the following protocol:
Every message begins with the message length as an Int value (4 bytes). This length should not include the additional 4 bytes.
The NewData event will be raised only with full messages (not including the 4 bytes length value).
The prefix Int value will be added to the output messages automatically.
This makes it easier as you do not need to deal with broken messages.
In - The InputStream that will be read. Pass Null if you only want to write with this object.
BigEndian - Whether the length value is encoded in BigEndian or LittleEndian. 
Out - The OutputStream that is used for writing the data. Pass Null if you only want to read with this object.
EventName - Determines the Subs that handle the NewData and Error events.
[Met]    SendAllAndClose() As Boolean    ' Sends a message to the internal queue. AsyncStreams will be closed when the message is processed.
The Terminated event will be raised.
Returns False if the queue is full or the connection is not open.
[Met]    WriteStream(In As InputStream, Size As Long) As Boolean    ' Writes the given stream. This method is only supported in prefix mode.
The checksum will be calculated and sent to the other size. The NewStream event will be raised, in the receiving side, after the stream was received successfully.
This method is more efficient than sending the same data in chunks. It can handle streams of any size.
In - InputStream that will be read. Note that the InputStream will be closed after the stream is sent.
Size - Number of bytes to read from the stream.
[Met]    Close()    ' Closes the associated streams.
[Met]    IsInitialized() As Boolean    ' Tests whether this object has been initialized.
[Met]    Initialize(In As InputStream, Out As OutputStream, EventName As String)    ' Initializes the object. Unlike in prefix mode, the NewData event will be raised with new data as soon as it is available.
In - The InputStream that will be read. Pass Null if you only want to write with this object.
Out - The OutputStream that is used for writing the data. Pass Null if you only want to read with this object.
EventName - Determines the Subs that handle the NewData and Error events.
[Met]    Write2(Buffer As Byte(), Start As Int, Length As Int) As Boolean    ' Adds the given bytes array to the output stream queue.
If the object was initialized with InitializePrefix then the array length will be added before the array.
Returns False if the queue is full and it is not possible to queue the data.
[Event]  NewData (Buffer() As Byte).Trim()
[Event]  Error.Trim()
[Event]  Terminated.Trim()
[Event]  NewStream (Dir As String, FileName As String).Trim()

' ######################################################################
' LIBRERÃA: Reflection (v2.4)
' ######################################################################

' === CLASE: Reflector (anywheresoftware.b4a.agraham.reflection.Reflection) ===
[Prop:R] IsNull As Boolean    ' Returns True if the prsent value of Target is Null.
[Prop:R] TypeName As String    ' Returns the name of the class of the current object.
[Prop:R] Version As Double    ' Returns the version number of the library.
[Met]    GetArray(indeces As Int()) As Object    ' Returns the Object at the position(s) in an array specified by the contents of indeces.
indeces must be an integer array of the same rank as the Target array or an error will occur.
[Met]    SetStaticField(classname As String, field As String, value As String, type As String)    ' Sets the specified static field of the specified class to the value provided.
Protected and private fields may be accessed if allowed by any security manager
which may be present.
Static fields may also be accessed with SetField and an instance of the class.
[Met]    RunMethod3(method As String, arg1 As String, type1 As String, arg2 As String, type2 As String) As Object    ' Runs the specified method on the current object passing it the arguments provided.
Protected and private methods may be accessed if allowed by any security manager
which may be present.
[Met]    RunMethod2(method As String, arg1 As String, type1 As String) As Object    ' Runs the specified method on the current target passing it the argument provided.
Protected and private methods may be accessed if allowed by any security manager
which may be present.
[Met]    SetOnFocusListener(sub As String)    ' Target must be a View of some sort.
Sets the onFocusChangeListener of the view to a Sub that must have a signature of
Sub Whatever(viewtag As Object, focus As Boolean).

You should make sure not to call DoEvents, Msgbox or any modal Dialog inside this
event as it will fail in Android 4.0.3 and above. 

It may also fail if Debug is paused in the event in Android 4.0.3 and above.
[Met]    SetField4(fieldinfo As Field, value As Object)    ' Sets the specified field of the current target to the value provided.
Target must be an instance of a Class, not a Class object.
[Met]    RunMethod4(method As String, args As Object(), types As String()) As Object    ' Runs the specified method on the current target passing it the arguments provided.
Protected and private methods may be accessed if allowed by any security manager
which may be present.

The String array of type names is needed in order to find the correct method because
primitives passed in the Args array are boxed and so RunMethod cannot tell whether to
look for a target method that accepts a primitive parameter type or a boxed primitive
object type.
[Met]    GetActivity() As Activity    ' Returns the current activity if any.
To avoid memory leaks this should not be used by a Reflector that is a Process object.
To use this requires a knowledge of the structure of a Basic4android application.
[Met]    GetStaticField(classname As String, field As String) As Object    ' Returns the value of the specified static field of the specified class.
Protected and private fields may be accessed if allowed by any security manager
which may be present.
Static fields may also be accessed with GetField and an instance of the class.
[Met]    SetArray2(indeces As Int(), value As Object)    ' Set the position(s) in an array specified by the contents of indeces to the specified value.
indeces must be an integer array of the same rank as the Target array or an error will occur.
[Met]    SetField2(field As String, value As Object)    ' Sets the specified field of the current target to the value provided. Protected and
private fields may be accessed if allowed by any security manager which may be present.
Target must be an instance of a Class, not a Class object.
[Met]    SetField3(fieldinfo As Field, value As String, type As String)    ' Sets the specified field of the current target to the value provided.
Target must be an instance of a Class, not a Class object.
[Met]    SetOnTouchListener(sub As String)    ' Target must be a View of some sort.
Sets the onTouchListener of the view to a Sub that must have a signature of
Sub Whatever (viewtag As Object, action As Int, X As Float, Y As Float, motionevent As Object) As Boolean.

This Sub must return True if it wants to consume the event or False otherwise.

You should make sure not to call DoEvents, Msgbox or any modal Dialog inside this
event as it will fail in Android 4.0.3 and above. If you want to do so, put the code in another sub
and call this sub with CallSubDelayed.

It may also fail if Debug is paused in the event in Android 4.0.3 and above.
[Met]    SetPublicField(field As String, value As String, type As String)    ' Sets the specified field of the current target to the value provided.
This is more efficient than SetField but can only access public fields.
Target must be an instance of a Class, not a Class object.
[Met]    CreateObject(type As String) As Object    ' Creates and returns a new object of the specified type using the default constructor.
[Met]    InvokeMethod(instance As Object, method As Method, args As Object()) As Object    ' Invoke the provided Method on the provided object instance and return the result.
[Met]    GetField(field As String) As Object    ' Returns the value of the field of the current target. Protected and private fields
may be accessed if allowed by any security manager which may be present.
Target must be an instance of a Class, not a Class object.
[Met]    SetStaticField2(classname As String, field As String, value As Object)    ' Sets the specified static field of the specified class to the value provided.
Protected and private fields may be accessed if allowed by any security manager
which may be present.
Static fields may also be accessed with SetField and an instance of the class.
[Met]    GetB4AClass(component As String) As Class    ' Returns the Java Class for the specified B4A Activity, Service or Code module.
To use this requires a knowledge of the structure of a Basic4android application.
[Met]    GetMethod(method As String, types As String()) As Method    ' Finding a method from its string representation is expensive so this method can be used
to get the Method information object and save it for multiple invocations of the same method.
 
The String array of type names is needed in order to find the correct variant of the method.
[Met]    ToString() As String    ' Returns the result of running the "toString()" method of the current object.
[Met]    TargetRank() As Int()    ' Returns an int array whose length is the number of dimensions of the array and whose contents
are the length of the first element of each array dimension.
A zero length integer array is returned if Target is not an array.
[Met]    SetPublicField2(field As String, value As Object)    ' Sets the specified field of the current target to the value provided.
This is more efficient than SetField but can only access public fields.
Target must be an instance of a Class, not a Class object.
[Met]    RunMethod(method As String) As Object    ' Runs the specified method on the current target. Protected and private methods
may be accessed if allowed by any security manager which may be present.
[Met]    GetField2(fieldinfo As Field) As Object    ' Returns the value of the field of the current target.
Target must be an instance of a Class, not a Class object.
[Met]    GetProcessBA(component As String) As BA    ' Returns the processBA instance for the specified B4A Activity or Service module.
To use this requires a knowledge of the structure of a Basic4android application.
[Met]    GetContext() As Context    ' Returns the Context of the Process to which the Reflection object belongs.
This is the Application object returned from Activity.getApplicationContext().
[Met]    RunStaticMethod(classname As String, method As String, args As Object(), types As String()) As Object    ' Runs the specified static method of the specified class passing it the arguments provided.
Protected and private methods may be accessed if allowed by any security manager
which may be present.

The String array of type names is needed in order to find the correct method because
primitives passed in the Args array are boxed and so RunMethod cannot tell whether to
look for a target method that accepts a primitive parameter type or a boxed primitive
object type. For methods that take no parameters Null may passed for args and types.
[Met]    GetActivityBA() As BA    ' Returns the Activity BA of the current activity.
To avoid memory leaks this should not be used by a Reflector that is a Process object.
To use this requires a knowledge of the structure of a Basic4android application.
[Met]    SetOnKeyListener(sub As String)    ' Target must be a View of some sort.
Sets the onKeyListener of the view to a Sub that must have a signature of
Sub Whatever(viewtag As Object, keycode As Int, keyevent As Object) As Boolean.

This Sub must return True if it wants to consume the event or False otherwise.
[Met]    RunPublicmethod(Method As String, Args As Object(), types As String()) As Object    ' Runs the specified method on the current target passing it the arguments provided.
This is more efficient that RunMethd4 but the method must be public.

The String array of type names is needed in order to find the correct method because
primitives passed in the Args array are boxed and so RunMethod cannot tell whether to
look for a target method that accepts a primitive parameter type or a boxed primitive
object type.
[Met]    GetMostCurrent(component As String) As Object    ' Returns the current instance for the specified B4A Activity or Service module.
This might return null if the Activity or Service is not instantiated.
Note that Code modules do not have a current instance.
To use this requires a knowledge of the structure of a Basic4android application.
[Met]    SetOnLongClickListener(sub As String)    ' Target must be a View of some sort.
In most cases Basic4Android will have already exposed this as a LongClick event.
Sets the OnLongClickListener of the view to a Sub that must have a signature of
Sub Whatever(viewtag As Object) As Boolean.

This Sub must return True if it wants to consume the event or False otherwise.
[Met]    SetOnCreateContextMenuListener(sub As String)    ' Target must be a View of some sort.
This is included for completeness of all the Listeners that class View supports.
Sets the OnCreateContextMenuListener of the view to a Sub that must have a signature of
Sub Whatever(viewtag As Object, menu As Object, menuinfo As Object)
[Met]    GetProxy(interfacenames As String(), b4asubname As String) As Proxy    ' In Java you can generate an interface at runtime and have it run a pre-compiled method.
Many events in Android are handled by an interface that typically has an "onXxxxx" method
that is called with some parameters relevant to the event. The interface is typically
set on an object using that objects "setOnXxxxxListener" method.

This GetProxy method dynamically creates a proxy instance that implements one or more
specified interfaces and which contains the code to call a specified Basic4android Sub
when any of the interface methods are called.

Typically this instance will implement one or more listeners and will then be assigned
to an object instance using RunMethod4 and its setOnXxxxxListener method.

When a method of one of the specified interfaces is called the proxy will call the specified
Basic4android Sub passing the method name as a string and any arguments in an object array.

Note that interfaces declared as internal to a class will need a "$" instead of a "." as their
final separator and all interfaces need to be fully qualified.
e.g android.view.View$OnTouchListener

The Basic4android Sub called must have the signature
Sub WhateverName(method As String, anyargs() As Object) As Object
[Met]    SetArray(indeces As Int(), value As String, type As String)    ' Set the position(s) in an array specified by the contents of indeces to the spcified value.
indeces must be an integer array of the same rank as the Target array or an error will occur.
[Met]    SetOnClickListener(sub As String)    ' Target must be a View of some sort.
In most cases Basic4Android will have already exposed this as a Click event.
Sets the OnClickListener of the view to a Sub that must have a signature of
Sub Whatever(viewtag As Object).
[Met]    GetPublicField(field As String) As Object    ' Returns the value of the public field of the current target.
This is more efficient than GetField but can only access public fields.
Target must be an instance of a Class, not a Class object.
[Met]    SetField(field As String, value As String, type As String)    ' Sets the specified field of the current target to the value provided. Protected and
private fields may be accessed if allowed by any security manager which may be present.
Target must be an instance of a Class, not a Class object.
[Met]    GetFieldInfo(field As String) As Field    ' Finding a field from its string representation is expensive so this method can be used
to get the Field information object and save it for multiple accesses of the same field.
Protected and private fields may be accessed if allowed by any security manager which may be present.
[Met]    CreateObject2(type As String, args As Object(), types As String()) As Object    ' Creates and returns new object of the specified type using the constructor that matches
the array of type names given and passing it the arguments provided.

The array of type names is needed in order to find the correct constructor because
primitives passed in the Args array are boxed and so CreateNew cannot tell whether
to look for a target constructor that accepts a primitive parameter type or a boxed
primitive object type.
[Event]  Click(ViewTag As Object).Trim()
[Event]  LongClick(ViewTag As Object) As Boolean.Trim()
[Event]  Focus(ViewTag As Object, Focus As Boolean).Trim()
[Event]  Key(ViewTag As Object, KeyCode As Int, KeyEvent As Object) As Boolean.Trim()
[Event]  Touch(ViewTag As Object, Action As Int, X As Float, Y As Float, MotionEvent As Object) As Boolean.Trim()

' ######################################################################
' LIBRERÃA: RuntimePermissions (v1.12)
' ######################################################################

' === CLASE: RuntimePermissions (anywheresoftware.b4a.objects.RuntimePermissions) ===
[Met]    GetSafeDirDefaultExternal(SubFolder As String) As String    ' Returns the path to the app's default folder on the secondary storage device.
The path to File.DirInternal will be returned if there is no secondary storage available.
It is a better alternative to File.DirDefaultExternal. On Android 4.4+ no permission is required to access this folder.
You should add this code to the manifest editor to add the permission on older versions of Android:
<code>AddManifestText(<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
)</code>
SubFolder - A sub folder that will be created for your app. Pass an empty string if not needed.
[Met]    GetAllSafeDirsExternal(SubFolder As String) As String()    ' Returns an array with all the external folders available to your app. 
The first element will be the same as the value returned from GetSafeDirDefaultExternal.
On Android 4.4+ no permission is required to access these folders.
On older versions only one folder will be returned. You should add the permission as explained in GetSafeDirDefaultExternal documentation.
SubFolder - A sub folder that will be created for your app. Pass an empty string if not needed.
[Met]    Check(Permission As String) As Boolean    ' Checks whether the application has been granted the specified permission.
This method can be called from a Service.
[Met]    CheckAndRequest(Permission As String)    ' Checks whether the application has been granted the specified permission. If not then the user will be shown a dialog asking for permission.
The Activity_PermissionResult will be raised with the result (in all cases).
This method can only be called from an Activity.

' ######################################################################
' LIBRERÃA: Serial (v1.31)
' ######################################################################

' === CLASE: Serial (anywheresoftware.b4a.objects.Serial) ===
[Prop:R] Address As String    ' Returns the current device MAC address.
[Prop:R] InputStream As InputStream    ' Returns the InputStream that is used to read data from the other device.
Should be called after a connection is established.
[Prop:R] OutputStream As OutputStream    ' Returns the OutputStream that is used to write data to the other device.
Should be called after a connection is established.
[Prop:R] Name As String    ' Returns the current device friendly name.
[Met]    GetPairedDevices() As Map    ' Returns a map with the paired devices friendly names as keys and addresses as values.
The following code shows a list of available devices and allows the user to connect to one:<code>
Dim PairedDevices As Map
PairedDevices = Serial1.GetPairedDevices
Dim l As List
l.Initialize
For i = 0 To PairedDevices.Size - 1
	l.Add(PairedDevices.GetKeyAt(i))
Next
Dim res As Int
res = InputList(l, "Choose device", -1) 'show list with paired devices
If res <> DialogResponse.CANCEL Then
	Serial1.Connect(PairedDevices.Get(l.Get(res))) 'convert the name to mac address and connect
End If</code>
[Met]    ListenInsecure(Admin As BluetoothAdmin, Port As Int)    ' Starts listening for incoming unencrypted connections.
Admin - An object of type BluetoothAdmin.
Port - The RFCOMM channel.
[Met]    IsEnabled() As Boolean    ' Tests whether the Bluetooth is enabled.
[Met]    Connect(MacAddress As String)    ' Tries to connect to a device with the given address. The connection is done in the background.
The Connected event will be raised when the connection is ready (or fails).
The UUID used for the connection is the default UUID: 00001101-0000-1000-8000-00805F9B34FB.
[Met]    StopListening()    ' Stops listening for incoming connections.
This will not disconnect any active connection.
[Met]    Listen()    ' Starts listening for incoming connections using the default UUID.
The Connected event will be raised when the connection is established.
Nothing happens if the device already listens for connections.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initialized the object. You may want to call IsEnabled before trying to work with the object.
[Met]    Disconnect()    ' Disconnects the connection (if such exists) and stops listening for new connections.
[Met]    Listen2(Name As String, UUID As String)    ' Starts listening for incoming connections.
The Connected event will be raised when the connection is established.
Nothing happens if the device already listens for connections.
Name - An arbitrary string that will be used for internal registration.
UUID - The UUID defined for this record.
[Met]    Connect3(MacAddress As String, Port As Int)    ' This method is a workaround for hardware devices that do not connect with Connect or Connect2.
See this <link>issue|http://code.google.com/p/android/issues/detail?id=5427</link> for more information.
[Met]    ConnectInsecure(Admin As BluetoothAdmin, MacAddress As String, Port As Int)    ' Tries to connect to a device over an unencrypted connection.
Admin - Object of type BluetoothAdmin.
MacAddress - The address of the remote device.
Port - RCOMM channel.
[Met]    Connect2(MacAddress As String, UUID As String)    ' Tries to connect to a device with the given address and UUID. The connection is done in the background.
The Connected event will be raised when the connection is ready (or fails).
[Event]  Connected (Success As Boolean).Trim()

' === CLASE: BluetoothAdmin (anywheresoftware.b4a.objects.Serial.BluetoothAdmin) ===
[Prop:R] LastFoundIntent As Intent    ' Can be used inside the DeviceFound event to extract more data from the intent received. Returns an uninitialized object if no intent was received.
[Met]    StartDiscovery() As Boolean    ' Starts a discovery process. You should handle DiscoveryStarted, DiscoveryFinished and DeviceFound events to get more information about the process.
Returns False if the operation has failed.
[Met]    CancelDiscovery() As Boolean    ' Cancels a discovery process.
Returns False if the operation has failed.
[Met]    IsEnabled() As Boolean    ' Tests whether the Bluetooth adapter is enabled.
[Met]    Enable() As Boolean    ' Turns on the Bluetooth adapter. The adapter will not be immediately ready. You should use the StateChanged event to find when it is enabled.
This method returns False if the adapter cannot be enabled.
[Met]    IsInitialized() As Boolean    ' Tests whether the object is initialized.
[Met]    Initialize(EventName As String)    ' Initializes the object and sets the subs that will handle the events.
[Met]    Disable() As Boolean    ' Turns off the Bluetooth adapter. The adapter will not be immediately disabled. You should use the StateChanged event to monitor the adapter.
This method returns False if the adapter cannot be disabled.
[Event]  StateChanged (NewState As Int, OldState As Int).Trim()
[Event]  DiscoveryStarted.Trim()
[Event]  DiscoveryFinished.Trim()
[Event]  DeviceFound (Name As String, MacAddress As String).Trim()

' ######################################################################
' LIBRERÃA: Sip (v1.0)
' ######################################################################

' === CLASE: Sip (anywheresoftware.b4a.objects.SIP) ===
[Prop:W] Port As Int    ' Sets the connection port.
[Prop:W] ProfileName As String    ' Sets the user defined profile name.
[Prop:W] OutboundProxy As String    ' Sets the outbound proxy address.
[Prop:W] SendKeepAlive As Boolean    ' Sets whether keep-alive messages will be sent automatically.
[Prop:R] IsVoipSupported As Boolean    ' Tests whether Voip is supported on this device.
[Prop:W] AutoRegistration As Boolean    ' Sets whether the Sip manager will register automatically if needed.
[Prop:R] IsSipSupported As Boolean    ' Tests whether Sip API is supported on the device.
[Prop:W] DisplayName As String    ' Sets the user display name.
[Prop:W] Protocol As String    ' Sets the protocol. Either "TCP" or "UDP".
[Prop:R] IsInitialized As Boolean    ' Tests whether the object was initialized.
[Met]    Initialize(EventName As String, User As String, Host As String, Password As String)    ' Initializes the object.
EventName - Sets the subs that will handle the events.
User - User name.
Host - Host name or IP address.
Password - Account password.
[Met]    MakeCall(TargetUri As String, TimeoutSeconds As Int) As SipAudioCall    ' Makes an audio call. This method should only be called after registering.
TargetUri - The target Uri.
TimeoutSeconds - The timeout measured in seconds.
[Met]    Close()    ' Closes the connection.
[Met]    Register()    ' Sends a registration request to the server.
The following events will be raised: Registering and RegistrationDone or RegistrationFail.
[Met]    Initialize2(EventName As String, Uri As String, Password As String)    ' Initializes the object.
EventName - Sets the subs that will handle the events.
Uri - The profile Uri. For example: sip:zzz@iptel.org
Password - Account password.
[Event]  Registering.Trim()
[Event]  RegistrationDone (ExpiryTime As Long).Trim()
[Event]  RegistrationFailed (ErrorCode As Int, ErrorMessage As String).Trim()
[Event]  CallEstablished.Trim()
[Event]  CallEnded.Trim()
[Event]  Calling.Trim()
[Event]  CallError (ErrorCode As Int, ErrorMessage As String).Trim()
[Event]  CallRinging (IncomingCall As SipAudioCall).Trim()

' === CLASE: SipAudioCall (anywheresoftware.b4a.objects.SIP.SipAudioCallWrapper) ===
[Prop:R] IsInCall As Boolean    ' Tests whether the call was established.
[Prop:R] IsMuted As Boolean    ' Tests whether the microphone is muted.
[Prop:R] PeerUri As String    ' Gets the peer Uri.
[Prop:W] SpeakerMode As Boolean    ' Sets the speaker mode.
[Met]    AnswerCall(TimeoutSeconds As Int)    ' Answers an incoming call.
TimeoutSeconds - Allowed time for the call to be established.
[Met]    StartAudio()    ' Starts the audio for the call. Should be called in CallEstablished event.
[Met]    ToggleMute()    ' Toggles the microphone mute.
[Met]    SendDtmf(Code As Int)    ' Sends a Dtmf tone. Values can be 0-15, where 0-9 are the digits, 10 is '*', 11 is '# and 12-15 are 'A'-'D'.
[Met]    EndCall()    ' Ends the current call.
[Met]    IsInitialized() As Boolean 

' ######################################################################
' LIBRERÃA: SQL (v1.5)
' ######################################################################

' === CLASE: SQL (anywheresoftware.b4a.sql.SQL) ===
[Met]    EndTransaction()    ' Ends the transaction.
[Met]    ExecQuery2(Query As String, StringArgs As String()) As Cursor    ' Executes the query and returns a cursor which is used to go over the results.
The query can include question marks which will be replaced with the values in the array.
Example:<code>
Dim Cursor As Cursor
Cursor = sql1.ExecQuery2("SELECT col1 FROM table1 WHERE col3 = ?", Array As String(22))</code>
SQLite will try to convert the string values based on the columns types.
[Met]    ExecQuery(Query As String) As Cursor    ' Executes the query and returns a cursor which is used to go over the results.
Example:<code>
Dim Cursor As Cursor
Cursor = SQL1.ExecQuery("SELECT col1, col2 FROM table1")
For i = 0 To Cursor.RowCount - 1
	Cursor.Position = i
	Log(Cursor.GetString("col1"))
	Log(Cursor.GetInt("col2"))
Next</code>
[Met]    ExecQuerySingleResult2(Query As String, StringArgs As String()) As String    ' Executes the query and returns the value in the first column and the first row (in the result set).
Returns Null if no results were found.
Example:<code>
Dim NumberOfMatches As Int
NumberOfMatches = SQL1.ExecQuerySingleResult2("SELECT count(*) FROM table1 WHERE col2 > ?", Array As String(300))</code>
[Met]    IsInitialized() As Boolean    ' Tests whether the database is initialized and opened.
[Met]    Initialize(Dir As String, FileName As String, CreateIfNecessary As Boolean)    ' Opens the database file. A new database will be created if it does not exist and CreateIfNecessary is true.
IMPORTANT: this object should be declared in Sub Process_Globals.
Example:<code>
Dim SQL1 As SQL
SQL1.Initialize(File.DirInternal, "MyDb.db", True)</code>
[Met]    ExecNonQueryBatch(EventName As String) As Object    ' Asynchronously executes a batch of non-query statements (such as INSERT).
The NonQueryComplete event is raised after the statements are completed.
You should call AddNonQueryToBatch one or more times before calling this method to add statements to the batch.
Note that this method internally begins and ends a transaction.
Returns an object that can be used as the sender filter for Wait For calls.
Example:<code>
For i = 1 To 1000
	sql.AddNonQueryToBatch("INSERT INTO table1 VALUES (?)", Array(Rnd(0, 100000)))
Next
Dim SenderFilter As Object = sql.ExecNonQueryBatch("SQL")
Wait For (SenderFilter) SQL_NonQueryComplete (Success As Boolean)
Log("NonQuery: " & Success)</code>
[Met]    BeginTransaction()    ' Begins a transaction. A transaction is a set of multiple "writing" statements that are atomically committed,
hence all changes will be made or no changes will be made.
As a side effect those statements will be executed significantly faster (in the default case a transaction is implicitly created for
each statement).
It is very important to handle transaction carefully and close them.
The transaction is considered successful only if TransactionSuccessful is called. Otherwise no changes will be made.
Typical usage:<code>
SQL1.BeginTransaction
Try
	'block of statements like:
	For i = 1 to 1000
		SQL1.ExecNonQuery("INSERT INTO table1 VALUES(...)
	Next
	SQL1.TransactionSuccessful
Catch
	Log(LastException.Message) 'no changes will be made
End Try
SQL1.EndTransaction</code>
[Met]    AddNonQueryToBatch(Statement As String, Args As List)    ' Adds a non-query statement to the batch of statements.
The statements are (asynchronously) executed when you call ExecNonQueryBatch.
Args parameter can be Null if it is not needed.
Example:<code>
For i = 1 To 1000
	sql.AddNonQueryToBatch("INSERT INTO table1 VALUES (?)", Array(Rnd(0, 100000)))
Next
Dim SenderFilter As Object = sql.ExecNonQueryBatch("SQL")
Wait For (SenderFilter) SQL_NonQueryComplete (Success As Boolean)
Log("NonQuery: " & Success)</code>
[Met]    ExecQuerySingleResult(Query As String) As String    ' Executes the query and returns the value in the first column and the first row (in the result set).
Returns Null if no results were found.
Example:<code>
Dim NumberOfMatches As Int
NumberOfMatches = SQL1.ExecQuerySingleResult("SELECT count(*) FROM table1 WHERE col2 > 300")</code>
[Met]    TransactionSuccessful()    ' Marks the transaction as a successful transaction. No further statements should be executed till calling EndTransaction.
[Met]    ExecNonQuery(Statement As String)    ' Executes a single non query SQL statement.
Example:<code>
SQL1.ExecNonQuery("CREATE TABLE table1 (col1 TEXT , col2 INTEGER, col3 INTEGER)")</code>
If you plan to do many "writing" queries one after another, then you should consider using BeginTransaction / EndTransaction.
It will execute significantly faster.
[Met]    Close()    ' Closes the database.
Does not do anything if the database is not opened or was closed before.
[Met]    ExecQueryAsync(EventName As String, Query As String, Args As List) As Object    ' Asynchronously executes the given query. The QueryComplete event will be raised when the results are ready.
Note that ResultSet extends Cursor. You can use Cursor if preferred.
Returns an object that can be used as the sender filter for Wait For calls.
Example:<code>
Dim SenderFilter As Object = sql.ExecQueryAsync("SQL", "SELECT * FROM table1", Null)
Wait For (SenderFilter) SQL_QueryComplete (Success As Boolean, rs As ResultSet)
If Success Then
	Do While rs.NextRow
		Log(rs.GetInt2(0))
	Loop
	rs.Close
Else
	Log(LastException)
End If</code>
[Met]    ExecNonQuery2(Statement As String, Args As List)    ' Executes a single non query SQL statement.
The statement can include question marks which will be replaced by the items in the given list.
Note that Basic4android converts arrays to lists implicitly.
The values in the list should be strings, numbers or bytes arrays.
Example:<code>
SQL1.ExecNonQuery2("INSERT INTO table1 VALUES (?, ?, 0)", Array As Object("some text", 2))</code>
[Event]  QueryComplete (Success As Boolean, Result As ResultSet).Trim()
[Event]  NonQueryComplete (Success As Boolean).Trim()

' === CLASE: Cursor (anywheresoftware.b4a.sql.SQL.CursorWrapper) ===
[Prop:R] ColumnCount As Int    ' Gets the number of columns available in the result set.
[Prop:RW] Position As Int    ' Gets or sets the current position (row).
Note that the starting position of a cursor returned from a query is -1.
The first valid position is 0.
Example:<code>
Dim Cursor As Cursor
Cursor = SQL1.ExecQuery("SELECT col1, col2 FROM table1")
For i = 0 To Cursor.RowCount - 1
	Cursor.Position = i
	Log(Cursor.GetString("col1"))
	Log(Cursor.GetInt("col2"))
Next
Cursor.Close</code>
[Prop:R] RowCount As Int    ' Gets the numbers of rows available in the result set.
[Met]    GetInt2(Index As Int) As Int    ' Returns the Int value stored in the column at the given ordinal.
The value will be converted to Int if it is of different type.
Example:<code>
Log(Cursor.GetInt2(0))</code>
[Met]    GetBlob(ColumnName As String) As Byte()    ' Returns the blob stored in the given column.
Example:<code>
Dim Buffer() As Byte
Buffer = Cursor.GetBlob("col1")</code>
[Met]    GetDouble(ColumnName As String) As Double    ' Returns the Double value stored in the given column.
The value will be converted to Double if it is of different type.
Example:<code>
Log(Cursor.GetDouble("col2"))</code>
[Met]    GetLong(ColumnName As String) As Long    ' Returns the Long value stored in the given column.
The value will be converted to Long if it is of different type.
Example:<code>
Log(Cursor.GetLong("col2"))</code>
[Met]    GetColumnName(Index As Int) As String    ' Returns the name of the column at the specified index.
The first column index is 0.
[Met]    IsInitialized() As Boolean 
[Met]    GetBlob2(Index As Int) As Byte()    ' Returns the blob stored in the column at the given ordinal.
Example:<code>
Dim Buffer() As Byte
Buffer = Cursor.GetBlob2(0)</code>
[Met]    GetInt(ColumnName As String) As Int    ' Returns the Int value stored in the given column.
The value will be converted to Int if it is of different type.
Example:<code>
Log(Cursor.GetInt("col2"))</code>
[Met]    GetString(ColumnName As String) As String    ' Returns the String value stored in the given column.
The value will be converted to String if it is of different type.
Example:<code>
Log(Cursor.GetString("col2"))</code>
[Met]    Close()    ' Closes the cursor and frees resources.
[Met]    GetDouble2(Index As Int) As Double    ' Returns the Double value stored in the column at the given ordinal.
The value will be converted to Double if it is of different type.
Example:<code>
Log(Cursor.GetDouble2(0))</code>
[Met]    GetString2(Index As Int) As String    ' Returns the String value stored in the column at the given ordinal.
The value will be converted to String if it is of different type.
Example:<code>
Log(Cursor.GetString2(0))</code>
[Met]    GetLong2(Index As Int) As Long    ' Returns the Long value stored in the column at the given ordinal.
The value will be converted to Long if it is of different type.
Example:<code>
Log(Cursor.GetLong2(0))</code>

' === CLASE: ResultSet (anywheresoftware.b4a.sql.SQL.ResultSetWrapper) ===
[Prop:R] ColumnCount As Int    ' Gets the number of columns available in the result set.
[Prop:RW] Position As Int    ' Gets or sets the current position (row).
Note that the starting position of a cursor returned from a query is -1.
The first valid position is 0.
Example:<code>
Dim Cursor As Cursor
Cursor = SQL1.ExecQuery("SELECT col1, col2 FROM table1")
For i = 0 To Cursor.RowCount - 1
	Cursor.Position = i
	Log(Cursor.GetString("col1"))
	Log(Cursor.GetInt("col2"))
Next
Cursor.Close</code>
[Prop:R] RowCount As Int    ' Gets the numbers of rows available in the result set.
[Met]    GetInt2(Index As Int) As Int    ' Returns the Int value stored in the column at the given ordinal.
The value will be converted to Int if it is of different type.
Example:<code>
Log(Cursor.GetInt2(0))</code>
[Met]    GetBlob(ColumnName As String) As Byte()    ' Returns the blob stored in the given column.
Example:<code>
Dim Buffer() As Byte
Buffer = Cursor.GetBlob("col1")</code>
[Met]    GetDouble(ColumnName As String) As Double    ' Returns the Double value stored in the given column.
The value will be converted to Double if it is of different type.
Example:<code>
Log(Cursor.GetDouble("col2"))</code>
[Met]    GetLong(ColumnName As String) As Long    ' Returns the Long value stored in the given column.
The value will be converted to Long if it is of different type.
Example:<code>
Log(Cursor.GetLong("col2"))</code>
[Met]    GetColumnName(Index As Int) As String    ' Returns the name of the column at the specified index.
The first column index is 0.
[Met]    IsInitialized() As Boolean 
[Met]    GetBlob2(Index As Int) As Byte()    ' Returns the blob stored in the column at the given ordinal.
Example:<code>
Dim Buffer() As Byte
Buffer = Cursor.GetBlob2(0)</code>
[Met]    GetInt(ColumnName As String) As Int    ' Returns the Int value stored in the given column.
The value will be converted to Int if it is of different type.
Example:<code>
Log(Cursor.GetInt("col2"))</code>
[Met]    NextRow() As Boolean    ' Moves the cursor to the next result. Returns false when the cursor reaches the end.
Example:<code>
Do While ResultSet1.NextRow
 'Work with Row
Loop</code>
[Met]    GetString(ColumnName As String) As String    ' Returns the String value stored in the given column.
The value will be converted to String if it is of different type.
Example:<code>
Log(Cursor.GetString("col2"))</code>
[Met]    Close()    ' Closes the cursor and frees resources.
[Met]    GetDouble2(Index As Int) As Double    ' Returns the Double value stored in the column at the given ordinal.
The value will be converted to Double if it is of different type.
Example:<code>
Log(Cursor.GetDouble2(0))</code>
[Met]    GetString2(Index As Int) As String    ' Returns the String value stored in the column at the given ordinal.
The value will be converted to String if it is of different type.
Example:<code>
Log(Cursor.GetString2(0))</code>
[Met]    GetLong2(Index As Int) As Long    ' Returns the Long value stored in the column at the given ordinal.
The value will be converted to Long if it is of different type.
Example:<code>
Log(Cursor.GetLong2(0))</code>

' ######################################################################
' LIBRERÃA: StringUtils (v1.12)
' ######################################################################

' === CLASE: StringUtils (anywheresoftware.b4a.objects.StringUtils) ===
[Met]    DecodeBase64(Data As String) As Byte()    ' Decodes data from Base64 notation.
[Met]    EncodeBase64(Data As Byte()) As String    ' Encodes the given bytes array into Base64 notation.
Example:<code>
Dim su As StringUtils
Dim encoded As String
encoded = su.EncodeBase64(data) 'data is a bytes array</code>
[Met]    SaveCSV(Dir As String, FileName As String, SeparatorChar As Char, Table As List)    ' Saves the table as a CSV file.
Dir - Output file folder.
FileName - Output file name.
SeparatorChar - Separator character. The character that separates fields.
Table - A List with arrays of strings as items. Each array represents a row. All arrays should be of the same length.
Example:<code>
Dim su As StringUtils
su.SaveCSV(File.DirRootExternal, "1.csv", ",", table)</code>
[Met]    DecodeUrl(Url As String, CharSet As String) As String    ' Decodes an application/x-www-form-urlencoded string.
[Met]    SaveCSV2(Dir As String, FileName As String, SeparatorChar As Char, Table As List, Headers As List)    ' Similar to SaveCSV. Will save the headers list as the first row. This should be a list (or array) of strings.
[Met]    EncodeUrl(Url As String, CharSet As String) As String    ' Encodes a string into application/x-www-form-urlencoded format.
Url - String to encode.
CharSet - The character encoding name.
Example:<code>
Dim su As StringUtils
Dim url, encodedUrl As String
encodedUrl = su.EncodeUrl(url, "UTF8")</code>
[Met]    MeasureMultilineTextHeight(TextView As TextView, Text As CharSequence) As Int    ' Returns the required height in order to show the given text in a label.
This can be used to show dynamic text in a label.
Note that the label must first be added to its parent and only then its height can be set.
Example:<code>
Dim Label1 As Label
Label1.Initialize("")
Label1.Text = "this is a long sentence, and we need to " _ 
	& "know the height required in order To show it completely."
Label1.TextSize = 20
Activity.AddView(Label1, 10dip, 10dip, 200dip, 30dip)
Dim su As StringUtils
Label1.Height = su.MeasureMultilineTextHeight(Label1, Label1.Text)</code>
[Met]    LoadCSV2(Dir As String, FileName As String, SeparatorChar As Char, Headers As List) As List    ' Similar to LoadCSV. Will load the first row to the headers list.
[Met]    LoadCSV(Dir As String, FileName As String, SeparatorChar As Char) As List    ' Loads a CSV file and stores it in a list of string arrays.
Dir - CSV file folder.
FileName - CSV file name.
SeparatorChar - The character used to separate fields.
Example:<code>
Dim su As StringUtils
Dim Table As List
Table = su.LoadCSV(File.DirAssets, "1.csv", ",")</code>

' ######################################################################
' LIBRERÃA: TabStripViewPager (v1.2)
' ######################################################################

' === CLASE: TabStrip (anywheresoftware.b4a.objects.TabStripViewPager) ===
[Prop:R] CurrentPage As Int    ' Gets the current page index.
[Met]    DesignerCreateView(base As Panel, lw As Label, props As Map) 
[Met]    ScrollTo(PagePosition As Int, SmoothScroll As Boolean)    ' Scrolls to the specified page.
[Met]    LoadLayout(LayoutFile As String, TabText As CharSequence) 
[Event]  PageSelected (Position As Int).Trim()

' ######################################################################
' LIBRERÃA: TTS (v1.01)
' ######################################################################

' === CLASE: TTS (anywheresoftware.b4a.obejcts.TTS) ===
[Prop:W] Pitch As Float    ' Sets the pitch value. Default is 1.
Example: <code>TTS1.Pitch = 1.5</code>
[Prop:W] SpeechRate As Float    ' Sets the speech rate. Default is 1.
Example: <code>TTS1.SpeechRate = 0.5</code>
[Met]    Speak(Text As String, ClearQueue As Boolean)    ' Speaks the given text.
ClearQueue - If True then all waiting texts are dismissed and the new text is spoken.
Otherwise the new text is added to the queue.
[Met]    SetLanguage(Language As String, Country As String) As Boolean    ' Sets the spoken language.
Language - Language code. Two lowercase letters.
Country - Country code. Two uppercase letters. Pass an empty string if not needed.
Returns True if a matching language is available. The country value will be ignored if the language code matches and the country code does not match.
[Met]    Stop()    ' Stops speaking any currently playing text (and dismisses texts in the queue).
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String)    ' Initializes the object.
The Ready event will be raised when the text to speech engine is ready.
EventName - The Sub that will handle the Ready event.
[Met]    Release()    ' Releases any resources related to this object. You will need to initialize the object again before use.
Note that it is safe to call this method with an uninitialized object.
[Event]  Ready (Success As Boolean).Trim()

' ######################################################################
' LIBRERÃA: USB (v1.01)
' ######################################################################

' === CLASE: UsbManager (anywheresoftware.b4a.objects.usb.UsbManagerWrapper) ===
[Met]    GetDevices() As UsbDeviceWrapper()    ' Returns an array of UsbDevices with all the connected USB devices.
[Met]    HasPermission(Device As UsbDevice) As Boolean    ' Tests whether your application has permission to access this device.
Call RequestPermission to receive such permission.
[Met]    OpenAccessory(Accessory As UsbAccessory)    ' Connects to the given accessory
[Met]    RequestPermission(Device As UsbDevice)    ' Shows a dialog that asks the user to allow your application to access the USB device.
[Met]    HasAccessoryPermission(Accessory As UsbAccessory) As Boolean    ' Tests whether your application has permission to access this accessory.
Call RequestAccessoryPermission to receive such permission.
[Met]    Initialize()    ' Initializes the object.
[Met]    GetAccessories() As UsbAccessoryWrapper()    ' Returns an array of UsbAccessories with all the connected USB accessories.
[Met]    OpenDevice(Device As UsbDevice, Interface As UsbInterface, ForceClaim As Boolean) As UsbDeviceConnection    ' Connects to the given device and claims exclusive access to the given interface.
ForceClaim - Whether the system should disconnect kernel drivers if necessary.
[Met]    RequestAccessoryPermission(Accessory As UsbAccessory)    ' Shows a dialog that asks the user to allow your application to access the USB accessory.

' === CLASE: UsbDevice (anywheresoftware.b4a.objects.usb.UsbManagerWrapper.UsbDeviceWrapper) ===
[Prop:R] InterfaceCount As Int    ' Gets the number of interfaces.
[Prop:R] DeviceSubclass As Int    ' Gets the device subclass.
[Prop:R] DeviceId As Int    ' Gets the device id.
[Prop:R] DeviceClass As Int    ' Gets the device class.
[Prop:R] VendorId As Int    ' Gets the vendor id.
[Prop:R] ProductId As Int    ' Gets the product id.
[Prop:R] DeviceName As String    ' Gets the device name.
[Met]    IsInitialized() As Boolean 
[Met]    GetInterface(Index As Int) As UsbInterface    ' Gets the interface at the given index.

' === CLASE: UsbInterface (anywheresoftware.b4a.objects.usb.UsbManagerWrapper.UsbInterfaceWrapper) ===
[Prop:R] EndpointCount As Int    ' Gets the number of endpoints available in this interface.
[Prop:R] InterfaceSubclass As Int    ' Gets the interface subclass.
[Prop:R] InterfaceClass As Int    ' Gets the interface class.
[Prop:R] InterfaceProtocol As Int    ' Gets the interface protocol.
[Met]    GetEndpoint(Index As Int) As UsbEndpoint    ' Gets the endpoint at the given index.
[Met]    IsInitialized() As Boolean 

' === CLASE: UsbEndpoint (anywheresoftware.b4a.objects.usb.UsbManagerWrapper.UsbEndpointWrapper) ===
[Prop:R] Type As Int    ' Gets the endpoint type.
[Prop:R] Address As Int    ' Gets the endpoint address.
[Prop:R] Attributes As Int    ' Gets the endpoint attributes.
[Prop:R] EndpointNumber As Int    ' Gets the endpoint number.
[Prop:R] Direction As Int    ' Gets the endpoint direction. Can be UsbManager.USB_DIR_IN or UsbManager.USB_DIR_OUT.
[Prop:R] MaxPacketSize As Int    ' Gets the maximum packet size.
[Prop:R] Interval As Int    ' Gets the interval field.
[Met]    IsInitialized() As Boolean 

' === CLASE: UsbAccessory (anywheresoftware.b4a.objects.usb.UsbManagerWrapper.UsbAccessoryWrapper) ===
[Prop:R] Serial As String    ' Gets the unique serial number for the accessory.
[Prop:R] Description As String    ' Gets the description of the accessory.
[Prop:R] Version As String    ' Gets the version of the accessory.
[Prop:R] InputStream As InputStream    ' Gets the input stream for the accessory.
When reading data from an accessory ensure that the buffer that you use is
big enough to store the USB packet data. The Android accessory protocol supports
packet buffers up to 16384 bytes, so you can choose to always declare your buffer
to be of this size for simplicity.
[Prop:R] OutputStream As OutputStream    ' Gets the output stream for the accessory.
[Prop:R] Manufacturer As String    ' Gets the manufacturer of the accessory.
[Prop:R] Model As String    ' Gets the model name of the accessory.
[Prop:R] Uri As String    ' Gets the URI for the website of the accessory.
[Met]    Close()    ' Closes the accessory.
The accessory input and output streams should be individually closed first.

' === CLASE: UsbDeviceConnection (anywheresoftware.b4a.objects.usb.UsbDeviceConnectionWrapper) ===
[Prop:R] Serial As String    ' Returns the connected device serial number.
[Met]    CloseSynchronous()    ' Closes the connection. StopListening also closes the connection.
This method should only be used when the asynchronous listener was not started.
[Met]    BulkTransfer(Endpoint As UsbEndpoint, Buffer As Byte(), Length As Int, Timeout As Int) As Int    ' Sends a synchronous request.
Endpoint - The endpoint for this transaction. The transfer direction is determined by this endpoint.
Buffer - Buffer for data to send or receive.
Length - The length of the data.
Timeout - Request timeout in milliseconds.
[Met]    StartListening(EventName As String)    ' Starts listening for completed requests. When such are available the NewData event will be raised.
EventName - The name of the sub that will handle the events.
[Met]    StopListening()    ' Stops listening to requests and closes the connection.
[Met]    GetRawDescriptors() As Byte()    ' Returns the raw descriptors as an array of bytes.
<b>This method is only available in Android 3.2 or above.</b>It will return an empty array in Android 3.1.
[Met]    IsInitialized() As Boolean    ' Tests whether the object was initialized.
[Met]    ControlTransfer(RequestType As Int, Request As Int, Value As Int, Index As Int, Buffer As Byte(), Length As Int, Timeout As Int) As Int    ' Performs a control transaction on endpoint zero. Returns the number of bytes transferred.
RequestType - The request type. It should combine USB_DIR_IN or USB_DIR_OUT to set the request direction.
Request - Request Id.
Value - Value field.
Index - Index field.
Buffer - Buffer for data portion. Pass Null if not needed.
Length - The length of the data to send or receive.
Timeout - Timeout in milliseconds.
[Met]    ContinueListening()    ' Notifies the listener to continue listening for completed requests.
[Event]  NewData (Request As UsbRequest, InDirection As Boolean).Trim()

' === CLASE: UsbRequest (anywheresoftware.b4a.objects.usb.UsbDeviceConnectionWrapper.UsbRequestWrapper) ===
[Prop:R] Buffer As Byte()    ' Returns the buffer associated with the request.
[Prop:R] UsbEndpoint As UsbEndpoint 
[Prop:RW] Name As String    ' Gets or sets an arbitrary string that can be used to identify the request.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Connection As UsbDeviceConnection, Endpoint As UsbEndpoint)    ' Initializes the request. The request will be binded to the given connection and endpoint.
Note that for control transactions you should use UsbDeviceConnection.ControlTransfer.
[Met]    Queue(Buffer As Byte(), Length As Int)    ' Queues the request for sending. UsbDeviceConnection_NewData event will be raised when the transaction completes.

' === CLASE: MtpDevice (anywheresoftware.b4a.objects.usb.MtpDeviceWrapper) ===
[Met]    Close() 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(EventName As String, UsbDevice As UsbDevice) 
[Met]    Open(Connection As UsbDeviceConnection) 

' ######################################################################
' LIBRERÃA: ViewsEx (v1.3)
' ######################################################################

' === CLASE: TouchPanelCreator (anywheresoftware.b4a.objects.TouchPanelCreator) ===
[Met]    CreateTouchPanel(EventName As String) As Panel 
[Event]  OnInterceptTouchEvent (Action As Int, X As Float, Y As Float, MotionEvent As Object) As Boolean.Trim()
[Event]  OnTouchEvent (Action As Int, X As Float, Y As Float, MotionEvent As Object) As Boolean.Trim()

' === CLASE: Switch (anywheresoftware.b4a.objects.SwitchWrapper) ===
[Prop:RW] Left As Int 
[Prop:RW] Background As Drawable 
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Checked As Boolean 
[Prop:RW] Top As Int 
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int 
[Met]    DesignerCreateView(base As Panel, lw As Label, props As Map) 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(arg1 As String) 
[Met]    BringToFront() 
[Met]    SetLayout(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(arg0 As Int, arg1 As Boolean) 
[Met]    RemoveView() 
[Met]    Invalidate3(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    Invalidate2(arg0 As Rect) 
[Met]    SetColorAnimated(arg0 As Int, arg1 As Int, arg2 As Int) 
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int) 
[Met]    RequestFocus() As Boolean 
[Event]  CheckedChange(Checked As Boolean).Trim()

' === CLASE: RatingBar (anywheresoftware.b4a.objects.RatingBarWrapper) ===
[Prop:RW] Left As Int 
[Prop:RW] Background As Drawable 
[Prop:R] Parent As Object 
[Prop:RW] Rating As Float    ' Gets or sets the rating.
[Prop:W] Color As Int 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Top As Int 
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int 
[Met]    DesignerCreateView(base As Panel, lw As Label, props As Map) 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(arg1 As String) 
[Met]    BringToFront() 
[Met]    SetLayout(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(arg0 As Int, arg1 As Boolean) 
[Met]    RemoveView() 
[Met]    Invalidate3(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    Invalidate2(arg0 As Rect) 
[Met]    SetColorAnimated(arg0 As Int, arg1 As Int, arg2 As Int) 
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int) 
[Met]    RequestFocus() As Boolean 
[Event]  ValueChanged (Value As Float, UserChanged As Boolean).Trim()

' === CLASE: FloatLabeledEditText (anywheresoftware.b4a.objects.FloatLabeledEditTextWrapper) ===
[Prop:R] EditText As EditText    ' Returns the internal EditText.
[Prop:RW] Left As Int 
[Prop:RW] Background As Drawable 
[Prop:RW] Hint As String    ' Gets or sets the hint text.
[Prop:R] Parent As Object 
[Prop:W] Color As Int 
[Prop:RW] Enabled As Boolean 
[Prop:RW] Text As String    ' Gets or sets the text.
[Prop:RW] Top As Int 
[Prop:RW] Visible As Boolean 
[Prop:RW] Padding As Int() 
[Prop:RW] Height As Int 
[Prop:RW] Tag As Object 
[Prop:RW] Width As Int 
[Met]    DesignerCreateView(base As Panel, lw As Label, props As Map) 
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(arg1 As String) 
[Met]    BringToFront() 
[Met]    SetLayout(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    SendToBack() 
[Met]    SetVisibleAnimated(arg0 As Int, arg1 As Boolean) 
[Met]    RemoveView() 
[Met]    Invalidate3(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int) 
[Met]    Invalidate2(arg0 As Rect) 
[Met]    SetColorAnimated(arg0 As Int, arg1 As Int, arg2 As Int) 
[Met]    SetBackgroundImageNew(arg0 As Bitmap) As BitmapDrawable 
[Met]    Invalidate() 
[Met]    SetLayoutAnimated(arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int) 
[Met]    RequestFocus() As Boolean 
[Event]  TextChanged (Old As String, New As String).Trim()
[Event]  EnterPressed.Trim()
[Event]  FocusChanged (HasFocus As Boolean).Trim()

' ######################################################################
' LIBRERÃA: xCustomListView (v1.73)
' ######################################################################

' === CLASE: CLVItem (b4a.example3.customlistview._clvitem) ===
[Met]    Initialize()    ' Initializes the fields to their default value.

' === CLASE: CustomListView (b4a.example3.customlistview) ===
[Prop:R] _dividersize As Float 
[Prop:R] _firstvisibleindex As Int    ' Gets the index of the first visible item.
[Prop:R] _lastvisibleindex As Int    ' Gets the index of the last visible item.
[Prop:R] _size As Int    ' Returns the number of items.
[Met]    IsInitialized() As Boolean    ' Tests whether the object has been initialized.
[Met]    _add(Pnl As B4XView, Value As Object) As String    ' Adds a custom item.
[Met]    _addtextitem(Text As Object, Value As Object) As String    ' Adds a text item. The item height will be adjusted based on the text.
[Met]    _asview() As B4XView 
[Met]    _base_resize(Width As Double, Height As Double) As String 
[Met]    _class_globals() As String 
[Met]    _clear() As String    ' Clears all items.
[Met]    _designercreateview(Base As Object, Lbl As Label, Props As Map) As String 
[Met]    _findindexfromoffset(Offset As Int) As Int    ' Finds the index of the item (+ divider) based on the offset
[Met]    _getbase() As B4XView 
[Met]    _getdividersize() As Float 
[Met]    _getfirstvisibleindex() As Int    ' Gets the index of the first visible item.
[Met]    _getitemfromview(v As B4XView) As Int    ' Returns the index of the item that holds the given view.
[Met]    _getlastvisibleindex() As Int    ' Gets the index of the last visible item.
[Met]    _getpanel(Index As Int) As B4XView    ' Returns the Panel stored at the specified index.
[Met]    _getrawlistitem(Index As Int) As _clvitem    ' Returns the CLVItem. Should not be used in most cases.
[Met]    _getsize() As Int    ' Returns the number of items.
[Met]    _getvalue(Index As Int) As Object    ' Returns the value stored at the specified index.
[Met]    _initialize(vCallBack As Object, vEventName As String) As String 
[Met]    _insertat(Index As Int, pnl As B4XView, Value As Object) As String    ' Adds a custom item at the specified index.
[Met]    _insertattextitem(Index As Int, Text As Object, Value As Object) As String    ' Inserts a text item at the specified index.
[Met]    _jumptoitem(Index As Int) As String    ' Scrolls the list to the specified item (without animating the scroll).
[Met]    _refresh() As String    ' Causes the VisibleRangeChanged event to be raised
[Met]    _removeat(Index As Int) As String    ' Removes the item at the specified index.
[Met]    _replaceat(Index As Int, pnl As B4XView, ItemSize As Int, Value As Object) As String    ' Replaces the item at the specified index with a new item.
ItemSize - Item's height for vertical orientation and width for horizontal orientation.
[Met]    _resizeitem(Index As Int, ItemSize As Int) As String    ' Changes the height of an existing item.
[Met]    _scrolltoitem(Index As Int) As String    ' Smoothly scrolls the list to the specified item.
[Event]  ItemClick (Index As Int, Value As Object).Trim()
[Event]  ItemLongClick (Index As Int, Value As Object).Trim()
[Event]  ReachEnd.Trim()
[Event]  VisibleRangeChanged (FirstIndex As Int, LastIndex as Int).Trim()
[Event]  ScrollChanged (Offset As Int).Trim()

' ######################################################################
' LIBRERÃA: XMLBuilder (v1.0)
' ######################################################################

' === CLASE: XMLBuilder (com.jamesmurty.utils.XMLBuilder) ===
[Prop:R] Document As Document 
[Met]    cdata(data As String) As XMLBuilder    ' Add a CDATA node with String content to the element represented by this
 builder node, and return the node representing the element to which the
 data was added (<strong>not</strong> the new CDATA node).
data: the String value that will be added to a CDATA element.
Return type: @return:the builder node representing the element to which the data was added.
[Met]    ns(namespaceURI As String) As XMLBuilder    ' Synonym for {@link #namespace(String)}.
namespaceURI: a namespace uri
Return type: @return:the builder node representing the element to which the attribute was added.
[Met]    xpathQuery(xpath As String, type As QName) As Object    ' Return the result of evaluating an XPath query on the builder's DOM.
 Returns null if the query finds nothing,
 or finds a node that does not match the type specified by returnType.
xpath: an XPath expression
type: the type the XPath is expected to resolve to, e.g:
 {@link XPathConstants#NODE}, {@link XPathConstants#NODESET},
 {@link XPathConstants#STRING}
Return type: @return:a builder node representing the first Element that matches the
 XPath expression.
[Met]    elementAsString(outputProperties As Map) As String    ' Serialize the current XML Element and its descendants to a string by
 delegating to the {@link #toWriter(Writer, Properties)} method.
 If output options are provided, these options are provided to the
 {@link Transformer} serializer.
outputProperties: settings for the {@link Transformer} serializer. This parameter may be
 null or an empty Properties object, in which case the default output
 properties will be applied.
Return type: @return:the XML document as a string
[Met]    toWriter2(writer As Writer, outputProperties As Map)    ' Serialize the XML document to the given writer using the default
 {@link TransformerFactory} and {@link Transformer} classes. If output
 options are provided, these options are provided to the
 {@link Transformer} serializer.
writer: a writer to which the serialized document is written.
outputProperties: settings for the {@link Transformer} serializer. This parameter may be
 null or an empty Properties object, in which case the default output
 properties will be applied.
[Met]    toWriter(wholeDocument As Boolean, writer As Writer, outputProperties As Map)    ' Serialize either the specific Element wrapped by this XMLBuilder, or its entire
 XML document, to the given writer using the default {@link TransformerFactory}
 and {@link Transformer} classes.
 If output options are provided, these options are provided to the
 {@link Transformer} serializer.
wholeDocument: if true the whole XML document (i.e. the document root) is serialized,
 if false just the current Element and its descendants are serialized.
writer: a writer to which the serialized document is written.
outputProperties: settings for the {@link Transformer} serializer. This parameter may be
 null or an empty Properties object, in which case the default output
 properties will be applied.
[Met]    root() As XMLBuilder    ' Return type: @return:the builder node representing the root element of the XML document.
 In other words, the same builder node returned by the initial
 {@link #create(String)} or {@link #parse(InputSource)} method.
[Met]    cmnt(comment As String) As XMLBuilder    ' Synonym for {@link #comment(String)}.
comment: the comment to add to the element.
Return type: @return:the builder node representing the element to which the comment was added.
[Met]    data(data As String) As XMLBuilder    ' Synonym for {@link #cdata(String)}.
data: the String value that will be added to a CDATA element.
Return type: @return:the builder node representing the element to which the data was added.
[Met]    attribute(name As String, value As String) As XMLBuilder    ' Add a named attribute value to the element represented by this builder
 node, and return the node representing the element to which the
 attribute was added (<strong>not</strong> the new attribute node).
name: the attribute's name.
value: the attribute's value.
Return type: @return:the builder node representing the element to which the attribute was
 added.
[Met]    elementBefore(name As String) As XMLBuilder    ' Add a named XML element to the document as a sibling element
 that precedes the position of this builder node, and return the builder node
 representing the new child.

 When adding an element to a namespaced document, the new node will be
 assigned a namespace matching it's qualified name prefix (if any) or
 the document's default namespace. NOTE: If the element has a prefix that
 does not match any known namespaces, the element will be created
 without any namespace.
name: the name of the XML element.
Return type: @return:a builder node representing the new child.
[Met]    asString() As String    ' Serialize the XML document to a string excluding the XML declaration.
Return type: @return:the XML document as a string without the XML declaration at the
 beginning of the output.
[Met]    inst(target As String, data As String) As XMLBuilder    ' Synonym for {@link #instruction(String, String)}.
target: the target value for the instruction.
data: the data value for the instruction
Return type: @return:the builder node representing the element to which the instruction was
 added.
[Met]    elementBefore2(name As String, namespaceURI As String) As XMLBuilder    ' Add a named and namespaced XML element to the document as a sibling element
 that precedes the position of this builder node, and return the builder node
 representing the new child.
name: the name of the XML element.
namespaceURI: a namespace URI
Return type: @return:a builder node representing the new child.
[Met]    create2(name As String, namespaceURI As String) As XMLBuilder    ' Construct a builder for new XML document with a default namespace.
 The document will be created with the given root element, and the builder
 returned by this method will serve as the starting-point for any further
 document additions.
name: the name of the document's root element.
namespaceURI: default namespace URI for document, ignored if null or empty.
Return type: @return:a builder node that can be used to add more nodes to the XML document.
[Met]    namespace(namespaceURI As String) As XMLBuilder    ' Add an XML namespace attribute to this builder's element node
 without a prefix.
namespaceURI: a namespace uri
Return type: @return:the builder node representing the element to which the attribute was added.
[Met]    element2(name As String, namespaceURI As String) As XMLBuilder    ' Add a named and namespaced XML element to the document as a child of
 this builder node, and return the builder node representing the new child.
name: the name of the XML element.
namespaceURI: a namespace URI
Return type: @return:a builder node representing the new child.
[Met]    instruction(target As String, data As String) As XMLBuilder    ' Add an instruction to the element represented by this builder node, and
 return the node representing the element to which the instruction
 was added (<strong>not</strong> the new instruction node).
target: the target value for the instruction.
data: the data value for the instruction
Return type: @return:the builder node representing the element to which the instruction was
 added.
[Met]    parse(inputSource As InputSource) As XMLBuilder    ' Construct a builder from an existing XML document. The provided XML
 document will be parsed and an XMLBuilder object referencing the
 document's root element will be returned.
inputSource: an XML document input source that will be parsed into a DOM.
Return type: @return:a builder node that can be used to add more nodes to the XML document.
[Met]    element(name As String) As XMLBuilder    ' Add a named XML element to the document as a child of this builder node,
 and return the builder node representing the new child.

 When adding an element to a namespaced document, the new node will be
 assigned a namespace matching it's qualified name prefix (if any) or
 the document's default namespace. NOTE: If the element has a prefix that
 does not match any known namespaces, the element will be created
 without any namespace.
name: the name of the XML element.
Return type: @return:a builder node representing the new child.
[Met]    text(value As String) As XMLBuilder    ' Add a text value to the element represented by this builder node, and
 return the node representing the element to which the text
 was added (<strong>not</strong> the new text node).
value: the text value to add to the element.
Return type: @return:the builder node representing the element to which the text was added.
[Met]    d(data As String) As XMLBuilder    ' Synonym for {@link #cdata(String)}.
data: the String value that will be added to a CDATA element.
Return type: @return:the builder node representing the element to which the data was added.
[Met]    e(name As String) As XMLBuilder    ' Synonym for {@link #element(String)}.
name: the name of the XML element.
Return type: @return:a builder node representing the new child.
[Met]    c(comment As String) As XMLBuilder    ' Synonym for {@link #comment(String)}.
comment: the comment to add to the element.
Return type: @return:the builder node representing the element to which the comment was added.
[Met]    equals(obj As Object) As Boolean    ' Return type: @return:true if the XML Document and Element objects wrapped by this
 builder are equal to the other's wrapped objects.
[Met]    importXMLBuilder(builder As XMLBuilder) As XMLBuilder    ' Imports another XMLBuilder document into this document at the
 current position. The entire document provided is imported.
builder: the XMLBuilder document to be imported.
Return type: @return:a builder node at the same location as before the import, but
 now containing the entire document tree provided.
[Met]    namespace2(prefix As String, namespaceURI As String) As XMLBuilder    ' Add an XML namespace attribute to this builder's element node.
prefix: a prefix for the namespace URI within the document, may be null
 or empty in which case a default "xmlns" attribute is created.
namespaceURI: a namespace uri
Return type: @return:the builder node representing the element to which the attribute was added.
[Met]    a(name As String, value As String) As XMLBuilder    ' Synonym for {@link #attribute(String, String)}.
name: the attribute's name.
value: the attribute's value.
Return type: @return:the builder node representing the element to which the attribute was
 added.
[Met]    xpathQuery2(xpath As String, type As QName, nsContext As NamespaceContext) As Object    ' Return the result of evaluating an XPath query on the builder's DOM
 using the given namespace. Returns null if the query finds nothing,
 or finds a node that does not match the type specified by returnType.
xpath: an XPath expression
type: the type the XPath is expected to resolve to, e.g:
 {@link XPathConstants#NODE}, {@link XPathConstants#NODESET},
 {@link XPathConstants#STRING}.
nsContext: a mapping of prefixes to namespace URIs that allows the XPath expression
 to use namespaces, or null for a non-namespaced document.
Return type: @return:a builder node representing the first Element that matches the
 XPath expression.
[Met]    attr(name As String, value As String) As XMLBuilder    ' Synonym for {@link #attribute(String, String)}.
name: the attribute's name.
value: the attribute's value.
Return type: @return:the builder node representing the element to which the attribute was
 added.
[Met]    xpathFind2(xpath As String, nsContext As NamespaceContext) As XMLBuilder    ' Find the first element in the builder's DOM matching the given
 XPath expression, where the expression may include namespaces if
 a {@link NamespaceContext} is provided.
xpath: An XPath expression that *must* resolve to an existing Element within
 the document object model.
nsContext: a mapping of prefixes to namespace URIs that allows the XPath expression
 to use namespaces.
Return type: @return:a builder node representing the first Element that matches the
 XPath expression.
[Met]    buildDocumentNamespaceContext() As NamespaceContextImpl    ' Return type: @return:a namespace context containing the prefixes and namespace URI's used
 within this builder's document, to assist in running namespace-aware
 XPath queries against the document.
[Met]    up2(steps As Int) As XMLBuilder    ' Return the builder node representing the n<em>th</em> ancestor element
 of this node, or the root node if n exceeds the document's depth.
steps: the number of parent elements to step over while navigating up the chain
 of node ancestors. A steps value of 1 will find a node's parent, 2 will
 find its grandparent etc.
Return type: @return:the n<em>th</em> ancestor of this node, or the root node if this is
 reached before the n<em>th</em> parent is found.
[Met]    create(name As String) As XMLBuilder    ' Construct a builder for new XML document. The document will be created
 with the given root element, and the builder returned by this method
 will serve as the starting-point for any further document additions.
name: the name of the document's root element.
Return type: @return:a builder node that can be used to add more nodes to the XML document.
[Met]    reference(name As String) As XMLBuilder    ' Add a reference to the element represented by this builder node, and
 return the node representing the element to which the reference
 was added (<strong>not</strong> the new reference node).
name: the name value for the reference.
Return type: @return:the builder node representing the element to which the reference was
 added.
[Met]    up() As XMLBuilder    ' Return the builder node representing the parent of the current node.
Return type: @return:the parent of this node, or the root node if this method is called on the
 root node.
[Met]    i(target As String, data As String) As XMLBuilder    ' Synonym for {@link #instruction(String, String)}.
target: the target value for the instruction.
data: the data value for the instruction
Return type: @return:the builder node representing the element to which the instruction was
 added.
[Met]    ns2(prefix As String, namespaceURI As String) As XMLBuilder    ' Synonym for {@link #namespace(String, String)}.
prefix: a prefix for the namespace URI within the document, may be null
 or empty in which case a default xmlns attribute is created.
namespaceURI: a namespace uri
Return type: @return:the builder node representing the element to which the attribute was added.
[Met]    elem(name As String) As XMLBuilder    ' Synonym for {@link #element(String)}.
name: the name of the XML element.
Return type: @return:a builder node representing the new child.
[Met]    asString2(outputProperties As Map) As String    ' Serialize the XML document to a string by delegating to the
 {@link #toWriter(Writer, Properties)} method. If output options are
 provided, these options are provided to the {@link Transformer}
 serializer.
outputProperties: settings for the {@link Transformer} serializer. This parameter may be
 null or an empty Properties object, in which case the default output
 properties will be applied.
Return type: @return:the XML document as a string
[Met]    ref(name As String) As XMLBuilder    ' Synonym for {@link #reference(String)}.
name: the name value for the reference.
Return type: @return:the builder node representing the element to which the reference was
 added.
[Met]    xpathFind(xpath As String) As XMLBuilder    ' Find the first element in the builder's DOM matching the given
 XPath expression.
xpath: An XPath expression that *must* resolve to an existing Element within
 the document object model.
Return type: @return:a builder node representing the first Element that matches the
 XPath expression.
[Met]    t(value As String) As XMLBuilder    ' Synonmy for {@link #text(String)}.
value: the text value to add to the element.
Return type: @return:the builder node representing the element to which the text was added.
[Met]    r(name As String) As XMLBuilder    ' Synonym for {@link #reference(String)}.
name: the name value for the reference.
Return type: @return:the builder node representing the element to which the reference was
 added.
[Met]    GetElement() As Element    ' Return type: @return:the XML element wrapped by this builder node.
[Met]    comment(comment As String) As XMLBuilder    ' Add a comment to the element represented by this builder node, and
 return the node representing the element to which the comment
 was added (<strong>not</strong> the new comment node).
comment: the comment to add to the element.
Return type: @return:the builder node representing the element to which the comment was added.

' ######################################################################
' LIBRERÃA: XmlSax (v1.11)
' ######################################################################

' === CLASE: SaxParser (anywheresoftware.b4a.objects.SaxParser) ===
[Met]    Initialize()    ' Initializes the object.
Usually this object should be a process global object.
[Met]    Parse2(TextReader As Reader, EventName As String)    ' Parses the given TextReader.
EventName - The events subs name prefix.
[Met]    Parse(InputStream As InputStream, EventName As String)    ' Parses the given InputStream.
EventName - The events subs name prefix.
[Event]  StartElement (Uri As String, Name As String, Attributes As Attributes).Trim()
[Event]  EndElement (Uri As String, Name As String, Text As StringBuilder).Trim()

' === CLASE: Attributes (anywheresoftware.b4a.objects.SaxParser.AttributesWrapper) ===
[Prop:R] Size As Int    ' Returns the number of attributes in this element.
[Met]    GetValue2(Uri As String, Name As String) As String    ' Returns the value of the attribute with the following Uri and Name.
Pass an empty string as the Uri if namespaces are not used.
Returns an empty string if no such attribute was found.
[Met]    GetValue(Index As Int) As String    ' Returns the value of the attribute at the specified index.
Note that the order of elements can change.
[Met]    IsInitialized() As Boolean 
[Met]    GetName(Index As Int) As String    ' Returns the name of the attribute at the specified index.
Note that the order of elements can change.

' ######################################################################
' LIBRERÃA: XUI (v2.2)
' ######################################################################

' === CLASE: B4XView (anywheresoftware.b4a.objects.B4XViewWrapper) ===
[Prop:RW] Left As Int    ' Gets or sets the left position.
[Prop:R] Parent As B4XView    ' Returns the parent. The object returned will be uninitialized if there is no parent.
[Prop:RW] EditTextHint As String    ' Gets or sets the hint or prompt text. Supported types:
B4A - EditText
B4i - TextField
B4J - TextArea, TextField
[Prop:R] NumberOfViews As Int    ' Returns the number of direct child views.
Supported types
B4A - Activity, Panel
B4i - Panel
B4J - Pane
[Prop:RW] SelectionStart As Int    ' Gets or sets the selection start index.
See also: B4XView.SetSelection.
Supported types:
B4A - EditText
B4i - TextField and TextView
B4J - TextField and TextArea
[Prop:RW] Font As B4XFont    ' Gets or sets the font (typeface and text size).
Supported types:
B4A - EditText, Label, Button, CheckBox, RadioButton, ToggleButton
B4i - TextField, TextView, Button, Label
B4J - Sets the Font property if available. Otherwise sets the CSS attribute.
[Prop:RW] Visible As Boolean    ' Gets or sets whether the view is visible.
[Prop:RW] Height As Int    ' Gets or sets the view's height.
[Prop:RW] TextColor As Int    ' Gets or sets the text colors. Supported types:
 B4A - EditText, Label, Button, CheckBox, RadioButton,  ToggleButton
 B4i - TextField, TextView, Label
 B4J - All types. Based on the native TextColor property if available or -fx-text-fill CSS attribute.
[Prop:RW] Width As Int    ' Gets or sets the view's width.
[Prop:RW] Progress As Int    ' Gets or sets the progress value. The progress value is scaled between 0 to 100 (this is different than the native views range in B4J and B4i). 
 Supported types:
 B4A - ProgressBar
 B4J - ProgressView, ProgressIndicator
 B4i - ProgressView
<b>Value should be between 0 to 100.</b>
[Prop:RW] ScrollViewContentWidth As Int    ' Gets or set the scroll view inner panel width.
Supported types:
B4A - HorizontalScrollView, ScrollView
B4i - ScrollView
B4J - ScrollPane
[Prop:R] ScrollViewInnerPanel As B4XView    ' Gets or sets the scroll view inner panel.
Supported types:
B4A - HorizontalScrollView, ScrollView
B4i - ScrollView
B4J - ScrollPane
[Prop:RW] Color As Int    ' Gets or sets the background color. Returns 0 if the color is not available.
[Prop:RW] Enabled As Boolean    ' Gets or sets whether the view is enabled. Does nothing if the view does not support this property.
[Prop:RW] TextSize As Float    ' Gets or sets the text size.
Supported types:
B4A - EditText, Label, Button, CheckBox, RadioButton, ToggleButton
B4i - TextField, TextView, Button, Label
B4J - Returns the TextSize property if available and the CSS attribute for other types. Returns 0 if attribute not available.
[Prop:RW] Text As String    ' Gets or sets the text. Supported types: 
B4A - EditText, Label, Button, CheckBox, RadioButton, ToggleButton
B4i - TextField, TextView, Button, Label
B4J - TextField, TextArea, Label, Button, CheckBox, RadioButton, ToggleButton
[Prop:RW] Rotation As Float    ' Gets or sets the view's rotation transformation (in degrees).
[Prop:RW] Checked As Boolean    ' Gets or sets the checked state (also named selected or value). 
Supported types:
B4A - CheckBox, RadioButton, ToggleButton, Switch
B4i - Switch
B4J: CheckBox, RadioButton, ToggleButton.
[Prop:RW] ScrollViewContentHeight As Int    ' Gets or set the scroll view inner panel height.
Supported types:
B4A - HorizontalScrollView, ScrollView
B4i - ScrollView
B4J - ScrollPane
[Prop:RW] ScrollViewOffsetX As Int    ' Gets or sets the horizontal scroll position.
Supported types:
B4A - HorizontalScrollView (returns 0 for ScrollView).
B4i - ScrollView
B4J - ScrollPane
[Prop:RW] Top As Int    ' Gets or sets the top position.
[Prop:RW] ScrollViewOffsetY As Int    ' Gets or sets the vertical scroll position.
Supported types:
B4A - ScrollView (returns 0 for HorizontalScrollView).
B4i - ScrollView
B4J - ScrollPane
[Prop:RW] Tag As Object    ' Gets or sets the view's tag object.
[Prop:R] SelectionLength As Int    ' Gets the selection length.
See also: B4XView.SetSelection.
Supported types:
B4A - EditText
B4i - TextField and TextView
B4J - TextField and TextArea
[Met]    GetView(Index As Int) As B4XView    ' Returns the view at the given index.
Supported types
B4A - Activity, Panel
B4i - Panel
B4J - Pane
[Met]    AddView(View As View, Left As Int, Top As Int, Width As Int, Height As Int)    ' Adds a view.
Supported types
B4A - Activity, Panel
B4i - Panel
B4J - Pane
[Met]    GetBitmap() As B4XBitmap    ' Gets the view's bitmap.
 Supported types:
 B4A - All views when the background drawable is a BitmapDrawable.
 B4i and B4J - ImageView
[Met]    IsInitialized() As Boolean 
[Met]    SelectAll()    ' Selects all text.
Supported types:
B4A - EditText
B4i - TextField and TextView
B4J - TextField and TextArea
[Met]    GetAllViewsRecursive() As IterableList    ' Returns an iterator that iterates over all the child views including views that were added to other child views.
Make sure to check the view type as it might return subviews as well.
Example:<code>
For Each v As B4XView In Panel1.GetAllViewsRecursive
	...
Next</code>
Supported types
B4A - Activity, Panel
B4i - Panel
B4J - Pane
[Met]    SetTextSizeAnimated(Duration As Int, TextSize As Float)    ' Sets the text size.
Supported types:
B4A - EditText, Label, Button, CheckBox, RadioButton, ToggleButton
B4i - TextField, TextView, Button, Label. <b>Only labels are animated.</b>
B4J - Sets the TextSize property if available and the CSS attribute for other types.
[Met]    BringToFront()    ' Changes the Z order of this view and brings it to the front.
[Met]    SendToBack()    ' Changes the Z order of this view and sends it to the back.
[Met]    SetColorAndBorder(BackgroundColor As Int, BorderWidth As Int, BorderColor As Int, BorderCornerRadius As Int)    ' Sets the background color and border.
 B4A - The view's drawable will be set to ColorDrawable.
[Met]    SetVisibleAnimated(Duration As Int, Visible As Boolean)    ' Fades in or fades out the view.
[Met]    SetRotationAnimated(Duration As Int, Degree As Float)    ' Rotates the view with animation.
Duration - Animation duration in milliseconds.
Degree - Rotation degree.
[Met]    SetBitmap(Bitmap As Bitmap)    ' Sets the view's bitmap.
 Supported types:
 B4A - All views. The view's Drawable will be set to a BitmapDrawable with Gravity set to CENTER.
 B4i - ImageView. ContentMode set to Fit.
 B4J - ImageView. PreserveRatio is set to True.
[Met]    SetTextAlignment(Vertical As String, Horizontal As String)    ' Sets the text alignment.
Vertical - TOP, CENTER or BOTTOM.
Horizontal - LEFT, CENTER or RIGHT.

In B4i the vertical alignment has no effect.
 Supported types:
 B4A - EditText, Label, Button, CheckBox, RadioButton, ToggleButton
 B4J - Label, Button, Checkbox, RadioButton, ToggleButton, TextField
[Met]    LoadLayout(LayoutFile As String)    ' Loads the layout file.
Supported types
B4A - Panel
B4i - Panel
B4J - Pane
[Met]    SetColorAnimated(Duration As Int, FromColor As Int, ToColor As Int)    ' Changes the background color with a transition animation between the FromColor and the ToColor colors.
Duration - Animation duration measured in milliseconds.

Note that the animation does not work with labels in B4i. It will change immediately.
You can put a transparent label inside a panel and animate the panel color instead.
[Met]    SetSelection(Start As Int, Length As Int)    ' Sets the selection.
Supported types:
B4A - EditText
B4i - TextField and TextView
B4J - TextField and TextArea
[Met]    RemoveViewFromParent()    ' Removes the view from its parent.
[Met]    Snapshot() As B4XBitmap    ' Captures the views appearance.
[Met]    RemoveAllViews()    ' Removes all views.
Supported types
B4A - Activity, Panel
B4i - Panel
B4J - Pane
[Met]    SetLayoutAnimated(Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)    ' Sets the view size and position.
Duration - Animation duration in milliseconds. Pass 0 to make the change immediately.
[Met]    RequestFocus() As Boolean    ' Requests focus to be set to this view. Returns True if the focus has shifted.
Always returns True in B4J.

' === CLASE: B4XBitmap (anywheresoftware.b4a.objects.B4XViewWrapper.B4XBitmapWrapper) ===
[Prop:R] Height As Double    ' Returns the bitmap's height.
[Prop:R] Scale As Float    ' Returns the bitmap scale. It will always be 1 in B4J and B4i.
[Prop:R] Width As Double    ' Returns the bitmap's width.
[Met]    Crop(Left As Int, Top As Int, Width As Int, Height As Int) As B4XBitmap    ' Returns a <b>new</b> cropped bitmap.
[Met]    Rotate(Degrees As Int) As B4XBitmap    ' Returns a <b>new</b> rotated bitmap. The bitmap will be rotated clockwise.
The following values are supported on all three platforms: 0, 90, 180, 270.
[Met]    Resize(Width As Int, Height As Int, KeepAspectRatio As Boolean) As B4XBitmap    ' Returns a <b>new</b> bitmap with the given width and height.
[Met]    IsInitialized() As Boolean 
[Met]    WriteToStream(Out As OutputStream, Quality As Int, Format As CompressFormat)    ' Writes the bitmap to the output stream.
Quality - Value between 0 (smaller size, lower quality) to 100 (larger size, higher quality), 
which is a hint for the compressor for the required quality.
Format - JPEG or PNG.
 
Example:<code>
Dim Out As OutputStream
Out = File.OpenOutput(XUI.DefaultFolder, "Test.png", False)
Bitmap1.WriteToStream(out, 100, "PNG")
Out.Close</code>

' === CLASE: B4XFont (anywheresoftware.b4a.objects.B4XViewWrapper.B4XFont) ===
[Prop:R] Size As Float 
[Prop:R] IsInitialized As Boolean 
[Met]    ToNativeFont() As Typeface    ' Returns a native font object representing the same font.

' === CLASE: XUI (anywheresoftware.b4a.objects.B4XViewWrapper.XUI) ===
[Prop:R] IsB4i As Boolean    ' Returns True in B4i.
[Prop:R] IsB4J As Boolean    ' Returns True in B4J.
[Prop:R] Scale As Float    ' Returns the screen normalized scale.
Always returns 1 in B4J and B4i.
Returns the same value as 100dip / 100 in B4A.
[Prop:R] IsB4A As Boolean    ' Returns True in B4A.
[Prop:R] DefaultFolder As String    ' B4A - Same as File.DirInternal.
B4i - Same as File.DirDocuments.
B4J - Same as File.DirData. You must first call SetDataFolder once before you can use this folder.
[Met]    Msgbox2Async(Message As CharSequence, Title As CharSequence, Positive As String, Cancel As String, Negative As String, Icon As Bitmap) As Object    ' Shows a non-modal Msgbox.
Returns an object that can be used as the sender filter parameter for the Msgbox_Result event.
Message - Dialog message.
Title - Dialog title.
Positive - Positive button text. Pass an empty string to remove button.
Cancel - Cancel button text. Pass an empty string to remove button.
Negative - Negative button text. Pass an empty string to remove button.
Icon - Dialog icon. Pass Null to remove. Does nothing in B4i.
 Example:<code>
Dim sf As Object = xui.Msgbox2Async("Delete file?", "Title", "Yes", "Cancel", "No", Null)
Wait For (sf) Msgbox_Result (Result As Int)
If Result = xui.DialogResponse_Positive Then
	Log("Deleted!!!")
End If</code>
[Met]    LoadBitmapResize(Dir As String, FileName As String, Width As Int, Height As Int, KeepAspectRatio As Boolean) As B4XBitmap    ' Loads and resizes a bitmap.
[Met]    PaintOrColorToColor(Color As Object) As Int    ' B4A, B4i - Does nothing.
 B4J - Converts a Paint object to an Int color. Does not do anything if the color is already an Int color.
[Met]    CreateFont(Typeface As Typeface, Size As Float) As B4XFont    ' Creates a new B4XFont from the given font and size. 
Do NOT use DIP units with font sizes.
[Met]    GetRegisteredDesignerClass(Module As String) As Object    ' Gets the registered designer class. Returns Null if no such class exists.
[Met]    CreateDefaultFont(Size As Float) As B4XFont    ' Create a new B4XFont with the default typeface.
Do NOT use DIP units with font sizes.
[Met]    CreateDefaultBoldFont(Size As Float) As B4XFont    ' Create a new B4XFont with the default bold typeface.
Do NOT use DIP units with font sizes.
[Met]    CreatePanel(EventName As String) As B4XView    ' Creates a Panel (or Pane in B4J).
Note that the panel created will clip its child views. 
In B4A, this method can only be called from an Activity context.
[Met]    RegisterDesignerClass(ClassInstance As Object)    ' Registers a designer script class.
[Met]    LoadBitmap(Dir As String, FileName As String) As B4XBitmap    ' Loads a bitmap. In most cases you should use LoadBitmapResize instead.
[Met]    CreateFontAwesome(Size As Float) As B4XFont    ' Creates a new B4XFont based on FontAwesome font.
[Met]    CreateMaterialIcons(Size As Float) As B4XFont    ' Creates a new B4XFont based on Material Icons font.
[Met]    Color_ARGB(Alpha As Int, R As Int, G As Int, B As Int) As Int    ' Returns the color value from the components. Values should be between 0 to 255.
[Met]    FileUri(Dir As String, FileName As String) As String    ' Returns a file uri. This can be used with WebView to access local resources.
The FileName parameter will be url encoded.
Example: <code>
WebView1.LoadHtml($"<img src="${xui.FileUri(File.DirAssets, "smiley.png")}" />"$)
'or:
WebView1.LoadUrl($"${xui.FileUri(File.DirAssets, "smiley.png")}"$)
</code>
[Met]    SetDataFolder(AppName As String)    ' B4A, B4i - Does nothing.
 B4J - Sets the subfolder name on Windows and Mac. The actual path will be similar to: C:\Users\[user name]\AppData\Roaming\[AppName].
[Met]    MsgboxAsync(Message As CharSequence, Title As CharSequence) As Object    ' Shows a non-modal Msgbox.
Returns an object that can be used as the sender filter parameter for the optional Msgbox_Result event.
Example:<code>xui.MsgboxAsync("Hello", "World")</code>
[Met]    Color_RGB(R As Int, G As Int, B As Int) As Int    ' Returns the color value from the components. Values should be between 0 to 255.
[Met]    SubExists(Component As Object, Sub As String, NotUsed As Int) As Boolean    ' Same as SubExists keyword. Adds an additional parameter that is required in B4i (number of parameters).
[Met]    CreateFont2(B4XFont As B4XFont, Size As Float) As B4XFont    ' Creates a new B4XFont from the given B4XFont and size.
Do NOT use DIP units with font sizes.

' === CLASE: B4XCanvas (anywheresoftware.b4a.objects.B4XCanvas) ===
[Prop:R] TargetRect As B4XRect    ' Returns a B4XRect with the same dimensions as the target view.
[Prop:R] TargetView As B4XView    ' Returns the target view.
[Met]    DrawText(Text As String, x As Float, y As Float, Font As B4XFont, Color As Int, Alignment As Align)    ' Draws the text.
Text - The text that will be drawn.
x - The origin X coordinate.
y - The origin Y coordinate.
Font - The text font.
Color - Drawing color.
Alignment - Sets the alignment relative to the origin. One of the following values: LEFT, CENTER, RIGHT.
[Met]    ClearRect(Rect As B4XRect)    ' Clears the given rectangle. Does not work in B4J with clipped paths.
[Met]    DrawBitmap(Bitmap As Bitmap, Destination As B4XRect)    ' Draws a bitmap in the given destination. Use B4XBitmap.Crop to draw part of a bitmap.
[Met]    Resize(Width As Float, Height As Float)    ' Resizes the canvas.
[Met]    DrawPath(Path As B4XPath, Color As Int, Filled As Boolean, StrokeWidth As Float)    ' Draws the given path.
Path - Path shape.
Color - Drawing color.
Filled - Whether to fill the shape or not.
StrokeWidth - Stroke width. Only relevant when Filled is False.

Note that there is a subtle difference in the way the stroke width affects the drawing between B4J and the other platforms.
In B4J the path defines the stroke edge. In B4A and B4i it defines the stroke center.
[Met]    DrawPathRotated(Path As B4XPath, Color As Int, Filled As Boolean, StrokeWidth As Float, Degrees As Float, CenterX As Float, CenterY As Float)    ' Similar to DrawPath. Rotates the path based on the degrees and center parameters.
[Met]    DrawTextRotated(Text As String, x As Float, y As Float, Font As B4XFont, Color As Int, Alignment As Align, Degree As Float)    ' Similar to DrawText. Rotates the text before it is drawn.
[Met]    Initialize(View As B4XView)    ' Initializes the canvas.
In B4A and B4i the canvas will draw on the passed view.
In B4J the canvas which is a view by itself is added to the passed pane as the first element.
[Met]    DrawCircle(x As Float, y As Float, Radius As Float, Color As Int, Filled As Boolean, StrokeWidth As Float)    ' Draws a circle.
[Met]    RemoveClip()    ' Removes a previously set clip region.
[Met]    CreateBitmap() As B4XBitmap    ' Returns a copy of the canvas bitmap. In B4A it returns the canvas bitmap itself (not a copy).
[Met]    DrawBitmapRotated(Bitmap As Bitmap, Destination As B4XRect, Degrees As Float)    ' Similar to DrawBitmap. Draws a rotated bitmap.
[Met]    DrawLine(x1 As Float, y1 As Float, x2 As Float, y2 As Float, Color As Int, StrokeWidth As Float)    ' Draws a line between x1,y1 to x2,y2.
[Met]    DrawRect(Rect As B4XRect, Color As Int, Filled As Boolean, StrokeWidth As Float)    ' Draws a rectangle.
[Met]    Invalidate()    ' Commits the drawings. Must be called for the drawings to be updated.
[Met]    ClipPath(Path As B4XPath)    ' Clips the drawings to a closed path.
[Met]    MeasureText(Text As String, Font As B4XFont) As B4XRect    ' Measures single line texts and returns their width, height and the height above the baseline.
-Rect.Top returns the height above the baseline.
Code to draw center aligned text:<code>
Dim r As B4XRect = cvs1.MeasureText(Text, Fnt)
Dim BaseLine As Int = CenterY - r.Height / 2 - r.Top
cvs1.DrawText(Text, CenterX, BaseLine, Fnt, Clr, "CENTER")</code>
[Met]    Release()    ' Releases native resources related to the canvas. Does nothing in B4A and B4J.

' === CLASE: B4XRect (anywheresoftware.b4a.objects.B4XCanvas.B4XRect) ===
[Prop:RW] Left As Float 
[Prop:RW] Top As Float 
[Prop:RW] Right As Float 
[Prop:RW] Bottom As Float 
[Prop:RW] Height As Float    ' Gets or sets the rectangle height.
[Prop:R] CenterY As Float    ' Returns the vertical center.
[Prop:R] CenterX As Float    ' Returns the horizontal center.
[Prop:RW] Width As Float    ' Gets or sets the rectangle width.
[Met]    Initialize(Left As Float, Top As Float, Right As Float, Bottom As Float) 

' === CLASE: B4XPath (anywheresoftware.b4a.objects.B4XCanvas.B4XPath) ===
[Met]    LineTo(x As Float, y As Float) As B4XPath    ' Adds a line from the last point to the specified point.
[Met]    InitializeRoundedRect(Rect As B4XRect, CornersRadius As Float) As B4XPath    ' Initializes the path and sets the current path shape to a rectangle with rounded corners.
Rect - Rectangle.
CornersRadius - Corners radius.
[Met]    InitializeOval(Rect As B4XRect) As B4XPath    ' Initializes the path and sets the current path shape to an oval.
Rect - The oval framing rectangle.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(x As Float, y As Float) As B4XPath    ' Initializes the path and sets the value of the first point.
[Met]    InitializeArc(x As Float, y As Float, Radius As Float, StartingAngle As Float, SweepAngle As Float) As B4XPath    ' Initializes the path and sets the current path shape to an arc. 
 x / y - Arc center.
 Radius - Arc radius.
 StartingAngle - The starting angle. 0 equals to hour 3.
 SweepAngle - Sweep angle. Positive = clockwise.

' ######################################################################
' LIBRERÃA: XUI2D (v1.02)
' ######################################################################

' === CLASE: B2WorldManifold (anywheresoftware.b4a.objects.B2WorldManifold) ===
[Prop:R] Normal As B2Vec2 
[Met]    GetPoint(Index As Int) As B2Vec2    ' World contact point (point of intersection)

' === CLASE: B2Manifold (anywheresoftware.b4a.objects.B2WorldManifold.B2Manifold) ===
[Prop:R] PointCount As Int 
[Met]    GetManifoldPoint(Index As Int) As B2ManifoldPoint 

' === CLASE: B2ManifoldPoint (anywheresoftware.b4a.objects.B2WorldManifold.B2ManifoldPoint) ===
[Prop:R] LocalPoint As B2Vec2 
[Prop:R] TangentImpulse As Float 
[Prop:R] NormalImpulse As Float 

' === CLASE: B2ContactImpulse (anywheresoftware.b4a.objects.B2WorldManifold.B2ContactImpulse) ===
[Prop:R] PointCount As Int 
[Met]    GetNormalImpulse(Index As Int) As Float 
[Met]    GetTangentImpulse(Index As Int) As Float 

' === CLASE: B2World (anywheresoftware.b4a.objects.B2World) ===
[Prop:R] Locked As Boolean    ' Returns True if the world is currently locked for changes.
[Prop:R] AllBodies As List    ' Returns a list with all the bodies.
[Prop:R] DynamicBodies As List    ' Returns a list with all the bodies with dynamic body type.
[Prop:RW] Gravity As B2Vec2    ' Gets or sets the world gravity.
[Met]    DestroyBody(Body As B2Body)    ' This automatically deletes all associated shapes and joints.
 This function is locked during callbacks.
[Met]    RayCast(FromVec As B2Vec2, ToVec As B2Vec2)    ' Ray-cast the world for all fixtures in the path of the ray, going from FromVec to ToVec. Your callback controls whether you
 get the closest point, any point, or n-points. The ray-cast ignores shapes that contain the
 starting point.
 
 The RayCastCallback event will be raised. The return value from this event determines the behavior:
 0 - Terminate the ray cast.
 Fraction - Clip the ray to this point.
 1 - Do not clip the ray and continue.
 -1 - Ignore this fixture.
[Met]    FirstJoint() As B2Joint 
[Met]    Initialize(EventName As String, Gravity As B2Vec2)    ' Initializes the world and sets its gravity.
[Met]    sayGoodbye(joint As Joint) 
[Met]    TimeStep(TimeStep As Float, VelocityIterations As Int, PositionIterations As Int)    ' Take a time step. This performs collision detection, integration, and constraint solution.
 
 TimeStep - the amount of time to simulate, this should not vary.
 VelocityIterations - for the velocity constraint solver.
 PositionIterations - for the position constraint solver.
[Met]    CreateVec2(X As Float, Y As Float) As B2Vec2    ' Created a B2Vec2 vector.
[Met]    DestroyJoint(Joint As B2Joint) 
[Met]    QueryAABBToMapOfBodies(AABB As B2AABB) As Map    ' Queries the world for all fixtures that potentially overlap the given AABB.
Returns a Map with the bodies as keys. The map values are not used.
[Met]    CreateBody(BodyDef As B2BodyDef) As B2Body    ' Create a rigid body given a definition.
This function is locked during callbacks.
[Met]    CreateJoint(JointDef As B2JointDef) As B2Joint 
[Met]    FirstContact() As B2Contact    ' Returns the first contact. Note that the list of contacts includes non-touching contacts.
Example:<code>
Dim contact As B2Contact = world.FirstContact
Do While contact <> Null
	If contact.IsTouching Then
		'...
	End If
	contact = contact.NextContact
Loop</code>
[Met]    QueryAABBToListOfFixtures(AABB As B2AABB) As List    ' Queries the world for all fixtures that potentially overlap the given AABB.
Returns a List. Each item in the list is a B2Fixture.
[Event]  BeginContact (Contact As B2Contact).Trim()
[Event]  EndContact (Contact As B2Contact).Trim()
[Event]  PreSolve (Contact As B2Contact, OldManifold As B2Manifold).Trim()
[Event]  PostSolve (Contact As B2Contact, Impulse As B2ContactImpulse).Trim()
[Event]  RayCastCallback (Fixture As B2Fixture, Point As B2Vec2, Normal As B2Vec2, Fraction As Float) As Float.Trim()

' === CLASE: B2Vec2 (anywheresoftware.b4a.objects.B2Vec2) ===
[Prop:R] LengthSquared As Float    ' Return the squared length of this vector.
[Prop:R] Length As Float    ' Return the length of this vector.
[Prop:RW] X As Float 
[Prop:RW] Y As Float 
[Met]    Equals(Other As B2Vec2) As Boolean    ' Tests whether the two vectors are equal.
[Met]    Set(X As Float, Y As Float)    ' Set the vector component-wise.
[Met]    SubtractFromThis(Other As B2Vec2)    ' Subtract another vector from this one and return result - alters this vector.
[Met]    AddToThis(Other As B2Vec2)    ' Add another vector to this one and returns result - alters this vector.
[Met]    MultiplyThis(Scalar As Float)    ' Multiply this vector by a number and return result - alters this vector.
[Met]    CreateCopy() As B2Vec2    ' Creates a copy of the current vector.
[Met]    NormalizeThis() As Float    ' Normalize this vector and return the length before normalization. Alters this vector.
[Met]    Negate() As B2Vec2    ' Return the negation of this vector; does not alter this vector.

' === CLASE: B2Transform (anywheresoftware.b4a.objects.B2Transform) ===
[Prop:RW] Translation As B2Vec2    ' Gets or sets the translation caused by the transform
[Prop:RW] Angle As Float    ' Gets or sets the rotation caused by the transform
[Met]    MultiplyRot(v As B2Vec2) As B2Vec2    ' Multiplies the vector with the transformation rotation matrix.
[Met]    Initialize()    ' Creates a new identity transform.

' === CLASE: B2Shape (anywheresoftware.b4a.objects.B2Shape) ===
[Prop:RW] Radius As Float    ' Gets or sets the radius of the underlying shape. This can refer to different things depending on the
 shape type.
[Prop:R] ShapeType As Object    ' Returns the shape type which is one of the SHAPE constants.
[Met]    ComputeAABB(Output As B2AABB, Transform As B2Transform)    ' Computes the shape AABB based on the passed transform. The result is stored in the Output object.
[Met]    TestPoint(Transform As B2Transform, Point As B2Vec2) As Boolean    ' Test a point for containment in this shape. This only works for convex shapes.
 
 Transform - the shape world transform.
 Point - a point in world coordinates.
[Met]    IsInitialized() As Boolean 

' === CLASE: B2Shape (anywheresoftware.b4a.objects.B2Shape.ConcreteB2Shape) ===
[Prop:RW] Radius As Float    ' Gets or sets the radius of the underlying shape. This can refer to different things depending on the
 shape type.
[Prop:R] ShapeType As Object    ' Returns the shape type which is one of the SHAPE constants.
[Met]    ComputeAABB(Output As B2AABB, Transform As B2Transform)    ' Computes the shape AABB based on the passed transform. The result is stored in the Output object.
[Met]    TestPoint(Transform As B2Transform, Point As B2Vec2) As Boolean    ' Test a point for containment in this shape. This only works for convex shapes.
 
 Transform - the shape world transform.
 Point - a point in world coordinates.
[Met]    IsInitialized() As Boolean 

' === CLASE: B2CircleShape (anywheresoftware.b4a.objects.B2Shape.B2CircleShape) ===
[Prop:RW] Radius As Float    ' Gets or sets the radius of the underlying shape. This can refer to different things depending on the
 shape type.
[Prop:R] SupportVertex As B2Vec2 
[Prop:R] ShapeType As Object    ' Returns the shape type which is one of the SHAPE constants.
[Met]    ComputeAABB(Output As B2AABB, Transform As B2Transform)    ' Computes the shape AABB based on the passed transform. The result is stored in the Output object.
[Met]    TestPoint(Transform As B2Transform, Point As B2Vec2) As Boolean    ' Test a point for containment in this shape. This only works for convex shapes.
 
 Transform - the shape world transform.
 Point - a point in world coordinates.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(Radius As Float) 

' === CLASE: B2EdgeShape (anywheresoftware.b4a.objects.B2Shape.B2EdgeShape) ===
[Prop:R] Vertex2 As B2Vec2 
[Prop:RW] Radius As Float    ' Gets or sets the radius of the underlying shape. This can refer to different things depending on the
 shape type.
[Prop:R] Vertex1 As B2Vec2 
[Prop:R] ShapeType As Object    ' Returns the shape type which is one of the SHAPE constants.
[Met]    Set(FromVec As B2Vec2, ToVec As B2Vec2) 
[Met]    ComputeAABB(Output As B2AABB, Transform As B2Transform)    ' Computes the shape AABB based on the passed transform. The result is stored in the Output object.
[Met]    TestPoint(Transform As B2Transform, Point As B2Vec2) As Boolean    ' Test a point for containment in this shape. This only works for convex shapes.
 
 Transform - the shape world transform.
 Point - a point in world coordinates.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize(FromVec As B2Vec2, ToVec As B2Vec2) 

' === CLASE: B2ChainShape (anywheresoftware.b4a.objects.B2Shape.B2ChainShape) ===
[Prop:RW] Radius As Float    ' Gets or sets the radius of the underlying shape. This can refer to different things depending on the
 shape type.
[Prop:R] EdgeCount As Int    ' Returns the number of edges.
[Prop:R] ShapeType As Object    ' Returns the shape type which is one of the SHAPE constants.
[Met]    GetEdge(Index As Int, OutShape As B2EdgeShape)    ' Copies the edge to OutShape.
[Met]    ComputeAABB(Output As B2AABB, Transform As B2Transform)    ' Computes the shape AABB based on the passed transform. The result is stored in the Output object.
[Met]    CreateLoop(Vertices As List)    ' Create a loop. This automatically adjusts connectivity.
[Met]    CreateChain(Vertices As List)    ' Create a chain with isolated end vertices.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize() 
[Met]    TestPoint(Transform As B2Transform, Point As B2Vec2) As Boolean    ' Test a point for containment in this shape. This only works for convex shapes.
 
 Transform - the shape world transform.
 Point - a point in world coordinates.

' === CLASE: B2PolygonShape (anywheresoftware.b4a.objects.B2Shape.B2PolygonShape) ===
[Prop:RW] Radius As Float    ' Gets or sets the radius of the underlying shape. This can refer to different things depending on the
 shape type.
[Prop:R] VertexCount As Int    ' Returns the number of vertex.
[Prop:R] ShapeType As Object    ' Returns the shape type which is one of the SHAPE constants.
[Met]    SetAsBox2(HalfWidth As Float, HalfHeight As Float, Center As B2Vec2, Angle As Float)    ' Creates a box polygon.
HalfWidth / HalfHeight - Box dimensions.
Center - Box center in local coordinates.
Angle - Box rotation in local coordinates (radians).
[Met]    Set(B2Vecs As List)    ' Creates a convex polygon. Maximum number of vertices is 8.
[Met]    SetAsBox(HalfWidth As Float, HalfHeight As Float)    ' Creates a box polygon.
[Met]    ComputeAABB(Output As B2AABB, Transform As B2Transform)    ' Computes the shape AABB based on the passed transform. The result is stored in the Output object.
[Met]    IsInitialized() As Boolean 
[Met]    Initialize() 
[Met]    GetVertex(Index As Int) As B2Vec2    ' Gets the vertex at the given index.
[Met]    TestPoint(Transform As B2Transform, Point As B2Vec2) As Boolean    ' Test a point for containment in this shape. This only works for convex shapes.
 
 Transform - the shape world transform.
 Point - a point in world coordinates.

' === CLASE: B2Fixture (anywheresoftware.b4a.objects.B2Fixture) ===
[Prop:RW] Restitution As Float    ' The restitution (elasticity) usually in the range [0,1].
[Prop:R] Shape As ConcreteB2Shape    ' Get the child shape. You can modify the child shape, however you should not change the number
 of vertices because this will crash some collision caching mechanisms.
[Prop:RW] IsSensor As Boolean    ' A sensor shape collects contact information but never generates a collision response.
[Prop:RW] Friction As Float    ' The friction coefficient, usually in the range [0,1].
[Prop:R] IsInitialized As Boolean 
[Prop:R] Body As B2Body    ' Get the body that this fixture is attached to.
[Prop:RW] Density As Float    ' The density, usually in kg/m^2
[Met]    NextFixture() As B2Fixture    ' Returns the next fixture. Returns Null if this is the last fixture.
[Met]    SetFilterBits(CategoryBits As Int, MaskBits As Int)    ' Limited to lower 16 bits.
 CategoryBits - A bit (or more) that defines the current fixture. Default value: 1.
 MaskBits - Bits defining the other fixtures that will collide with this fixture. Default value 0xFFFF.

' === CLASE: B2FixtureDef (anywheresoftware.b4a.objects.B2Fixture.B2FixtureDef) ===
[Prop:RW] Restitution As Float    ' The restitution (elasticity) usually in the range [0,1].
[Prop:RW] Shape As ConcreteB2Shape    ' The shape, this must be set. The shape will be cloned when the fixture is created.
[Prop:RW] IsSensor As Boolean    ' A sensor shape collects contact information but never generates a collision response.
[Prop:RW] Friction As Float    ' The friction coefficient, usually in the range [0,1].
[Prop:RW] Density As Float    ' The density, usually in kg/m^2
[Met]    SetFilterBits(CategoryBits As Int, MaskBits As Int)    ' Limited to lower 16 bits.
 CategoryBits - A bit (or more) that defines the current fixture. Default value: 1.
 MaskBits - Bits defining the other fixtures that will collide with this fixture. Default value 0xFFFF.

' === CLASE: B2Contact (anywheresoftware.b4a.objects.B2Contact) ===
[Prop:RW] IsEnabled As Boolean    ' Enable/disable this contact. This can be used inside the pre-solve contact listener. The
 contact is only disabled for the current time step (or sub-step in continuous collisions).
[Prop:R] FixtureB As B2Fixture    ' Returns the second fixture.
[Prop:R] FixtureA As B2Fixture    ' Returns the first fixture. Note that the order of fixtures is not consistent.
[Prop:R] IsTouching As Boolean    ' Returns true if the two bodies are actually touching.
[Met]    NextContact() As B2Contact    ' Returns the next contact or Null if none. Should only be used with contacts accessed with World.FirstContact.
To avoid creating new objects the current object will point to the next contact.
[Met]    GetWorldManifold(OutManifold As B2WorldManifold)    ' Gets the world manifold.
[Met]    GetManifold() As B2Manifold    ' Gets the contact manifold.

' === CLASE: B2Body (anywheresoftware.b4a.objects.B2Body) ===
[Prop:RW] LinearVelocity As B2Vec2    ' Get or sets the linear velocity of the center of mass. Do not modify the returned vector.
[Prop:W] Bullet As Boolean 
[Prop:R] Position As B2Vec2    ' Get the world body origin position. Do not modify.
[Prop:R] IsBullet As Boolean    ' Is this body treated like a bullet for continuous collision detection?
[Prop:RW] LinearDamping As Float    ' Get or set the linear damping of the body.
[Prop:R] IsInitialized As Boolean 
[Prop:RW] BodyType As Object    ' Gets or sets the body type.
[Prop:RW] SleepingAllowed As Boolean    ' Get or set whether sleeping is allowed.
[Prop:RW] AngularDamping As Float    ' Get or set the angular damping of the body.
[Prop:RW] Awake As Boolean    ' Get or set the sleeping state of this body. A sleeping body has very low CPU cost.
[Prop:R] Mass As Float    ' Get the total mass of the body. Usually in kilograms (kg).
[Prop:R] IsColliding As Boolean    ' Returns true if the contact list is not empty. Note that the list includes non-touching contacts.
[Prop:R] Angle As Float    ' Get the angle in radians.
[Prop:R] FirstFixture As B2Fixture    ' Returns the first fixture.
[Prop:R] WorldCenter As B2Vec2    ' Get the world position of the center of mass. Do not modify.
[Prop:RW] GravityScale As Float    ' Gets or sets the gravity scale.
[Prop:R] Inertia As Float    ' Get the central rotational inertia of the body. Usually in kg-m^2
[Prop:RW] AngularVelocity As Float    ' Gets or sets the angular velocity. Measured in radians/second.
[Prop:RW] Tag As Object 
[Prop:R] Transform As B2Transform    ' Gets the body transformation.
[Prop:R] LocalCenter As B2Vec2    ' Get the local position of the center of mass. Do not modify.
[Prop:RW] FixedRotation As Boolean    ' Get or set whether this body have fixed rotation. Setting causes the mass to be reset.
[Met]    SetTransform(Position As B2Vec2, Angle As Float)    ' Set the position of the body's origin and rotation. This breaks any contacts and wakes the
 other bodies. Manipulating a body's transform may cause non-physical behavior. Note: contacts
 are updated on the next call to World.TimeStep().
 
Position - the world position of the body's local origin.
Angle - the world rotation in radians.
[Met]    GetLocalVector(WorldVector As B2Vec2) As B2Vec2    ' Gets a local vector given a world vector.
[Met]    GetContactList(TouchingOnly As Boolean) As List    ' Returns a list with the body contacts.
TouchingOnly - If False then the list will include non-touching collisions (based on the bodies AABBs).
[Met]    GetWorldPoint(LocalPoint As B2Vec2) As B2Vec2    ' Get the world coordinates of a point given the local coordinates.
 
 LocalPoint - a point on the body measured relative the the body's origin.
[Met]    GetLocalPoint(WorldPoint As B2Vec2) As B2Vec2    ' Gets a local point relative to the body's origin given a world point.
[Met]    ApplyTorque(Torque As Float)    ' Apply a torque. This affects the angular velocity without affecting the linear velocity of the
 center of mass. This wakes up the body.
 
 Torque - about the z-axis (out of the screen), usually in N-m.
[Met]    DestroyFixture(Fixture As B2Fixture)    ' Destroy a fixture. This removes the fixture from the broad-phase and destroys all contacts
 associated with this fixture. This will automatically adjust the mass of the body if the body
 is dynamic and the fixture has positive density. All fixtures attached to a body are implicitly
 destroyed when the body is destroyed.
 
This function is locked during callbacks.
[Met]    CreateFixture2(Shape As Shape, Density As Float) As B2Fixture    ' Creates a fixture from a shape and attach it to this body. This is a convenience function. Use
 FixtureDef if you need to set parameters like friction, restitution, user data, or filtering.
 If the density is non-zero, this function automatically updates the mass of the body.
 
 Shape - The fixture shape. Do not reuse this shape!
 Density - the shape density (set to zero for static bodies).
 This function is locked during callbacks.
[Met]    ApplyLinearImpulse(Impulse As B2Vec2, Point As B2Vec2)    ' Apply an impulse at a point. This immediately modifies the velocity. It also modifies the
 angular velocity if the point of application is not at the center of mass. This wakes up the
 body.
 
 Impulse - the world impulse vector, usually in N-seconds or kg-m/s.
 Point - the world position of the point of application.
 Wake - also wake up the body
[Met]    CreateFixture(FixtureDef As B2FixtureDef) As B2Fixture    ' Creates a fixture and attach it to this body. Use this function if you need to set some fixture
 parameters, like friction. Otherwise you can create the fixture directly from a shape with CreateFixture2. If the
 density is non-zero, this function automatically updates the mass of the body. Contacts are not
 created until the next time step.
 This function is locked during callbacks.
[Met]    ApplyForceToCenter(Force As B2Vec2)    ' Apply a force to the center of mass. This wakes up the body.
 
 Force - the world force vector, usually in Newtons (N).
[Met]    GetWorldVector(LocalVector As B2Vec2) As B2Vec2    ' Get the world coordinates of a vector given the local coordinates.
 
 LocalVector - a vector fixed in the body.
[Met]    ApplyAngularImpulse(Impulse As Float)    ' Apply an angular impulse.
 
Impulse - the angular impulse in units of kg*m*m/s
[Met]    ApplyForce(Force As B2Vec2, Point As B2Vec2)    ' Apply a force at a world point. If the force is not applied at the center of mass, it will
 generate a torque and affect the angular velocity. This wakes up the body.
 
 Force - the world force vector, usually in Newtons (N).
 Point - the world position of the point of application.

' === CLASE: B2BodyDef (anywheresoftware.b4a.objects.B2Body.B2BodyDef) ===
[Prop:RW] LinearVelocity As B2Vec2    ' The linear velocity of the body in world co-ordinates.
[Prop:RW] Bullet As Boolean    ' Is this a fast moving body that should be prevented from tunneling through other moving bodies?
 Note that all bodies are prevented from tunneling through kinematic and static bodies. This
 setting is only considered on dynamic bodies.
 
 You should use this flag sparingly since it increases processing time.
[Prop:RW] AllowSleep As Boolean    ' Set this flag to false if this body should never fall asleep. Note that this increases CPU
 usage.
[Prop:RW] Position As B2Vec2    ' The world position of the body. Avoid creating bodies at the origin since this can lead to many
 overlapping shapes.
[Prop:RW] LinearDamping As Float    ' Linear damping is use to reduce the linear velocity. The damping parameter can be larger than
 1.0f but the damping effect becomes sensitive to the time step when the damping parameter is
 large.
[Prop:RW] BodyType As Object    ' Get or set the body type.
[Prop:RW] AngularDamping As Float    ' Angular damping is use to reduce the angular velocity. The damping parameter can be larger than
 1.0f but the damping effect becomes sensitive to the time step when the damping parameter is
 large.
[Prop:RW] Awake As Boolean    ' Is this body initially sleeping?
[Prop:RW] Active As Boolean    ' Does this body start out active?
[Prop:RW] Angle As Float    ' The world angle of the body in radians.
[Prop:RW] GravityScale As Float    ' Experimental: scales the inertia tensor.
[Prop:RW] AngularVelocity As Float    ' The angular velocity of the body.
[Prop:RW] FixedRotation As Boolean    ' Should this body be prevented from rotating? Useful for characters.

' === CLASE: B2AABB (anywheresoftware.b4a.objects.B2AABB) ===
[Prop:R] Center As B2Vec2 
[Prop:R] BottomLeft As B2Vec2    ' Returns the bottom left point. You can modify it.
[Prop:R] Height As Float 
[Prop:R] TopRight As B2Vec2    ' Returns the top right point. You can modify it.
[Prop:R] Width As Float 
[Met]    TestOverlap(Other As B2AABB) As Boolean    ' Returns true if this AABB overlaps the Other AABB.
[Met]    Initialize2(BottomLeft As B2Vec2, TopRight As B2Vec2) 
[Met]    Combine(Other As B2AABB)    ' Combine this AABB with the Other AABB.
[Met]    Contains(Other As B2AABB) As Boolean    ' Returns true if this AABB contains the Other AABB.
[Met]    Initialize() 

' === CLASE: B2WheelJoint (anywheresoftware.b4a.objects.joints.B2WheelJoint) ===
[Prop:R] AnchorA As B2Vec2    ' Gets the anchor point of BodyA in world coordinates.
[Prop:RW] DampingRatio As Float 
[Prop:R] AnchorB As B2Vec2    ' Gets the anchor point of BodyB in world coordinates.
[Prop:R] LocalAnchorA As B2Vec2 
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:R] LocalAnchorB As B2Vec2 
[Prop:R] IsInitialized As Boolean 
[Prop:RW] MaxMotorTorque As Float    ' Gets or sets the maximum motor torque, usually in N-m.
[Prop:RW] MotorEnabled As Boolean    ' Gets or sets whether the motor is enabled.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] JointSpeed As Float    ' Gets the current joint speed in radians per second.
[Prop:R] JointType As Object 
[Prop:RW] MotorSpeed As Float    ' Gets or sets the motor speed in radians per second.
[Prop:RW] FrequencyHz As Float 
[Met]    NextJoint() As B2Joint    ' Returns the next joint. Returns Null if this is the last joint.

' === CLASE: B2WheelJointDef (anywheresoftware.b4a.objects.joints.B2WheelJoint.B2WheelJointDef) ===
[Prop:RW] DampingRatio As Float    ' Suspension damping ratio, one indicates critical damping.
[Prop:RW] MotorEnabled As Boolean    ' Gets or sets whether the motor is enabled.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:RW] CollideConnected As Boolean    ' Gets or sets whether the attached bodies can collide.
[Prop:RW] MaxMotorTorque As Float    ' Gets or sets the maximum motor torque, usually in N-m.
[Prop:RW] MotorSpeed As Float    ' Gets or sets the motor speed in radians per second.
[Prop:RW] FrequencyHz As Float    ' Suspension frequency, zero indicates no suspension.
[Met]    Initialize(BodyA As B2Body, BodyB As B2Body, AnchorPoint As B2Vec2, Axis As B2Vec2)    ' Sets the bodies and the anchor based on the current positions.

' === CLASE: B2WeldJoint (anywheresoftware.b4a.objects.joints.B2WeldJoint) ===
[Prop:R] AnchorA As B2Vec2    ' Gets the anchor point of BodyA in world coordinates.
[Prop:R] AnchorB As B2Vec2    ' Gets the anchor point of BodyB in world coordinates.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:R] IsInitialized As Boolean 
[Prop:R] JointType As Object 
[Met]    NextJoint() As B2Joint    ' Returns the next joint. Returns Null if this is the last joint.

' === CLASE: B2WeldJointDef (anywheresoftware.b4a.objects.joints.B2WeldJoint.B2WeldJointDef) ===
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:RW] CollideConnected As Boolean    ' Gets or sets whether the attached bodies can collide.
[Met]    Initialize(BodyA As B2Body, BodyB As B2Body, AnchorPoint As B2Vec2)    ' Sets the bodies and the anchor based on the current positions.

' === CLASE: B2RopeJoint (anywheresoftware.b4a.objects.joints.B2RopeJoint) ===
[Prop:R] AnchorA As B2Vec2    ' Gets the anchor point of BodyA in world coordinates.
[Prop:R] AnchorB As B2Vec2    ' Gets the anchor point of BodyB in world coordinates.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:R] IsInitialized As Boolean 
[Prop:RW] MaxLength As Float    ' Gets or sets the rope maximum length.
[Prop:R] JointType As Object 
[Met]    NextJoint() As B2Joint    ' Returns the next joint. Returns Null if this is the last joint.

' === CLASE: B2RopeJointDef (anywheresoftware.b4a.objects.joints.B2RopeJoint.B2RopeJointDef) ===
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:RW] CollideConnected As Boolean    ' Gets or sets whether the attached bodies can collide.
[Met]    Initialize(BodyA As B2Body, BodyB As B2Body, LocalPointA As B2Vec2, LocalPointB As B2Vec2, MaxLength As Float)    ' Sets the bodies and the local connections points.

' === CLASE: B2RevoluteJoint (anywheresoftware.b4a.objects.joints.B2RevoluteJoint) ===
[Prop:R] JointAngle As Float    ' Gets the current joint angle in radians.
[Prop:R] AnchorA As B2Vec2    ' Gets the anchor point of BodyA in world coordinates.
[Prop:R] AnchorB As B2Vec2    ' Gets the anchor point of BodyB in world coordinates.
[Prop:R] LocalAnchorA As B2Vec2 
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:R] LocalAnchorB As B2Vec2 
[Prop:R] IsInitialized As Boolean 
[Prop:RW] MaxMotorTorque As Float    ' Gets or sets the maximum motor torque, usually in N-m.
[Prop:R] UpperLimit As Float    ' Gets the upper limit in radians.
[Prop:RW] MotorEnabled As Boolean    ' Gets or sets whether the motor is enabled.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:RW] LimitEnabled As Boolean    ' Gets or sets whether the limits are enabled.
[Prop:R] LowerLimit As Float    ' Gets the lower limit in radians.
[Prop:R] JointSpeed As Float    ' Gets the current joint speed in radians per second.
[Prop:R] JointType As Object 
[Prop:RW] MotorSpeed As Float    ' Gets or sets the motor speed in radians per second.
[Met]    NextJoint() As B2Joint    ' Returns the next joint. Returns Null if this is the last joint.
[Met]    SetLimits(LowerLimit As Float, UpperLimit As Float)    ' Sets the lower and upper limits measured in radians.

' === CLASE: B2RevoluteJointDef (anywheresoftware.b4a.objects.joints.B2RevoluteJoint.B2RevoluteJointDef) ===
[Prop:RW] MotorEnabled As Boolean    ' Gets or sets whether the motor is enabled.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:RW] LimitEnabled As Boolean    ' Gets or sets whether the limits are enabled.
[Prop:R] LowerLimit As Float    ' Gets the lower limit in radians.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:RW] CollideConnected As Boolean    ' Gets or sets whether the attached bodies can collide.
[Prop:RW] MaxMotorTorque As Float    ' Gets or sets the maximum motor torque, usually in N-m.
[Prop:R] UpperLimit As Float    ' Gets the upper limit in radians.
[Prop:RW] MotorSpeed As Float    ' Gets or sets the motor speed in radians per second.
[Met]    Initialize(BodyA As B2Body, BodyB As B2Body, AnchorPoint As B2Vec2)    ' Sets the bodies and the anchor based on the current positions.
[Met]    SetLimits(LowerLimit As Float, UpperLimit As Float)    ' Sets the lower and upper limits measured in radians.

' === CLASE: B2PrismaticJoint (anywheresoftware.b4a.objects.joints.B2PrismaticJoint) ===
[Prop:R] AnchorA As B2Vec2    ' Gets the anchor point of BodyA in world coordinates.
[Prop:R] JointTranslation As Float    ' Gets the current joint translation in meters.
[Prop:R] AnchorB As B2Vec2    ' Gets the anchor point of BodyB in world coordinates.
[Prop:R] LocalAnchorA As B2Vec2 
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:R] LocalAnchorB As B2Vec2 
[Prop:R] IsInitialized As Boolean 
[Prop:R] UpperLimit As Float    ' Gets the upper limit in meters.
[Prop:RW] MotorEnabled As Boolean    ' Gets or sets whether the motor is enabled.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:RW] LimitEnabled As Boolean    ' Gets or sets whether the limits are enabled.
[Prop:RW] MaxMotorForce As Float    ' Gets or sets the maximum motor force, usually in N-m.
[Prop:R] LowerLimit As Float    ' Gets the lower limit in meters.
[Prop:R] JointSpeed As Float    ' Gets the current joint speed in meters per second.
[Prop:R] JointType As Object 
[Prop:RW] MotorSpeed As Float    ' Gets or sets the motor speed in meters per second.
[Met]    NextJoint() As B2Joint    ' Returns the next joint. Returns Null if this is the last joint.
[Met]    SetLimits(LowerLimit As Float, UpperLimit As Float)    ' Sets the lower and upper limits measured in meters.

' === CLASE: B2PrismaticJointDef (anywheresoftware.b4a.objects.joints.B2PrismaticJoint.B2PrismaticJointDef) ===
[Prop:RW] MotorEnabled As Boolean    ' Gets or sets whether the motor is enabled.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:RW] LimitEnabled As Boolean    ' Gets or sets whether the limits are enabled.
[Prop:RW] MaxMotorForce As Float    ' Gets or sets the maximum motor force, usually in N-m.
[Prop:R] LowerLimit As Float    ' Gets the lower limit in meters.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:RW] CollideConnected As Boolean    ' Gets or sets whether the attached bodies can collide.
[Prop:R] UpperLimit As Float    ' Gets the upper limit in meters.
[Prop:RW] MotorSpeed As Float    ' Gets or sets the motor speed in radians per second.
[Met]    Initialize(BodyA As B2Body, BodyB As B2Body, AnchorPoint As B2Vec2, Axis As B2Vec2)    ' Sets the bodies and the anchor based on the current positions.
[Met]    SetLimits(LowerLimit As Float, UpperLimit As Float)    ' Sets the lower and upper limits measured in meters.

' === CLASE: B2MotorJoint (anywheresoftware.b4a.objects.joints.B2MotorJoint) ===
[Prop:R] AnchorA As B2Vec2    ' Gets the anchor point of BodyA in world coordinates.
[Prop:R] AnchorB As B2Vec2    ' Gets the anchor point of BodyB in world coordinates.
[Prop:RW] AngularOffset As Float    ' Gets or sets the target angular offset of BodyB relative to BodyA.
[Prop:RW] LinearOffset As B2Vec2    ' Gets or sets the target linear offset of BodyB relative to BodyA.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:RW] MaxMotorForce As Float    ' Gets or sets the maximum motor force, usually in N-m.
[Prop:RW] CorrectionFactor As Float    ' Gets or sets the position correction factor [0, 1].
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:R] IsInitialized As Boolean 
[Prop:R] JointType As Object 
[Prop:RW] MaxMotorTorque As Float    ' Gets or sets the maximum motor torque, usually in N-m.
[Met]    NextJoint() As B2Joint    ' Returns the next joint. Returns Null if this is the last joint.

' === CLASE: B2MotorJointDef (anywheresoftware.b4a.objects.joints.B2MotorJoint.B2MotorJointDef) ===
[Prop:RW] AngularOffset As Float    ' Gets or sets the angular offset of BodyB relative to BodyA.
[Prop:RW] LinearOffset As B2Vec2    ' Gets or sets the linear offset of BodyB relative to BodyA.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:RW] MaxMotorForce As Float    ' Gets or sets the maximum motor force, usually in N-m.
[Prop:RW] CorrectionFactor As Float    ' Gets or sets the position correction factor [0, 1].
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:RW] CollideConnected As Boolean    ' Gets or sets whether the attached bodies can collide.
[Prop:RW] MaxMotorTorque As Float    ' Gets or sets the maximum motor torque, usually in N-m.
[Met]    Initialize(BodyA As B2Body, BodyB As B2Body)    ' Sets the bodies. BodyB moves relatively to BodyA.

' === CLASE: B2Joint (anywheresoftware.b4a.objects.joints.B2Joint) ===
[Prop:R] AnchorA As B2Vec2    ' Gets the anchor point of BodyA in world coordinates.
[Prop:R] AnchorB As B2Vec2    ' Gets the anchor point of BodyB in world coordinates.
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:R] IsInitialized As Boolean 
[Prop:R] JointType As Object 
[Met]    NextJoint() As B2Joint    ' Returns the next joint. Returns Null if this is the last joint.

' === CLASE: B2JointDef (anywheresoftware.b4a.objects.joints.B2Joint.B2JointDef) ===
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:RW] CollideConnected As Boolean    ' Gets or sets whether the attached bodies can collide.

' === CLASE: B2DistanceJoint (anywheresoftware.b4a.objects.joints.B2DistanceJoint) ===
[Prop:R] AnchorA As B2Vec2    ' Gets the anchor point of BodyA in world coordinates.
[Prop:RW] DampingRatio As Float 
[Prop:R] AnchorB As B2Vec2    ' Gets the anchor point of BodyB in world coordinates.
[Prop:RW] Length As Float 
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:R] IsInitialized As Boolean 
[Prop:R] JointType As Object 
[Prop:RW] FrequencyHz As Float 
[Met]    NextJoint() As B2Joint    ' Returns the next joint. Returns Null if this is the last joint.

' === CLASE: B2DistanceJointDef (anywheresoftware.b4a.objects.joints.B2DistanceJoint.B2DistanceJointDef) ===
[Prop:RW] DampingRatio As Float    ' Spring damping ratio, one indicates critical damping.
[Prop:RW] Length As Float 
[Prop:R] BodyB As B2Body    ' Gets the second attached body.
[Prop:R] BodyA As B2Body    ' Gets the first attached body.
[Prop:RW] CollideConnected As Boolean    ' Gets or sets whether the attached bodies can collide.
[Prop:RW] FrequencyHz As Float    ' Spring frequency, zero indicates no suspension.
[Met]    Initialize(BodyA As B2Body, BodyB As B2Body, WorldPointA As B2Vec2, WorldPointB As B2Vec2)    ' Sets the bodies and the Connection points.
