Tabla de Contenidos i
B4A en Español
Desarrollo Rápido de App utilizando BASIC
Por Wyken Seagrave
Traducción de Javier Párraga González
Publicado por Penny Press, 176 Greendale Road, Coventry,
CV5 8AY, United Kingdom
ISBN 9781871281453 (ebook)
9781719029940 (Libro)
9781871281460 (edición rústica)
Tabla de Contenido
Tabla de Contenido
Prólogo de Erel Uziel
Prólogo Introducción Para quien es este libro
Para el Principiante Para el Profesional
Cómo está organizado este libro Convenciones usadas en este libro
Código Descripción de los Menús Especificando Argumentos de Funciones Acrónimos
Recursos Actualizaciones gratuitas Boletín Informativo Quisiéramos conocer tu opinión Sobre el Autor Agradecimientos
Parte 1: Conceptos Básicos
1.1 Primeros pasos Versiones
Versión de B4A Versión de Android Dos Versiones
Que se necesita para ejecutar B4A Instalando la Versión de Evaluación
Descarga de la version de evaluación de B4A Instalando y ejecutando la version de evaluación
Lo que se puede ver Tu primera App
Cómo agregar tu primer comando Depuración
Legado versus Depurador Rápido Puntos de interrupción (Breakpoints) Salvar el programa
B4A-Bridge Instalar B4A-Bridge en tu dispositivo Ejecutar B4A-Bridge en tu dispositivo
Tabla de Contenidos ii
Notas sobre la conexión inalámbrica B4A-Bridge Código fuente
Conecta el IDE al dispositivo o al Emulador Cambio de Conexión Conectar vía [Herramientas > B4A-Bridge] Barra de estado de B4A-Bridge Modo de Compilación Remota Diseñador B4A Detener B4A-Bridge
Compilar tu nueva App Compilación Remota Aprobar la App en su dispositivo Punto de interrupción (Breakpoint) Ventana de Depuración Evaluación emergente de Variables Continuando con la ejecución Eventos de Logs Rotando el dispositivo Más sobre la Depuración
Tu segunda App: Usando el Diseñador Conceptos sobre View (Vistas) y Layout (Diseños) Ejecutando el Diseñador Conecte el Diseñador a su dispositivo. Agregar un botón Configurar su botón Generar Miembros Añadir el Código para el Botón Agregar código al botón Carga del Layout (Diseño) Ejecuta tu App
Tu tercera App Detener B4A-Bridge Más sobre el Diseñador
1.2 Entorno de Desarrollo Integrado Iconos Selector de Iconos
Interfaz Selector de Icono Usar el Selector de Icono en el área de código Usar el Selector de Icono dentro del diseñador
Menú Archivo Menú Editar Diseñador Menú Proyecto
Módulos Opciones de Paquete (Package) Opciones de Compilación
Menú Harramientas Submenú opciones del IDE
Menú Depurar Menú Ventanas Menú Ayuda Barra de Herramientas (Toolbar) Pestañas de Módulos
Cerrando un Módulo Menú Emergente en Pestaña del Módulo
Área de Código Lista Desplegable de Subrutina (función) Control de Zoom Divisor del Editor de Código Código
Tabla de Contenidos iii
Revisión Codificación de Color Regiones Encabezado del código
Comentar y Descomentar código
Sangría Autocompletado Autocompletado de subrutinas de eventos Comentarios como Documentación Completado de Bloques Menú Contextual Destacando las apariciones de palabras Adecuación de la estructura del código URLs que permiten Clic
Área del menu Ventanas Pestañas de las Ventanas
Administrador de Librerías
Administrador de Archivos
Ventana de Módulos
Ventana Logs
Buscar todas las Referencias (F7)
Búsqueda Rápida El Motor de Advertencias
Ignorando Advertencias Las Advertencias
Archivo de Metadatos del IDE
1.3 Acoplamiento Menús de Ventana
Menú del Módulo Menú de Ventana
Flotante Grupos de Pestañas
Grupo de Pestañas Horizontal Grupo de Pestañas Vertical
Acoplar Arrastrar Ventanas Acoplar un Módulo Acoplar Ventanas Mover un Grupo de Pestañas Acoplar Ventanas Ocultar Automaticamente (Auto Hide)
Diseñador Visual Restaurando todas las Ventanas
1.4 Actualizar a la version completa Sobre las Versiones Completas
Versión Estándar de B4A Versión Empresarial de B4A Licencia de grupo de B4A Licencias Académicas Compra Registrando B4A
Instalación de Java JDK y Android SDK Comprobar si Java JDK ya está instalado Instalar el Java JDK de 32 bit Instalar el SDK de Android y una plataforma
Instalar y configurar B4A Descargar e instalar B4A Abrir B4A Licencia
Tabla de Contenidos iv
Configurar Rutas Javac.exe Android.jar Librerías Adicionales Carpeta de Módulos Compartidos
Actualizando a una nueva versión
Parte 2: Creando su App
2.1 El Proyecto Módulos Módulo Main de Actividad principal Servicio Starter Atributos
Sección Atributos del Proyecto #AdditionalRes: Location, Package (opcional) #ApplicationLabel: #BridgeLogger: True #CanInstallToExternalStorage: #CustomBuildAction: Step, Command, Arguments #DebuggerDisableOptimizations: Value #DebuggerForceFullDeployment: #DebuggerForceStandardAssets: #ExcludeClasses: Value List #MultiDex: True #SignKeyAlias: #SignKeyFile: #SignKeyPassword: #SupportedOrientations: Value #VersionCode: Value #VersionName: Name
Atributos de compilación de Librería Icono del Proyecto Nombre del paquete
Nombre Único Caracteres Permitidos URL de Google Play Precaución: el Nombre no se puede cambiar
El Manifest Editor de Manifest Evitar los caracteres de final de cadena Comandos Manifest minSdkVersion android:targetSdkVersion Comandos Condicionales del Manifest #Region and #End Region Macros del Editor de Manifest Más información
2.2. Diseñando su App Satisfacer Deseos y Necesidades Versiones de Android
Popularidad de las versiones Android La Pantalla de Android
Barra de Estado (Status Bar) Barra de Navegación (Navigation Bar) Notificaciones
Diseño de Apps paso a paso Principios básicos de Diseño Barra de Título (Title Bar) Action Bar (o App Bar) Menú
Tabla de Contenidos v
Vistas con Pestañas Páginas Deslizantes Navigation Drawer (Menú lateral deslizante) Animando su App Publicidad Temas Android Más Consejos
Administración de Configuraciones Editición de Ajustes Guardar y recuperar configuraciones
Pantallas y Layouts (Diseños) El Diseñador
Múltiples actividades (Activities) Retornando de una Actividad
Vistas superpuestas (Overlays) Menú Superpuesto Diseño Superpuesto (Layout)
Como detectar el tamaño de la pantalla LayoutValues
Detectando la Orientación del Dispositivo Orientación de Pantalla Permitida Añadir vistas por código
Ejemplo dips
DipToCurrent(Length as Int) Porcentaje de una Actividad
¿El dispositivo tiene teclado? ¿App o Widget ? Gestión de Permisos
Antes de Android 23 Permisos en Tiempo de Ejecución
2.3 Comunicación con el Usuario Diálogos
Diálogos Asíncronos Diálogos Modales
ToastMessageShow Alarmas Notificaciones Diálogo de Progreso Barra de Progreso
2.4 El Diseñador Visual Diseños (Layouts) Ventanas de Acoplamiento Menú Archivo
Nuevo Abrir Salvar (Ctrl+S) Guardar Como… Eliminar Diseño
Menú Añadir Vista Menú WYSIWYG del Diseñador
Conectar (F2) Disconectar (Shift+F2)
Menú Herramientas Generar Miembros Cambiar Rejilla Enviar a UI Cloud (F6)
Menú Ventanas Ventana Propiedades Ventana Variantes
Tabla de Contenidos vi
Ventana Archivos Ventana de Código Árbol de vistas Reiniciar
El Diseñador Abstracto Coincidir Variante Elegida Controles de Vista Menús de contexto Selección de vistas
Código del Diseñador Añadir vistas en código
2.5 Referencia de código del diseñador En Segundo plano (Background)
Scripts del Diseñador y Código de Actividad Ejecutando Código (Scripts)
Conceptos Clave Pixel Resolución dpi : dots per inch (puntos por pulgada) Tamaño de Pantalla Dip Tamaño del Texto Pantalla Estándar Escala Estrategía de Acople y Relleno
Conceptos básicos de código del diseñador Seleccionando Variantes
Lenguaje de Script Variables %x and %y
Propiedades dentro de Scripts Advertencia: Configure las propiedades internas antes de las externas Propiedades del Texto Otras Propiedades
Métodos Otras palabras clave Métodos de Actividad
Activity.RerunDesignerScript (LayoutFile As String, Width As Int, Height As Int) AutoScale: Diseños para diferentes tamaños de dispositivos
Como funciona AutoScale Como ver el efecto del AutoScale Cómo ver el efecto de AutoScale en el tamaño del texto Cómo usar AutoScale AutoScaleRate(rate) AutoScaleAll AutoScale(View)
Diferentes Diseños para Vertical y Horizontal Estrategia de escalado Edición de vistas en un programa
2.6 Compilación, Depuración y Pruebas Compilación Versión de Android Configuración de Compilación
Definición de Configuración de Compilación Lista de Configuración de Compilacion Compilación Condicional
Modos de Compilación Modo Depuración Modo Release Release (obfuscated)
Tabla de Contenidos vii
Compilación Condicional Compilador de Línea de Comandos
Ejecutar desde archivos de lote (Batch Files) Depuración
#ExcludeFromDebugger Attribute Reiniciar (F11) Depurador Rápido
Limitaciones del Depurador Rápido Como funciona el Depurador Rápido Edición de código utilizando el Depurador Rápido
Depuración Legado Breakpoints (Puntos de Interrupción)
Limitaciones del Breakpoint Control del Depurador
Ventana Depurar Pila de LLamadas Lista de Variables Observar Consulta Flotante
Registro (Logging) Registro con B4A-Bridge en el modo de distribución (Release)
Compilando para Material Design Tema Holo Temas Material en el Diseñador WYSIWYG Designer
Probando tu aplicación Conectando el Depurador al Dispositivo o al Emulador
Canales de comunicación para Depuración Abrir el Canal
B4A-Bridge Depuración USB
Conexión del dispositivo vía USB Android Debug Bridge Depuración con USB
El Emulador o el Administrador de Dispositivos Virtuales de Android (AVD) Introducción Como interactúa B4A con los dispositivos emulados
Utilizando el Android Virtual Device Manager No hay pestañas disponibles Android Virtual Devices (AVDs)
Creando un AVD AVD Name (Requerido) Device (Requerido) Target (Requerido) CPU / ABI (Requerido) Keyboard (Teclado) Skin (Requerido) Front / Back Camera (Cámara Delantera / Trasera) Memory Options (Opciones de Memoria) Internal Storage (Almacenamiento Interno) SD Card (Tarjeta SD) Emulation Options (Opciones de emulación)
Creación de un Device Definition (Definición de Dispositivo) Ejecución de Dispositivo Virtual y ajuste de escala para la Emulación de Tamaño Real
Sin Escalado Escala a tamaño real
Interacción con su Dispositivo Virtual Abreviaturas de teclado para PC Abreviaturas de teclado para el Mac Intercambio de archivos con el PC Solucionar problemas de conexión
Tabla de Contenidos viii
2.7 Gráficos y Dibujos Métodos de Dibujado Configuración de fondos de Vistas de Actividad
Vistas Dibujables (Drawables) Bitmaps (Mapa de bits) Drawables (Dibujables) Propiedad del fondo ColorDrawable GradientDrawable BitmapDrawable Código de ejemplo StateListDrawable NinePatchDrawable
Objeto Canvas (Lienzo) Inicializando un Lienzo Dibujando sobre un Lienzo Importar un archivo Bitmap en el Lienzo Copiar un Dibujable en un Lienzo Haciendo que el lienzo se dibuje Restricción del Área de Dibujo
Las funciones más communes del Lienzo DrawBitmap (Bitmap1 As Bitmap, SrcRect As Rect, DestRect As Rect) DrawBitmapRotated (Bitmap1 As Bitmap, SrcRect As Rect, DestRect As Rect, Degrees As Float) DrawCircle (x As Float, y As Float, Radius As Float, Color As Int, Filled As Boolean, StrokeWidth As
Float) DrawColor (Color As Int) DrawLine (x1 As Float, y1 As Float, x2 As Float, y2 As Float, Color As Int, StrokeWidth As Float) DrawRect (Rect1 As Rect, Color As Int, Filled As Boolean, StrokeWidth As Float) DrawRectRotated (Rect1 As Rect, Color As Int, Filled As Boolean, StrokeWidth As Float, Degrees As
Float) DrawText (Text As String, x As Float, y As Float, Typeface1 As Typeface, TextSize As Float, Color As
Int, Align1 As Align) 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) Programa de Ejemplo Ejemplos más complejos
Animación de Mapas de bits Diagramas / Gráficas Framework de Gráficas Errores de falta de Memoria
2.8 Bases de Datos Almacenamiento de Datos Fundamentos de Base de Datos
Base de Datos (Database) Tabla Registro Campo Clave Primaria Tipo de Campo Datos Relacionales Archivos de Bases de Datos Librería KeyValueStore2 Cifrado de Bases de Datos Mostrando tablas al usuario
Administración de Bases de Datos Herramientas del SGBD SQLiteBrowser SQLiteSpy Apps SGBD
El Objeto SQL
Tabla de Contenidos ix
Declarar el Onjeto SQL Inicializar el Objeto SQL
DBUtils Fundamentos de DBUtils Pasos Preliminares SQL Tipos de Campos DBUtils Funciones DBUtils Programa DBUtils de ejemplo
SQLite SQL SQLite Mas Información sobre SQLite Ejemplo de Programa con SQLite Tipado Dinámico SQLiteExceptions Librería SQL
Comandos SQLite Creación de Base de Datos Creación de Tablas Eliminar una Table Añadiendo registros Actualización de registros Consulta de datos Borrando datos Renombrar una tabla Añadiendo un campo Usando SQLite para convertir Ticks a Cadenas de Caracteres
Implementando relaciones en una Base de Datos
2.9 Módulos Procesos
¿Cuándo mata un proceso Android? Crear o Añadir Módulos Módulos Compartidos Atributos de Módulo
#AdditionalJar #ExcludeFromLibrary
Visibilidad y Vida Útil de las Variables y Subs Resumen Variables Públicas Variables Privadas Variables dentro de Subs Visibilidad de las Subrutinas Variables Globales en Módulo Actividad Class_Globals Variables Locales en Subs
Documentación de Módulos Documentando una Clase Documentando un Módulo de Servicio, Actividad o Código
Sub Process_Globals Módulos que Contienen Process_Globals Variables Process_Globals Inicialización de Process_Globals Duración de las variables Process_Globals Process_Globals en el Servicio Starter Restricción de Variables en Process_Globals Rotar el Dispositivo Como accede a Variables Process_Globals
Módulo de Actividad (Activity) El Concepto de Actividad Módulo Actividad
Tabla de Contenidos x
Atributos de la Actividad Variables dentro de una Actividad Ciclo de Vida de una Actividad Eventos de la Actividad Sub Activity_Create (FirstTime As Boolean) Sub Activity_Resume Sub Activity_Pause (UserClosed As Boolean) StartActivity (Activity As Object) Activity.Finish vs ExitApplication Crear un Menú Actividades vs Formularios Windows Múltiples Módulos de Actividad
Módulo de Clase ¿Qué es una Clase? Beneficios de las Clases Ejemplo Sub Class_Globals Variables Públicas vs Privadas Subs Públicos vs Privados Clases vs Tipos Clases vs Módulos de Código Añadir un Módulo de Clase Estructuras de Clases Polimorfismo Auto-Referencia Clases y el Objeto Actividad Actividades que extienden las clases Limitaciones de las Clases
Módulo de Código Módulo de Servicio
Por qué usar un servicio Como interactúa el usuario con un Servicio Alternativa a una Actividad El Servicio Starter Los Servicios vistos por Android Como iniciar un Servicio Iniciar un servicio mientras la App está en segundo plano Cuándo Terminan los Servicios Wake Lock (bloqueo de activación) Código de Servicio Atributos de los Servicios SubRoutines (Subrutinas) Cuando Usar un Servicio Notificaciones Accediendo a otros módulos Ejemplos de Proyectos Usando Servicios
2.10 Publicando y Monetizando su App Ayuda al Usuario Branding and Marketing (estrategia de marca y comercialización) Configurando los Parámetros del Proyecto
Nombre del Paquete Atributos del Proyecto
Configuración de Iconos Icono de Google Play Store Icono de Inicio [Proyecto > Elegir Icono] Iconos Action Bar Crear Iconos Fuentes de Iconos Implementando MipMap
Tabla de Contenidos xi
Recomendaciones para iconos de Notificación Medidas de los Iconos Instalación de Iconos
Generando su APK Archivo APK Claves y Certificados Firma Certificados de Depuración La Firma para Distribución Creación o Carga de una Clave Privada El Depósito de Claves (KeyStore) Compilando el APK Huella digital del certificado SHA1
Monetizando su App Formas de Monetizar su App
Librerías de soporte a la Publicidad AdMob AdBuddiz AdiQuity TapForTap AppLovin
Vender su App Facturación In-App Licencias
Registrarse como Desarrollador en Google Play Como registrarse como un Desarrollador en Google Play Cuenta de Vendedor
Prepare la página de inicio de su App en Google Play Apoyo al Usuario Consola de desarrollador de Google Play Subir su App a Google Play
Distribuir Apps por otros canales Preparación del dispositivo del usuario Amazon Appstore Por Correo Electrónico Descarga desde un sitio web Otros publicadores de Apps
2.11 Obtener más ayuda Anywhere Software Foro Sala de Chat Video Tutoriales Tutoriales en Línea Facebook Twitter Linked In Documentación en Línea Guías en PDF Explorador de Librerías
B4a Object Browser B4AHelp
Parte 3: Lenguaje y Objetos básicos de B4A
3.1 El Lenguaje de B4A BASIC B4A
Reglas del Léxico Separador de declaraciones Comentarios Dividir líneas muy largas
Tabla de Contenidos xii
Variables Constantes Tipos
Tipos Primitivos Literales Hexadecimales Tipos No-Primitivos Tipos Básicos Pasar por Referencia los tipos No-Primitivos Conversión de Tipos Rank Creando sus propios Tipos
Objectos Inicializació de Objetos
Declaración de Variables Sentencia Dim No Opción Explicita Avisos del editor sobre variables no declaradas Asignación de Valores Verificación de Tipo Uso de Variables no asignadas Pasar por Valor Pasar por Referencia
Nombres de Variables Notación Hungará
Arrays (Matrices) Dimensiones Declarando un Array Tipo por Defecto No se puede cambiar las dimensiones Guardando y Recuperando Datos Rellenar un array utilizando la palabra clave Array Tamaño de un Array Arrays de Objetos Las Dimensiones del Array son Fijas
Lists (Listas) Maps (Mapas) Type. Definir tipos de variables
Declaración de Tipos Tipos Recursivos
Casting Visibilidad de las Variables Expresiones y Operadores
Expresiones matemáticas Operadores Relacionales Operadores Lógicos Expresiones Regulares
Sentencias Condicionales If – Then If-Then-End If If-Then-Else-End If Select – Case
Estructuras de Bucle For – Next For-Each Do-While Do-Until Salir de un Bucle Diferencias entre B4A y Visual Basic
Subs Declarando un Sub
Tabla de Contenidos xiii
Nombre de un Sub LLamar a un Sub Parámetros Valor de retorno Creando Tooltips para Subs
Subs Reanudables Se pueden pausar Contiene Sleep o Wait For El Sub reanudable está en pausa Tipo ResumableSub Sleep Wait For
Eventos Eventos básicos de los Objetos Respuesta a un Evento Ejemplo Gestor de Eventos Compartido View Events Eventos de vista más comunes
Control de Errores Errores en Tiempo de Ejecución Excepciones Excepciones en tiempo de ejecución no capturadas Try-Catch Cuando utilizer un Try-Catch
Manipulación de cadenas Cadenas Mutables Las funciones de Cadenas Formateado de números
Palabras Clave
Abs (Number As Double) As Double
ACos (Value As Double) As Double
ACosD (Value As Double) As Double
Array
Asc (Char As Char) As Int
ASin (Value As Double) As Double
ASinD (Value As Double) As Double
ATan (Value As Double) As Double
ATan2 (Y As Double, X As Double) As Double
ATan2D (Y As Double, X As Double) As Double
ATanD (Value As Double) As Double
BytesToString (Data() As Byte, StartOffset As Int, Length As Int, CharSet As String) As String
CallSub (Component As Object, Sub As String) As String
CallSub2 (Component As Object, Sub As String, Argument As Object) As String
CallSub3 (Component As Object, Sub As String, Argument1 As Object, Argument2 As Object) As
String
CallSubDelayed (Component As Object, Sub As String)
CallSubDelayed2 (Component As Object, Sub As String, Argument As Object)
CallSubDelayed3 (Component As Object, Sub As String, Argument1 As Object, Argument2 As
Object)
CancelScheduledService (Service As Object)
Catch
cE As Double
Ceil (Number As Double) As Double
Tabla de Contenidos xiv
CharsToString (Chars() As Char, StartOffset As Int, Length As Int) As String
Chr (UnicodeValue As Int) As Char
ConfigureHomeWidget (LayoutFile As String, EventName As String, UpdateIntervalMinutes As Int,
WidgetName As String) As RemoteViews
Continue
Cos (Radians As Double) As Double
CosD (Degrees As Double) As Double
cPI As Double
CreateMap() As Map
CRLF As String
Density As Float
Dim
DipToCurrent (Length As Int) As Int
DoEvents
Exit
ExitApplication
False As Boolean
File As File
Floor (Number As Double) As Double
For
For Each
GetDeviceLayoutValues As LayoutValues
GetType (object As Object) As String
If
InputList (Items As List, Title As String, CheckedItem As Int) As Int
InputListAsync (Items As List, Title As CharSequence, CheckedItem As Int, Cancelable As Boolean)
As Object
InputMap (Items As Map, Title As String)
InputMapAsync (Items As Map, Title As CharSequence, Cancelable As Boolean) As Object
InputMultiList (Items As List, Title As String) As List
Is
IsBackgroundTaskRunning (ContainerObject As Object, TaskId As Int) As Boolean
IsDevTool (ToolName As String) As Boolean
IsNumber (Text As String) As Boolean
IsPaused (Component As Object) As Boolean
LastException As Exception
LoadBitmap (Dir As String, FileName As String) As Bitmap
LoadBitmapResize (Dir As String, FileName As String, Width As Int, Height As Int, KeepAspectRatio
As Boolean) As Bitmap
LoadBitmapSample (Dir As String, FileName As String, MaxWidth As Int, MaxHeight As Int) As
Bitmap
Log (Message As String)
Logarithm (Number As Double, Base As Double) As Double
LogColor (Message As String, Color As int) As void
Max (Number1 As Double, Number2 As Double) As Double
Me As Object
Min (Number1 As Double, Number2 As Double) As Double
Msgbox (Message As CharSequence, Title As CharSequence)
Tabla de Contenidos xv
Msgbox2 (Message As CharSequence, Title As CharSequence, Positive As String, Cancel As String,
Negative As String, Icon As Bitmap) As Int
MsgboxAsync (Message As CharSequence, Title As CharSequence, Positive As String)
Msgbox2Async (Message As CharSequence, Title As CharSequence, Positive As String, Cancel As
String, Negative As String, Icon As Bitmap, Cancelable As Boolean) As Object
Not (Value As Boolean) As Boolean
Null As Object
NumberFormat (Number As Double, MinimumIntegers As Int, MaximumFractions As Int) As String
NumberFormat2 (Number As Double, MinimumIntegers As Int, MaximumFractions As Int,
MinimumFractions As Int, GroupingUsed As Boolean) As String
PerXToCurrent (Percentage As Float) As Int
PerYToCurrent (Percentage As Float) As Int
Power (Base As Double, Exponent As Double) As Double
ProgressDialogHide
ProgressDialogShow (Text As String)
ProgressDialogShow2 (Text As String, Cancelable As Boolean)
QUOTE As String
Regex As Regex Regex Options Regex Methods
Return [value]
Rnd (Min As Int, Max As Int) As Int
RndSeed (Seed As Long)
Round (Number As Double) As Long
Round2 (Number As Double, DecimalPlaces As Int) As Double
Select
Sender As Object
Sin (Radians As Double) As Double
SinD (Degrees As Double) As Double
Sleep (Milliseconds As int) As void
Sqrt (Value As Double) As Double
StartActivity (Activity As Object)
StartService (Service As Object)
StartServiceAt (Service As Object, Time As Long, DuringSleep As Boolean)
StartServiceAtExact (Service As Object, Time As Long, DuringSleep As Boolean)
StopService (Service As Object)
Sub
SubExists (Object As Object, Sub As String) As Boolean
TAB As String
Tan (Radians As Double) As Double
TanD (Degrees As Double) As Double
ToastMessageShow (Message As String, LongDuration As Boolean)
True As Boolean
Try
Type
Until
Wait For [(Sender)] <Event Signature>
While
3.2 VB6 versus B4A
Tabla de Contenidos xvi
Controless vs. Vistas Dim ReDim Operaciones Boleanas
Not Uso de números enteros como booleanos
Global Const Estructuras de repetición
For…Next Loops, If-Then, Select Case Exit ElseIf/EndIf
Colores Subroutinas
Declaración de Sub LLamando una Sub
Funciones Exit Sub DoEvents Format InputBox Bucle MsgBox Números aleatorios
Rnd RndSeed Randomize
Round Val() SetFocus Divide por Zero Shell Timer TabIndex Ajuste de Transparencia de Label Constantes String “Members”
Left$ y Right$ Len Replace Case Trim Instr
Intercepción de errores VB6 B4A
“Immediate Window” vs. Pestaña “Logs”
3.3 Objetos básicos Lista de Objetos básicos
General Constants Drawing Objects File Objects Views
Actividad Vistas dentro de una Actividad Eventos de Actividad ActionBarHomeClick Click Eventos KeyPress y KeyUp
Tabla de Contenidos xvii
LongClick PermissionResult (Permission As String, Result As Boolean) Touch (Action As Int, X As Float, Y As Float) Miembros de Activity
ACTION_DOWN As Int
ACTION_MOVE As Int
ACTION_UP As Int
AddMenuItem (Title As String, EventName As String)
AddMenuItem2 (Title As String, EventName As String, Bitmap1 As Bitmap)
AddMenuItem3 (Title As String, EventName As String, Bitmap1 As Bitmap, AddToActionBar As
Boolean)
AddView (View1 As View, Left As Int, Top As Int, Width As Int, Height As Int)
Background As Drawable
CloseMenu
Color As Int [write only]
DisableAccessibility (Disable As Boolean)
Finish
GetAllViewsRecursive As IterableList
GetStartingIntent As Intent
GetView (Index As Int) As View
Height As Int
Initialize (EventName As String)
Invalidate
Invalidate2 (Rect1 As Rect)
Invalidate3 (Left As Int, Top As Int, Right As Int, Bottom As Int)
IsInitialized As Boolean
Left As Int
LoadLayout (Layout As String) As LayoutValues
NumberOfViews As Int [read only]
OpenMenu
RemoveAllViews
RemoveViewAt (Index As Int)
RequestFocus As Boolean
RerunDesignerScript (Layout As String, Width As Int, Height As Int)
SendToBack
SetActivityResult (Result As Int, Data As Intent)
SetBackgroundImage (Bitmap1 As Bitmap) As BitmapDrawable
SetLayout (Left As Int, Top As Int, Width As Int, Height As Int)
Tag As Object
Title As CharSequence
TitleColor As Int
Top As Int
Width As Int Application
Miembros de Application
Icon As Bitmap
LabelName As String
PackageName As String
VersionCode As Int
Tabla de Contenidos xviii
VersionName As String Bit
Operaciones de bits Miembros:
And (N1 As Int, N2 As Int) As Int
ArrayCopy ( SrcArray As Object, SrcOffset As Int, DestArray As Object, DestOffset As Int, Count As
Int ) As Void
InputStreamToBytes (In As Inputstream) As Byte()
Not (N As Int) As Int
Or (N1 As Int, N2 As Int) As Int
ParseInt (Value As String, Radix As Int) As Int
ShiftLeft (N As Int, Shift As Int) As Int
ShiftRight (N As Int, Shift As Int) As Int
ToBinaryString (N As Int) As String
ToHexString (N As Int) As String
ToOctalString (N As Int) As String
UnsignedShiftRight (N As Int, Shift As Int) As Int
Xor (N1 As Int, N2 As Int) As Int Constantes
Colors DialogResponse Gravity KeyCodes Typeface
CSBuilder CharSequence Estilo con CSBuilder PopAll es muy recomendable Encadenamiento de Métodos CSBuilder Uso de un objeto CSBuilder Miembros
Alignment ( Alignment As android.text.Layout.Alignment ) As CSBuilder
Append ( Text As java.lang.CharSequence ) As CSBuilder
BackgroundColor ( Color As int ) As CSBuilder
Bold As CSBuilder
Clickable ( EventName As String, Tag As Object ) As CSBuilder
Color ( Color As int ) As anywheresoftware.b4a.objects.CSBuilder
EnableClickEvents ( Label As android.widget.TextView ) As void
Image ( Bitmap As Bitmap, Width As Int, Height As Int, Baseline As Boolean ) As CSBuilder
Initialize As CSBuilder
IsInitialized As Boolean
Length As Int [read only]
Pop As CSBuilder
PopAll As CSBuilder
RelativeSize ( Proportion As float ) As CSBuilder
ScaleX ( Proportion As float ) As CSBuilder
Size ( Size As int ) As CSBuilder
Strikethrough As CSBuilder
ToString As java.lang.String
Typeface ( Typeface As android.graphics.Typeface ) As CSBuilder
Underline As CSBuilder
Tabla de Contenidos xix
VerticalAlign ( Shift As int ) As CSBuilder DateTime
Miembros:
Add (Ticks As Long, Years As Int, Months As Int, Days As Int) As Long
Date (Ticks As Long) As String
DateFormat As String
DateParse (Date As String) As Long
DateTimeParse (Date As String, Time As String) As Long
DeviceDefaultDateFormat As String [read only]
DeviceDefaultTimeFormat As String [read only]
GetDayOfMonth (Ticks As Long) As Int
GetDayOfWeek (Ticks As Long) As Int
GetDayOfYear (Ticks As Long) As Int
GetHour (Ticks As Long) As Int
GetMinute (Ticks As Long) As Int
GetMonth (Ticks As Long) As Int
GetSecond (Ticks As Long) As Int
GetTimeZoneOffsetAt (Date As Long) As Double
GetYear (Ticks As Long) As Int
ListenToExternalTimeChanges
Now As Long [read only]
SetTimeZone (OffsetHours As Double)
TicksPerDay As Long
TicksPerHour As Long
TicksPerMinute As Long
TicksPerSecond As Long
Time (Ticks As Long) As String
TimeFormat As String
TimeParse (Time As String) As Long
TimeZoneOffset As Double [read only] Objetos para dibujar
Bitmap BitmapDrawable Canvas ColorDrawable GradientDrawable Path Rect StateListDrawable
Exception Miembros:
IsInitialized As Boolean
Message As String [solo lectura] Objeto File
Nombre de Archivos Añadiendo Archivos a su Proyecto Ubicaciones de Carpetas en el Dispositivo Codificación de Texto File InputStream OutputStream TextReader
Tabla de Contenidos xx
TextWriter Intent
Miembros:
Action As String
ACTION_APPWIDGET_UPDATE As String
ACTION_CALL As String
ACTION_EDIT As String
ACTION_MAIN As String
ACTION_PICK As String
ACTION_SEND As String
ACTION_VIEW As String
AddCategory (Category As String)
ExtrasToString As String
Flags As Int
GetData As String
GetExtra (Key As String) As Object
HasExtra (Key As String) As Boolean
Initialize (Action As String, URI As String)
Initialize2 (URI As String, Flags As Int)
IsInitialized As Boolean
PutExtra (Name As String, Value As Object)
SetComponent (Component As String)
SetType (Type As String)
WrapAsIntentChooser (Title As String) LayoutValues
Miembros:
ApproximateScreenSize As Double [read only]
Height As Int
Scale As Float
toString As String
Width As Int List
Como usar una Lista Miembros:
Map Como usar un Map Miembros:
MediaPlayer Evento: Complete Miembros:
Duration As Int [read only]
Initialize
Initialize2 (EventName As String)
IsInitialzied As Boolean
IsPlaying As Boolean
Load (Dir As String, FileName As String)
Looping As Boolean
Pause
Play
Position As Int
Release
Tabla de Contenidos xxi
SetVolume (Right As Float, Left As Float)
Stop Notificación
Permisos: Miembros:
AutoCancel As Boolean [write only]
Cancel (Id As Int)
Icon As String [write only]
Initialize
Initialize2 (ImportanceLevel As Int)
Insistent As Boolean [write only]
IsInitialized As Boolean
Light As Boolean [write only]
Notify (Id As Int)
Number As Int
OnGoingEvent As Boolean [write only]
SetInfo (Title As String, Body As String, Activity As Object)
SetInfo2 (Title As String, Body As String, Tag As String, Activity As Object)
Sound As Boolean [write only]
Vibrate As Boolean [write only] Regex
Regex As Regex Más sobre Regex Opciones Miembros Regex:
CASE_INSENSITIVE
IsMatch (Pattern As String, Text As String) As Boolean
IsMatch2 (Pattern As String, Options As Int, Text As String) As Boolean
Matcher (Pattern As String, Text As String) As Matcher
Matcher2 (Pattern As String, Options As Int, Text As String) As Matcher
MULTILINE
Replace (Pattern As String, Text As String, Template As String) As String()
Replace2 (Pattern As String, Options As Int, Text As String, Template As String) As String()
Split (Pattern As String, Text As String) As String()
Split2 Objeto Matcher Métodos de comparación:
RemoteViews Eventos: Miembros:
HandleWidgetEvents (StartingIntent As Intent) As Boolean
SetImage (ImageViewName As String, Image As Bitmap)
SetProgress (ProgressBarName As String, Progress As Int)
SetText (ViewName As String, Text As String)
SetTextColor (ViewName As String, Color As Int)
SetTextSize (ViewName As String, Size As Float)
SetVisible (ViewName As String, Visible As Boolean)
UpdateWidget Servicio
Miembros:
StartForeground (Id As Int, Notification1 As Notification)
Tabla de Contenidos xxii
StopForeground (Id As Int) Cadenas
Cadenas Inmutables Cadenas Mutables Formateado de números Smart Strings Miembros:
CharAt (Index As Int) As Char
CompareTo (Other As String) As Int
Contains (SearchFor As String) As Boolean
EndsWith (Suffix As String) As Boolean
EqualsIgnoreCase (other As String) As Boolean
GetBytes (Charset As String) As Byte()
IndexOf (SearchFor As String) As Int
IndexOf2 (SearchFor As String, Index As Int) As Int
LastIndexOf (SearchFor As String) As Int
LastIndexOf2 (SearchFor As String, Index As Int) As Int
Length As Int
Replace (Target As String, Replacement As String) As String
StartsWith (Prefix As String) As Boolean
SubString (BeginIndex As Int) As String
SubString2 (BeginIndex As Int, EndIndex As Int) As String
ToLowerCase As String
ToUpperCase As String
Trim As String StringBuilder
Miembros:
Append (Text As String) As StringBuilder
Initialize
Insert (Offset As Int, Text As String) As StringBuilder
IsInitialized As Boolean
Length As Int [read only]
Remove (StartOffset As Int, EndOffset As Int) As StringBuilder
ToString As String Timer
Event: Tick Ejemplo: Miembros:
Enabled As Boolean
Initialize (EventName As String, Interval As Long)
Interval As Long
IsInitialized As Boolean Vistas (Views)
AutoCompleteEditText Button CheckBox CustomView EditText HorizontalScrollView ImageView Label ListView
Tabla de Contenidos xxiii
Panel ProgressBar RadioButton ScrollView SeekBar Spinner TabHost ToggleButton View WebView
3.4 Código en Línea Devolviendo datos a B4A
Parte 4: Librerías
4.1 Librerías Introducción
¿Qué es una librería? Tipos de Librerías
Librería Principal Librerías Estándar Librerías Oficiales Adicionales Librerías de Usuario Adicionales Carpeta de librerías adicionales Como indicar al IDE dónde se encuentran las librerías adicionales Mensaje de error "¿Falta una referencia de librería?" Actualización de las Librerías Internas
Referenciando Librerías Aviso sobre las Librerías no Utilizadas Uso de Librerías Actualización de Librerías Adicionales Uso del código en línea para acceder a las librerías
Creación de Librerías Beneficios de la creación de Librerías
Preparación de su Librería Excluir la Actividad Main
Atributos Específicos de Librería Atributos del Proyecto Atributos del Módulo Atributos de Clases
Como compilar una Librería Salida Librerías de widgets sin pantalla de inicio
Como publicar su librería
4.2 Librerías Estándar incluidas en la Versión Completa Introducción Lista de Librerías Estándar Librería de Accesibilidad
Lista de tipos: Accesibilidad Miembros:
GetUserFontScale As Float
SetContentDescription (View1 As View, Content As CharSequence)
SetNextFocusDown (ThisView As View, NextView As View)
SetNextFocusLeft (ThisView As View, NextView As View)
SetNextFocusRight (ThisView As View, NextView As View)
SetNextFocusUp (ThisView As View, NextView As View) Librería Administrador
Enlace en línea AdminManager
Tabla de Contenidos xxiv
Librería de Animación Animation
Librería Audio Lista de tipos: AudioRecordApp AudioStreamer Beeper JetPlayer MediaPlayerStream SoundPool VideoRecordApp VideoView
Librería B4XEncryption B4XCipher
Librería BitmapCreator Lista de tipos: ARGBColor BitmapCreator DrawTask PremultipliedColor
Librería CallSubUtils (heredada) CallSubUtils RunDelayedData
Librería Camera Clase CameraEx Lista de tipos: Camera
Librería Camera2 Camera2 CameraSize
Librería ContentResolver Lista de tipos: ContentResolver ContentValues Uri
Librería DateUtils DateUtils
Libería Daydream Daydream
Librería FirebaseAdMob Lista de tipos: AdView InterstitialAd NativeExpressAd RewardedVideoAd
Librería FirebaseAnalytics FirebaseAnalytics
Librería FirebaseAuth FirebaseAuth FirebaseUser
Librería FirebaseNotifications FirebaseMessaging RemoteMessage
Librería FirebaseStorage FirebaseStorage StorageMetadata
Librería GameView Tutorial Lista de tipos: BitmapData
Tabla de Contenidos xxv
GameView Librería GPS
Lista de tipos: GPS GPSSatellite Location
Librería HTTP (Legacy) Lista de tipos: HttpClient HttpRequest HttpResponse
Librería HttpUtils2 (Legacy) HttpJob
Librería IME IME
Librería JavaObject JavaObject
Librería JSON Acerca de JSON JSONGenerator JSONParser
Librería KeyValueStore2 KeyValueStore
Librería LiveWallpaper LWEngine LWManager
Librería Network Lista de tipos: ServerSocket Socket UDPPacket UDPSocket
Librería NFC Librería versión 2.01 A cerca de NFC NdefRecord NFC TagTechnology
Librería OkHttp Lista de tipos: OkHttpClient OkHttpRequest OkHttpResponse
Librería OkHttpUtils2 HttpJob HttpUtils2Service MultipartFileData
Librería Phone CallItem CallLog Contact Contacts [Objeto antiguo] Contacts2 ContentChooser Email LogCat PackageManager Phone PhoneAccelerometer [Objeto antiguo] PhoneCalls
Tabla de Contenidos xxvi
PhoneEvents PhoneId PhoneIntents PhoneOrientation [Objeto antiguo] PhoneSensors PhoneSms PhoneVibrate PhoneWakeState RingtoneManager Sms SmsInterceptor SmsMessages VoiceRecognition
Librería de Activity de Preferencias Limitaciones de PreferenceActivity Lista de tipos: PreferenceCategory PreferenceManager PreferenceScreen
Librería RandomAccessFile AsyncStreams B4XSerializator CompressedStreams CountingInputStream CountingOutputStream RandomAccessFile
Librería Reflection Notas Reflector
Librería RuntimePermissions RuntimePermissions
Librería Serial Lista de tipos: BluetoothAdmin Serial
Librería Sip Lista de tipos: Sip SipAudioCall
Librería SQL Lista de tipos: Cursor ResultSet SQL
Librería StringUtils StringUtils
Librería TTS TTS
Librería USB Lista de tipos: MtpDevice UsbAccessory UsbDevice UsbDeviceConnection UsbEndpoint UsbInterface UsbManager UsbRequest
Librería ViewsEx FloatLabeledEditText
Tabla de Contenidos xxvii
RatingBar Switch
Librería xCustomListView CLVItem CustomListView
Librería XmlSax XML Sax Atributos SaxParser
Librería XUI Lista de tipos: B4XBitmap B4XCanvas B4XFont B4XPath B4XRect B4XView XUI
4.3 Módulos y Librerías Adicionales Introducción
Encontrar Librerías Adicionales Carpeta de Librerías Adicionales Indicar al IDE dónde encontrar librerías adicionales
Librerías y Clases Oficiales Adicionales Adiquity AdMob AnotherDatePicker class AsyncStreamsText Analytics Audio Bluetooth Low Energy Camera CameraEx DBUtils DropBox Sync Excel Facebook User Authentication Firebase RemoteConfig GamePad Google Play Services HttpServer InAppBilling JSch JTidy Licensing NB6 Net Librería NotificationListener OAuth PayPal SearchView SMB Speak Button SQLCipher StateManager Librería StdActionBar TableView Tap for Tap USB Host
Tabla de Contenidos xxviii
USBSerial XMLBuilder YouTube
Librerías de Usuario Adicionales Introducción Para obtener o actualizar una librería de usuario ¿Cuáles son las que necesita un proyecto? Como usar una librería
Lista de librerías Librerías de Usuario Adicionales Descarga de Librerías de Usuarios
Plantillas de Clase a medida Como crear una librería Como compartir tu librería
Licencia Librería de Diálogos
Fuente Notas ColorDialog ColorDialogHSV ColorPickerDialog CustomDialog CustomDialog2 DateDialog FileDialog InputDialog NumberDialog TimeDialog
Librería TabHostExtras getTabContentViewPadding (tabHost1 As TabHost) As RectWrapper getTabEnabled (tabHost1 As TabHost, index As Int) As Boolean getTabHeight (tabHost1 As TabHost) As Int getTabHostPadding (tabHost1 As TabHost) As RectWrapper getTabTextSize (tabHost1 As TabHost) As Float getTabVisibility (tabHost1 As TabHost, index As Int) As Boolean setTabContentViewPadding (tabHost1 As TabHost, left As Int, top As Int, right As Int, bottom As Int) setTabEnabled (tabHost1 As TabHost, enabled As Boolean) setTabEnabled2 (tabHost1 As TabHost, enabled As Boolean, index As Int) setTabGradientDrawable (tabHost1 As TabHost, orientation As String, color1 As Int, color2 As Int,
cornerRadius As Float) setTabGradientDrawable2 (tabHost1 As TabHost, orientation As String, color1 As Int, color2 As Int,
cornerRadius As Float()) setTabHeight (tabHost1 As TabHost, tabHeight As Int) setTabHostPadding (tabHost1 As TabHost, left As Int, top As Int, right As Int, bottom As Int) setTabTextColor (tabHost1 As TabHost, Color As Int) setTabTextColorStateList (tabHost1 As TabHost, ColorStateListName As String) setTabTextSize (tabHost1 As TabHost, TextSize As Float) setTabTitle (tabHost1 As TabHost, Title As String, TabIndex As Int) setTabVisibility (tabHost1 As TabHost, visible As Boolean) setTabVisibility2 (tabHost1 As TabHost, visible As Boolean, index As Int)
Librería Toggle
Parte 5: Herramientas y servicios externos
5.1 Servicios Firebase ¿Qué es Firebase? Integración de servicios Firebase en B4A
Más información sobre las API de Google para Android Servicios de Firebase soportados en B4A
FirebaseAnalytics: Analytics & crash reports Notifications / Push messages Publicidad de AdMob
Tabla de Contenidos xxix
Autenticación con cuentas de Facebook o Google Firebase RemoteConfig Más Información
Proyecto Google API Agregar los fragmentos de Firebase
5.2 Repositorios Maven Proyecto Apache Maven Repositorios Maven Maven artifacts Repositorios de Android SDK y maven Herramientas Beneficios
5.3 Soporte de Librería AAR Introducción Añadir referencia a AAR Incluyendo librerías AAR en Apps de B4A
Ejemplo 1 Ejemplo 2
Índice