|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

87.- Librería Reflection.

Esta librería está destinada sobre todo a expertos en programación y conocedores de Java. Aquí voy a tratar de explicar someramente de qué trata.

Reflection.

Tutorial

El sistema operativo Android contiene una serie de archivos llamados API. Dentro de ellos se encuentran trozos de códigos llamado Classes que a su vez contienen otros códigos como pueden ser Campos o Métodos.

En esta web podemos consultar los APIs disponibles:

http://developer.android.com/reference/android/os/MemoryFile.html

En la web anterior nos situamos en el API de la versión 19, android.os (se denomina Package) (Listado de Packages)

En ese Package nos situamos en la Classes Process. (Los Packages contienen miembros que pueden ser Classes, Interfaces, Exceptions)

Es decir, estamos en android.os.Process

Dentro de Process podemos ir al Method myPid que nos dará el número PID de nuestra aplicación.

Arriba izquierda del gráfico anterior observamos que estos código pertenecen a la API level 19, dependiendo del level, puede cambiar la llamada a los códigos.

También es necesario saber que para que funcionen eficientemente algunos de los códigos debemos modificar el archivo AndroidManifest.xml, poníéndo permisos:

<uses-permission android:name="android.permission.DEVICE_POWER"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>

o bien con el Manifest Editor:

AddPermission(android.permission.DEVICE_POWER)
AddPermission(android.permission.WAKE_LOCK)

Vamos a ver un ejemplo en Basic4Android.

- Activamos la librería Refletion.

Código
Sub Process_Globals
End Sub

Sub Globals
End Sub

Sub Activity_Create(FirstTime As Boolean)
Dim r As Reflector
Log(r.RunStaticMethod("android.os.Process", "myPid", Null,Null )) End Sub

En el Logs aparecerá el número de PID de nuestra aplicación, es este caso el 2401

Nuestra aplicación ha llamado al Paquete android.os, a su miembro Process y a su Method myPid.

____________________________________________

- Otro Código.

Código
Sub Process_Globals
End Sub

Sub Globals
   Dim Label1 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout")
    Dim r As Reflector
    Dim pid As Int
    Log(r.RunStaticMethod("android.os.Process", "myPid", Null,Null ))

    Log(r.RunStaticMethod("android.os.Environment", "getExternalStorageState", Null,Null ))
    Log(r.RunStaticMethod("android.os.Environment", "getExternalStorageDirectory", Null,Null ))
    Log(r.RunStaticMethod("android.os.Environment", "getDataDirectory", Null,Null ))
    Log(r.RunStaticMethod("android.os.Environment", "getRootDirectory", Null,Null ))
End Sub

 

2.- Enlace a una web.

Código
Sub Process_Globals
' http://developer.android.com/reference/android/text/util/Linkify.html  
End Sub

Sub Globals
   Dim Label1 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout")
    
   Dim r As Reflector
    Label1.Text = "http://www.elmundo.es""
    r.Target = r.CreateObject("android.text.util.Linkify")
    Dim argumento(2) As Object
    Dim tipo(2) As String    
    argumento(0) = Label1
    tipo(0) = "android.widget.TextView"
    argumento(1) = 1 
    tipo(1) = "java.lang.int"    
    r.RunMethod4("addLinks", argumento, tipo) 
End Sub

 

También podemos llamar a otras códigos de aplicaciones que tengamos instadas, ver foro.

http://www.b4x.com/android/forum/threads/reflection-library-how-to-call-b4a-subs.24855/#content

____________________________________________

 

En el trabajo con esta librería aparecerán conceptos como...

CreateObject

oPI = R.CreateObject("android.app.ActivityManager$RunningAppProcessInfo")
r1.Target =r1.CreateObject ( "android.hardware.Camera.AutoFocusCallback")

GetActivity
GetActivityBA

GetField
GetMethod
SetField

GetPublicField
GetStaticField
SetPublicField

RunMethod
RunStaticMethod
RunPublicMethod

Target

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información