Reflector

kalarius

Active Member
Licensed User
Longtime User
where can I find a detail documentetion for new users for the reflector.
I want to have example how to call android functions with no parameter , 1 parameter, 2 parameter, with refer to lidbraries
 

kalarius

Active Member
Licensed User
Longtime User
but without examples
I know about the android skd

but when I wan to call a fucntion
what I write to call it?

exapmle
this is from android

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");

what I must write to reflector and why

as you are an experience user it is very simple for you

but for me it look like a mountain !!!
 
Upvote 0

keirS

Well-Known Member
Licensed User
Longtime User
This may be of some help. I wrote a quick class when I was trying to understand how the Reflection library worked. It's a wrapper for the java.util.zip.CRC32 class.

B4X:
'Class module
Sub Class_Globals
   Dim oReflector As Reflector
   Dim oByteConverter As ByteConverter
   Dim omUpdate As Object
   Dim omReset As Object
   Dim omGetValue As Object
   
   
End Sub

'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
  
 
  'Create an instance of theCRC32 class using reflection and set it as the target of the Reflector.
  oReflector.Target = oReflector.CreateObject("java.util.zip.CRC32")
  
  'Register the Update method of the CRC32 class [public void update (byte[] buf)]
  'Adds the byte array passed to the data that the checksum is being calculated for
 
  'Set the type of the parameter passed for the  update method to Byte Array.
  Dim Types(1) As String
  Types(0) = "[B"
  omUpdate= oReflector.GetMethod("update",Types)
  Types(0) = ""
  
  'Register the get method of the CRC32 class [public long getValue ()]
  'Returns the CRC32 checksum as a long
  'No parameters for getValue so pass null
  omGetValue =  oReflector.GetMethod("getValue",Null)
  
 'Register the reset method of the CRC32 class [public void reset ()]
 'Clears the data that the checksum is being calculated for so a new checksum can be calculated
  omReset = oReflector.GetMethod("reset",Null)
 End Sub
 
 Public Sub GetValue As Long
 'Return the CRC32 checksum value as a long
 'Passes no arguments so use null 
    Return  oReflector.InvokeMethod(oReflector.Target,omGetValue,Null) 
 End Sub
 
 Public Sub Reset 
 'Clears the buffer so a new checksum can be calculated
 'Passes no arguments so use null 
    oReflector.InvokeMethod(oReflector.Target,omReset,Null) 
    
 End Sub

Public Sub GetHexString
'Returns the checksum as a string of Hex values
     Dim aCRCBytes(1) As Byte
    Dim aCRCValue(1) As Long
    aCRCValue(0) = GetValue
    aCRCBytes = oByteConverter.LongsToBytes(aCRCValue)
    Return oByteConverter.HexFromBytes(aCRCBytes)
End Sub

Public Sub Update(strAddToBuffer As String) 
'Adds the passed string to the buffer that the checksum is being calculated for
   Dim strBuffer As String
   Dim aBytesToAdd(1) As Byte
   Dim Args(1) As Object
   aBytesToAdd  = oByteConverter.StringToBytes(strAddToBuffer,"UTF8")
   Args(0) = aBytesToAdd 
   oReflector.InvokeMethod(oReflector.Target,omUpdate,Args)  
End Sub

The test program that calls the class

B4X:
Sub Process_Globals

   Dim oCRC32 As CRC32Class
   
End Sub

Sub Globals
   'These global variables will be redeclared each time the activity is created.
   'These variables can only be accessed from this module.

   Dim  otxtStrToCheckSum As EditText
   Dim olblChecksum As Label
   Dim obtnGenChecksum As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
   Dim cDateTime As String
   otxtStrToCheckSum .Initialize("")
   obtnGenChecksum.Initialize("obtnGenChecksum")
   olblChecksum.Initialize("")
   obtnGenChecksum.Text =  "Calc CRC32"
   olblChecksum.TextSize = 14
   Activity.AddView(otxtStrToCheckSum,5,5,250,100)
   Activity.AddView(obtnGenChecksum,5,120,100,40)
   Activity.AddView(olblChecksum,5,180,250,40)
   
   'Create CRC32 Object
   oCRC32.Initialize
End Sub


Sub obtnGenChecksum_Click
    'Clear the CRC32 Buffer
   oCRC32.Reset
   'Fill buffer with contents of text box
   oCRC32.Update(otxtStrToCheckSum.Text)
   'Calculate Checksum and populate label with result
   olblChecksum.Text = oCRC32.GetHexString
End Sub
Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
 
Last edited:
Upvote 0
Top