#Region Module Attributes
    #FullScreen: False
    #IncludeTitle: False
    #ApplicationLabel: Camera example
    #VersionCode: 1
    #VersionName:
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region
'Activity module
Sub Process_Globals
    Private frontCamera As Boolean = True
End Sub
Sub Globals
    Private Panel1 As Panel
    Private camEx As CameraExClass
End Sub
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("1")
End Sub
Sub Activity_Resume
    InitializeCamera
End Sub
Private Sub InitializeCamera
   
    Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
    Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
    If Result Then
        camEx.Initialize(Panel1, frontCamera, Me, "Camera1")
        frontCamera = camEx.Front
    Else
        ToastMessageShow("No permission!!!", True)
    End If
   
End Sub
Sub Activity_Pause (UserClosed As Boolean)
    If camEx.IsInitialized Then
        camEx.Release
    End If
End Sub
Sub Camera1_Ready (Success As Boolean)
    If Success Then
        camEx.SetJpegQuality(90)
        camEx.SetContinuousAutoFocus
        camEx.CommitParameters
        camEx.StartPreview
        Log(camEx.GetPreviewSize)
       
    Else
        ToastMessageShow("Cannot open camera.", True)
    End If
End Sub
Sub btnTakePicture_Click
   
    camEx.SetPictureSize(640,480)
    'ToastMessageShow(ps.Width & "x" & ps.Height, False)
    camEx.CommitParameters
   
    camEx.TakePicture
End Sub
Sub btnFocus_Click
    camEx.FocusAndTakePicture
End Sub
Sub Camera1_PictureTaken (Data() As Byte)
    Dim filename As String = "1.jpg"
    Dim dir As String = File.DirInternal
   
    camEx.SavePictureToFile(Data, dir, filename)
    camEx.StartPreview 'restart preview
    ToastMessageShow("Picture saved." & CRLF  & "File size: " & File.Size(dir, filename), True)
    Log(dir & "\" & filename)
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 SeekBar1_ValueChanged (Value As Int, UserChanged As Boolean)
    If UserChanged = False Or camEx.IsZoomSupported = False Then Return
    camEx.Zoom = Value / 100 * camEx.GetMaxZoom
    camEx.CommitParameters
End Sub
Sub GetARGB(Color As Int) As Int()
    Private res(4) As Int
    res(0) = Bit.UnsignedShiftRight(Bit.And(Color, 0xff000000), 24)
    res(1) = Bit.UnsignedShiftRight(Bit.And(Color, 0xff0000), 16)
    res(2) = Bit.UnsignedShiftRight(Bit.And(Color, 0xff00), 8)
    res(3) = Bit.And(Color, 0xff)
    Return res
End Sub
Sub btnTestPixel_Click
    Dim filename As String = "1.jpg"
    Dim dir As String = File.DirInternal
    Dim testBitmap As Bitmap = LoadBitmap(dir,filename)
   
    Dim pixel As Int = testBitmap.GetPixel(320,320)
   
   
    Private argb() As Int
    argb = GetARGB(pixel)
    Log("A = " & argb(0))
    Log("R = " & argb(1))
    Log("G = " & argb(2))
    Log("B = " & argb(3))
   
   
   
End Sub