RishiKumar2210
Active Member
Hi All, I want to take picture using phone's camera and set it in an imageview. here is my code
This code works perfectly in Activities. but not working in B4XPages. it says "camera is not available". how to overcome this?
B4X:
Sub TakePicture
Dim i As Intent
i.Initialize("android.media.action.IMAGE_CAPTURE", "")
File.Delete(iprovide_fileprovider.SharedFolder, tempImageFile)
Dim u As Object = iprovide_fileprovider.GetFileUri(tempImageFile)
i.PutExtra("output", u) 'the image will be saved to this path
Try
StartActivityForResult(i)
Catch
ToastMessageShow("Camera is not available.", True)
Log(LastException)
End Try
End Sub
Sub ion_Event (MethodName As String, Args() As Object) As Object
If Args(0) = -1 Then
Try
Dim in As Intent = Args(1)
If File.Exists(iprovide_fileprovider.SharedFolder, tempImageFile) Then
lastPicture = LoadBitmapSample(iprovide_fileprovider.SharedFolder, tempImageFile, 100%x, 100%y)
is_imageextension = "jpg"
Log("image extension : " & is_imageextension)
Dim v As B4XView = ix_xui.CreatePanel("")
v.SetLayoutAnimated(0,100%x,100%y,90%x, 80%y)
v.LoadLayout("cropimage_dialog")
id_cropimagedialog.BorderWidth = 1dip
id_cropimagedialog.BorderCornersRadius = 7dip
id_cropimagedialog.BackgroundColor = Colors.aRgb(255,255,255,255)
id_cropimagedialog.ShowCustom(v, "", "", "")
ResetUserFontScale(v)
ip_cropimagepanel.Visible = False
ip_notcropimagepanel.Visible = True
image_notcropimage.Bitmap = lastPicture
Else If in.HasExtra("data") Then
Dim jo As JavaObject = in
lastPicture = jo.RunMethodJO("getExtras", Null).RunMethod("get", Array("data"))
End If
Catch
Log(LastException)
End Try
End If
Return Null
End Sub
Sub StartActivityForResult(intent As Intent)
Dim jo As JavaObject = GetBA
iobj_object = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null)
jo.RunMethod("startActivityForResult", Array As Object(iobj_object, intent))
End Sub
Sub GetBA As Object
Dim jo As JavaObject
Dim cls As String = Me
cls = cls.SubString("class ".Length)
jo.InitializeStatic(cls)
Return jo.GetField("processBA")
End Sub