Android Question cameraex Class Error

karyadi

Member
Licensed User
Longtime User
Hi all,
i use cameraex to access my cam, if i use android 5 all is good,
but if i use android 6 sometime it's show error

did any one use cameraex same like me?
or maybe i do wrong on my code?


B4X:
cameraexclass_camera_ready (java line: 114)
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
    at anywheresoftware.b4a.agraham.reflection.Reflection.runmethod(Reflection.java:205)
    at anywheresoftware.b4a.agraham.reflection.Reflection.RunMethod(Reflection.java:802)
    at com.astatech.cameraexclass._camera_ready(cameraexclass.java:114)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
    at anywheresoftware.b4a.objects.CameraW$2$1.run(CameraW.java:139)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5480)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
B4X:
cameraexclass_camera_ready (java line: 114)
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
    at anywheresoftware.b4a.agraham.reflection.Reflection.runmethod(Reflection.java:205)
    at anywheresoftware.b4a.agraham.reflection.Reflection.RunMethod(Reflection.java:802)
    at com.astatech.cameraexclass._camera_ready(cameraexclass.java:114)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
    at anywheresoftware.b4a.objects.CameraW$2$1.run(CameraW.java:139)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5480)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)


B4X:
#Region Module Attributes
    #FullScreen: True
    #IncludeTitle: False
#End Region

'Activity module
Sub Process_Globals
    Private frontCamera As Boolean = False
    Dim path_foto As String
   
End Sub

Sub Globals
    Private Panel1 As Panel
    Private camEx As CameraExClass
    Dim ImageView1 As ImageView
End Sub

Sub Delay(nMilliSecond As Long)
    Dim nBeginTime As Long
    Dim nEndTime As Long
    nEndTime = DateTime.Now + nMilliSecond
    nBeginTime = DateTime.Now
    Do While nBeginTime < nEndTime
        nBeginTime = DateTime.Now
        'Log(nBeginTime)
        If nEndTime < nBeginTime Then
            Return
        End If
        DoEvents
    Loop
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("2")
    'Delay(1000)
    If FirstTime Then
        InitializeCamera
    End If
    'If GetDeviceLayoutValues.Scale = 1 Then
    '    Scale.SetRate(0.6)
    '    Scale.ScaleAll(Activity,True)
    '    Scale.SetLeftAndRight(Panel1,0%x,100%x)
    '    Scale.SetTopAndBottom(Panel1,0%y,100%y)
        'Scale.SetLeftAndRight(ImageView1,Panel1.Width-ImageView1.Width,100%x)
        'ImageView1.Top = ImageView1.Top - 10dip
    'End If
End Sub

Sub Activity_Resume
    InitializeCamera
End Sub

Private Sub InitializeCamera
    Delay(500)
    camEx.Initialize(Panel1, frontCamera, Me, "Camera1")
    frontCamera = camEx.Front
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    camEx.Release
End Sub

Sub Camera1_Ready (Success As Boolean)
    If Success Then
        camEx.SetPictureSize(1024,768)
        camEx.SetJpegQuality(90)
        camEx.CommitParameters
        camEx.StartPreview
        Log(camEx.GetPreviewSize)
    Else
        ToastMessageShow("Cannot open camera.", False)
    End If
End Sub

Sub btnGallery_Click
    camEx.TakePicture
End Sub


Sub btnFocus_Click
    camEx.FocusAndTakePicture
End Sub

Sub Camera1_PictureTaken (Data() As Byte)
    Dim filename As String = "1.png"
    Dim dir As String = File.DirRootExternal
    Dim dir1 As String = File.DirDefaultExternal
   
    DateTime.DateFormat="hh:mm:ss"

    camEx.SavePictureToFile(Data, dir, filename)
    camEx.SavePictureToFile(Data, dir1, DateTime.Date(DateTime.now)&".png")
    camEx.StartPreview 'restart preview
   
    'send a broadcast intent to the media scanner to force it to scan the saved file.
    Dim Phone As Phone
    Dim i As Intent
    i.Initialize("android.intent.action.MEDIA_SCANNER_SCAN_FILE", _
        "file://" & File.Combine(dir, filename))
    Phone.SendBroadcastIntent(i)
    ToastMessageShow("Picture saved." & CRLF  & "File size: " & File.Size(dir, filename), False)
    Delay(1000)
    Activity.Finish
End Sub

Sub ChangeCamera_Click
    camEx.Release
    frontCamera = Not(frontCamera)
    InitializeCamera
End Sub

Sub btnEffect_Click
    Dim effects As List = camEx.GetSupportedColorEffects
    If effects.IsInitialized = False Then
        ToastMessageShow("Effects not supported.", False)
        Return
    End If
    Dim effect As String = effects.Get((effects.IndexOf(camEx.GetColorEffect) + 1) Mod effects.Size)
    camEx.SetColorEffect(effect)
    ToastMessageShow(effect, False)
    camEx.CommitParameters
End Sub

Sub btnFlash_Click
    Dim f() As Float = camEx.GetFocusDistances
    Log(f(0) & ", " & f(1) & ", " & f(2))
    Dim flashModes As List = camEx.GetSupportedFlashModes
    If flashModes.IsInitialized = False Then
        ToastMessageShow("Flash not supported.", False)
        Return
    End If
    Dim flash As String = flashModes.Get((flashModes.IndexOf(camEx.GetFlashMode) + 1) Mod flashModes.Size)
    camEx.SetFlashMode(flash)
    ToastMessageShow(flash, False)
    camEx.CommitParameters   
End Sub

Sub btnPictureSize_Click
    Dim pictureSizes() As CameraSize = camEx.GetSupportedPicturesSizes
    Dim current As CameraSize = camEx.GetPictureSize
    For i = 0 To pictureSizes.Length - 1
        If pictureSizes(i).Width = current.Width And pictureSizes(i).Height = current.Height Then Exit
    Next
    Dim ps As CameraSize = pictureSizes((i + 1) Mod pictureSizes.Length)
    camEx.SetPictureSize(ps.Width, ps.Height)
    ToastMessageShow(ps.Width & "x" & ps.Height, False)
    camEx.CommitParameters       
End Sub

Sub Panel1_Touch (Action As Int, X As Float, Y As Float)
        Dim rect1 As Rect
        Dim myleft As Int
        Dim mytop As Int
        myleft = (X/Panel1.width)* 2000 -1000
        mytop = (Y/Panel1.Height)*2000 - 1000
        Log ("x=" & X & " Y=" & Y)
        If Action = Activity.ACTION_UP Then
       
            Log("focusarea: " & Action & " x : " & myleft & " Y : " & mytop)
            rect1.Initialize(myleft,mytop,myleft + 200 , mytop + 200)

            'camEx.SetFocusArea(rect1, 1000 )
            camEx.SetFocusMode("auto")
            camEx.CommitParameters            '<========= THIS WAS THE PROBLEM
         
            camEx.FocusAndTakePicture
      
        End If
        Return True
      
End Sub
 

karyadi

Member
Licensed User
Longtime User
thanks erel
with your example there is no error, every thing is good.
you already update CameraExClass using ver1.3, my apps still using CameraExClass using ver1.2, i just need to upgarde my CameraExClass and make example as a guidance.
 
Last edited:
Upvote 0
Top