google / cameraview Goto Github PK
View Code? Open in Web Editor NEW[DEPRECATED] Easily integrate Camera features into your Android app
License: Apache License 2.0
[DEPRECATED] Easily integrate Camera features into your Android app
License: Apache License 2.0
Encoding JPEG before calling a callback function takes some amount of a precious time and freezing an app. Also it is not suitable for in-place editors, when user makes a shot, applies some filters, and only after that decides to save, or not to save a resulting image.
P.S. Figured it out, it seems like Android does not provide bitmap data in camera callback...Please, correct me if I am wrong, and we can use that raw data callback.
After take a picture incorrectly rotated bitmap.
No issues or pull requests have been acknowledged.
The demo app crashes when running on a phone with only 1 back camera and clicking the switch_camera
icon. This is the stack trace:
com.google.android.cameraview.demo E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.native_setup(Native Method)
at android.hardware.Camera.<init>(Camera.java:429)
at android.hardware.Camera.open(Camera.java:388)
at com.google.android.cameraview.Camera1.openCamera(Camera1.java:278)
at com.google.android.cameraview.Camera1.start(Camera1.java:114)
at com.google.android.cameraview.Camera1.setFacing(Camera1.java:152)
at com.google.android.cameraview.CameraView.setFacing(CameraView.java:292)
at com.google.android.cameraview.demo.MainActivity.onOptionsItemSelected(MainActivity.java:220)
at android.app.Activity.onMenuItemSelected(Activity.java:2592)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:421)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:188)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:69)
at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:202)
at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:761)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:618)
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:155)
at android.view.View.performClick(View.java:4220)
at android.view.View$PerformClick.run(View.java:17513)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5455)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:966)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:733)
at dalvik.system.NativeStart.main(Native Method)
Perhaps it's not the library's responsibility to check which cameras are supported on the device, but I guess it would be nice if the demo app doesn't crash in this cases.
I only got this error on my Huawei Ascend P7 device and not on a Samsung Galaxy S5. When taking a picture, it crashes.
mTakePicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mCameraView.isCameraOpened()) {
mCameraView.takePicture();
}
}
});
mCameraView.addCallback(new CameraView.Callback() {
@Override
public void onPictureTaken(CameraView cameraView, byte[] data) {
super.onPictureTaken(cameraView, data);
mListener.onPictureTaken(data); // Custom method to process the data
mCameraView.stop();
getActivity().getSupportFragmentManager().popBackStack();
}
});
When deleting the following line it works, however I need to close the camera fragment.
getActivity().getSupportFragmentManager().popBackStack();
This is the error:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.hardware.camera2.CameraCaptureSession.capture(android.hardware.camera2.CaptureRequest, android.hardware.camera2.CameraCaptureSession$CaptureCallback, android.os.Handler)' on a null object reference
at com.google.android.cameraview.Camera2.unlockFocus(Camera2.java:625)
at com.google.android.cameraview.Camera2.access$900(Camera2.java:45)
at com.google.android.cameraview.Camera2$6.onCaptureCompleted(Camera2.java:609)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.hardware.camera2.dispatch.InvokeDispatcher.dispatch(InvokeDispatcher.java:39)
at android.hardware.camera2.dispatch.HandlerDispatcher$1.run(HandlerDispatcher.java:65)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5569)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:931)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:726)
My guess is that I need to listen to another callback before killing the camera, but I couldn't find one.
As every user of the library will need the CAMERA
permission, the <uses-permission>
and <uses-feature>
tags should be moved to the library module.
The android.hardware.camera.autofocus
feature should probably have required="false"
as well to ensure that CameraView
can be used even on devices without autofocus.
It's a nice library to take picture easily.
But is it possible to add the video record feature ?
thank you
I tried your demo application on a OnePlus 3 and Nexus 5x and the image was not flashed correctly see the attached image. I took the image in a completely dark room with flash enabled.
I was writing kind of the same camera api 3 months ago and had exactly the same issue, but I was not able to fix it. It took me quite a long time to investigate into the issue and find a fix, but I was not able to find a working solution.
The getExternalFilesDir()
directory does not require the WRITE_EXTERNAL_STORAGE
permission as of API 19 as per its documentation.
All of the code for requesting the storage permission can be removed and the <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
can have android:maxSdkVersion="18"
added to it as suggested in the <uses-permission>
documentation
Does it support recording pause in API 14? or i have to use the high level MediaRecorder to do that?
Hi, Crashlytics is reporting following issue in production:
Fatal Exception: java.lang.IllegalArgumentException: previewSize must not be wider than activeArray at android.hardware.camera2.legacy.ParameterUtils.getPreviewCropRectangleUnzoomed(ParameterUtils.java:494) at android.hardware.camera2.legacy.ParameterUtils.getClosestAvailableZoomCrop(ParameterUtils.java:395) at android.hardware.camera2.legacy.ParameterUtils.convertScalerCropRegion(ParameterUtils.java:764) at android.hardware.camera2.legacy.LegacyRequestMapper.convertRequestMetadata(LegacyRequestMapper.java:72) at android.hardware.camera2.legacy.LegacyMetadataMapper.convertRequestMetadata(LegacyMetadataMapper.java:1163) at android.hardware.camera2.legacy.RequestThreadManager$5.handleMessage(RequestThreadManager.java:744) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:194) at android.os.HandlerThread.run(HandlerThread.java:61)
Because android attributes are shared in a common namespace, it's a good habit to prefix attributes like aspectRatio
in order to prevent conflicts with other libraries that a project may use.
I'd suggest prefixing the attributes this library adds with cam
or cv
for example so that app:aspectRatio
would become app:camAspectRatio
or app:cvAspectRatio
.
Recording video is very hard in android and recording video has not security problem because it's possible to do but hard (a feature that is hard for implementing is a negative point of android)
also it's aspect ratio is not OK with front camera (Samsung galaxy note 3)
java.lang.RuntimeException: Unable to resume activity: java.lang.SecurityException: Lacking privileges to access camera service
When I click the switch_camera in menu
E/AndroidRuntime: FATAL EXCEPTION: main Process: cn.yibulz.caviewtest, PID: 10550 java.lang.RuntimeException: setParameters failed at android.hardware.Camera.native_setParameters(Native Method) at android.hardware.Camera.setParameters(Camera.java:1671) at com.google.android.cameraview.Camera1.adjustCameraParameters(Camera1.java:323) at com.google.android.cameraview.Camera1.openCamera(Camera1.java:288) at com.google.android.cameraview.Camera1.start(Camera1.java:86) at com.google.android.cameraview.Camera1.setFacing(Camera1.java:136) at com.google.android.cameraview.CameraView.setFacing(CameraView.java:292) at cn.yibulz.caviewtest.MainActivity.onOptionsItemSelected(MainActivity.java:194) at android.app.Activity.onMenuItemSelected(Activity.java:2614) at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:406) at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195) at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103) at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103) at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:69) at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:203) at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:762) at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810) at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152) at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957) at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947) at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:616) at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:153) at android.view.View.performClick(View.java:4444) at android.view.View$PerformClick.run(View.java:18440) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5016) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611) at dalvik.system.NativeStart.main(Native Method)
Version: d0b508a
Affected device: HTC One M9
API: 23
Hi,
I'm having some issues with taking picture on device mentioned above. The problem occurs when picture is taken and camera is not auto-focused. process()
method of PictureCaptureCallback
class is called as expected, but condition
if (af == CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED ||
af == CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED) {
//...
}
is never satisfied. capture()
request is set as expected with CONTROL_AF_TRIGGER
flag. If i turn autofocus off via setAutoFocus(false)
, everything works fine.
I think this is Camera2 API issue but maybe there is something I'm missing.
Couse there is no jcenter, how I can import this?
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.hardware.camera2.CameraCaptureSession.capture(android.hardware.camera2.CaptureRequest, android.hardware.camera2.CameraCaptureSession$CaptureCallback, android.os.Handler)' on a null object reference
it would be helpful if there was a callback for reading preview frame.
I've build a fragment containing a CameraView instance and a toolbar, just like the default Android Camera app. I am trying to achive a smooth transition between a preview and a taken photo, but on some devices preview showing only a part of a picture, while resulting image is looking normal. I've tried to tweak the adjustViewBounds
parameter, but it changes nothing. It seems like photo is top-cropped inside a CameraView preview, so user can't see a whole picture before taking a shot.
P.S.
I've figured out that changing of a width and height according to an optimal size value here may help, but a preview image is not centered according to its frame.
Lower the minSdkVersion to 9.
Also, SurfaceView consumes less energy on Nougat and above.
When calling cameraView.start();
I get the following exception:
java.lang.IllegalStateException: Session has been closed; further changes are illegal.
at android.hardware.camera2.impl.CameraCaptureSessionImpl.checkNotClosed(CameraCaptureSessionImpl.java:606)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.setRepeatingRequest(CameraCaptureSessionImpl.java:227)
at com.google.android.cameraview.Camera2$3.onConfigured(Camera2.java:132)
at java.lang.reflect.Method.invoke(Native Method)
at android.hardware.camera2.dispatch.InvokeDispatcher.dispatch(InvokeDispatcher.java:39)
at android.hardware.camera2.dispatch.HandlerDispatcher$1.run(HandlerDispatcher.java:65)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Note: I'm not calling it in onResume
. Rather after the Camera permisison has been granted.
Hi There,
I'm embedding the cameraview in a Fragment (within an Activity) and have run into the following exception when mCameraView.start() is called in onResume():
java.lang.IllegalStateException: Session has been closed; further changes are illegal.
at android.hardware.camera2.impl.CameraCaptureSessionImpl.checkNotClosed(CameraCaptureSessionImpl.java:606)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.setRepeatingRequest(CameraCaptureSessionImpl.java:227)
at com.google.android.cameraview.Camera2$3.onConfigured(Camera2.java:132)
at java.lang.reflect.Method.invoke(Native Method)
at android.hardware.camera2.dispatch.InvokeDispatcher.dispatch(InvokeDispatcher.java:39)
at android.hardware.camera2.dispatch.HandlerDispatcher$1.run(HandlerDispatcher.java:65)
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:5417)
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)
I'm running on a Nexus 6P with Android 6.0.
Is there a working example that illustrates how to do this?
Thanks
I have following exception reported twice from Crashlytics in my app. Attaching device statistics.
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Surface android.media.ImageReader.getSurface()' on a null object reference
at com.google.android.cameraview.Camera2.startCaptureSession(SourceFile:470)
at com.google.android.cameraview.Camera2.access$200(SourceFile:50)
at com.google.android.cameraview.Camera2$1.onSurfaceTextureAvailable(SourceFile:70)
at android.view.TextureView.getHardwareLayer(TextureView.java:370)
at android.view.View.updateDisplayListIfDirty(View.java:14076)
at android.view.View.getDisplayList(View.java:14122)
at android.view.View.draw(View.java:14898)
at android.view.ViewGroup.drawChild(ViewGroup.java:3407)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3201)
at android.view.View.updateDisplayListIfDirty(View.java:14094)
at android.view.View.getDisplayList(View.java:14122)
at android.view.View.draw(View.java:14898)
at android.view.ViewGroup.drawChild(ViewGroup.java:3407)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3201)
at android.view.View.draw(View.java:15177)
at android.view.View.updateDisplayListIfDirty(View.java:14099)
at android.view.View.getDisplayList(View.java:14122)
at android.view.View.draw(View.java:14898)
at android.view.ViewGroup.drawChild(ViewGroup.java:3407)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3201)
at android.view.View.updateDisplayListIfDirty(View.java:14094)
at android.view.View.getDisplayList(View.java:14122)
at android.view.View.draw(View.java:14898)
at android.view.ViewGroup.drawChild(ViewGroup.java:3407)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3201)
at android.view.View.updateDisplayListIfDirty(View.java:14094)
at android.view.View.getDisplayList(View.java:14122)
at android.view.View.draw(View.java:14898)
at android.view.ViewGroup.drawChild(ViewGroup.java:3407)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3201)
at android.view.View.updateDisplayListIfDirty(View.java:14094)
at android.view.View.getDisplayList(View.java:14122)
at android.view.View.draw(View.java:14898)
at android.view.ViewGroup.drawChild(ViewGroup.java:3407)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3201)
at android.view.View.updateDisplayListIfDirty(View.java:14094)
at android.view.View.getDisplayList(View.java:14122)
at android.view.View.draw(View.java:14898)
at android.view.ViewGroup.drawChild(ViewGroup.java:3407)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3201)
at android.view.View.updateDisplayListIfDirty(View.java:14094)
at android.view.View.getDisplayList(View.java:14122)
at android.view.View.draw(View.java:14898)
at android.view.ViewGroup.drawChild(ViewGroup.java:3407)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3201)
at android.view.View.draw(View.java:15177)
at android.widget.FrameLayout.draw(FrameLayout.java:592)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2695)
at android.view.View.updateDisplayListIfDirty(View.java:14099)
at android.view.View.getDisplayList(View.java:14122)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:266)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:272)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:311)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2531)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2367)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1998)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1078)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5376)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
Thanks for this incredible library. When you save, it seems to save the highest-available resolution matching the ratio. Often you want mid-resolution. (1) where to look in the code to change this? (2) Perhaps in the future it would be possible to add a tag app:save_resolution="high" "mid" "low". Thanks again.
Hi,
After taking a picture with this library I create a Bitmap and set it in an ImageView as follow:
public void onPictureTaken(CameraView cameraView, byte[] data) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
imageView.setImageBitmap(bitmap);
}
This works fine on a Nexus 5X, however on Samsung devices the picture orientation appears to be incorrectly rotated 90 degrees to the left when the device orientation is portrait. Is there a way to fix this issue?
Could you publish it to jcenter so that we can use it more easily?
i need add manual focus when touch screen, how to do it?
I am getting the following error trace when I try to place the CameraView in the content_main.xml file. My gradle settings are configured for APK 9-24. I am currently able to take images using the camera2 API but I wanted to switch to CameraView to avoid writing code for the old API as well.
<com.google.android.cameraview.CameraView android:id="@+id/camera" android:layout_width="10px" android:layout_height="10px" android:adjustViewBounds="true" app:autoFocus="true" app:aspectRatio="4:3" app:facing="back"/>
java.lang.UnsupportedOperationException: Unsupported Service: camera at com.android.layoutlib.bridge.android.BridgeContext.getSystemService(BridgeContext.java:602) at com.google.android.cameraview.Camera2.<init>(Camera2.java:191) at com.google.android.cameraview.CameraView.<init>(CameraView.java:102) at com.google.android.cameraview.CameraView.<init>(CameraView.java:85) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:465) at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:172) at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:105) at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:186) at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:334) at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:345) at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:245) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70) at android.view.LayoutInflater.rInflate(LayoutInflater.java:834) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:861) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70) at android.view.LayoutInflater.rInflate(LayoutInflater.java:834) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater_Delegate.parseInclude(LayoutInflater_Delegate.java:197) at android.view.LayoutInflater.parseInclude(LayoutInflater.java:902) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:854) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70) at android.view.LayoutInflater.rInflate(LayoutInflater.java:834) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.inflate(LayoutInflater.java:518) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:324) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429) at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:389) at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:548) at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:533) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:966) at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:533) at com.android.tools.idea.rendering.RenderTask.lambda$inflate$72(RenderTask.java:659) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
private View.OnClickListener mOnClickListener = new View.OnClickListener() { @Override public void onClick(View v) { if (mCameraView != null) { mCameraView.takePicture(); } } };
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); mCameraView = (CameraView) findViewById(R.id.camera); ... shootB.setOnClickListener(mOnClickListener);
`private CameraView.Callback mCallback
= new CameraView.Callback() {
@Override
public void onCameraOpened(CameraView cameraView) {
Log.d("", "onCameraOpened");
}
@Override
public void onCameraClosed(CameraView cameraView) {
Log.d("", "onCameraClosed");
}
@Override
public void onPictureTaken(CameraView cameraView, final byte[] data) {
Log.d("", "onPictureTaken " + data.length);
handler.post(new Runnable() {
@Override
public void run() {
// This demo app saves the taken picture to a constant file.
// $ adb pull /sdcard/Android/data/com.google.android.cameraview.demo/files/Pictures/picture.jpg
File file = new File(Environment.getExternalStorageDirectory()+"/"+DATA_COLLECTOR_FOLDER+"/"+mChosenFile+"/picture.jpg");
OutputStream os = null;
try {
os = new FileOutputStream(file);
os.write(data);
os.close();
} catch (IOException e) {
Log.w("", "Cannot write to " + file, e);
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
// Ignore
}
}
}
}
});
}
};`
This is the error log that I get when I try to take a photo
10-14 20:15:19.315 26409-26409/com.thesis.ahmed.datacollector E/AndroidRuntime: FATAL EXCEPTION: main Process: com.thesis.ahmed.datacollector, PID: 26409 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.camera2.CaptureRequest$Builder.set(android.hardware.camera2.CaptureRequest$Key, java.lang.Object)' on a null object reference at com.google.android.cameraview.Camera2.lockFocus(Camera2.java:547) at com.google.android.cameraview.Camera2.takePicture(Camera2.java:323) at com.google.android.cameraview.CameraView.takePicture(CameraView.java:376) at com.thesis.ahmed.datacollector.MainActivity$1.onClick(MainActivity.java:79) at android.view.View.performClick(View.java:4856) at android.view.View$PerformClick.run(View.java:19956) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:211) at android.app.ActivityThread.main(ActivityThread.java:5389) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
FATAL EXCEPTION: main
Process: com.google.android.cameraview.demo, PID: 3438
java.lang.RuntimeException: Unable to resume activity {com.google.android.cameraview.demo/com.google.android.cameraview.demo.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
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)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at com.google.android.cameraview.Camera2.chooseCameraIdByFacing(Camera2.java:388)
at com.google.android.cameraview.Camera2.start(Camera2.java:233)
at com.google.android.cameraview.CameraView.start(CameraView.java:226)
at com.google.android.cameraview.demo.MainActivity.onResume(MainActivity.java:140)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
at android.app.Activity.performResume(Activity.java:6312)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
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)
Hi.
I'm using you library.
In some cellphones like Samsung Note 4 when I use front camera it dose not work with this Log:
15726-23967/com.google.android.cameraview.demo W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
15726-23967/com.google.android.cameraview.demo W/LegacyMetadataMapper: convertAfModeToLegacy - ignoring unsupported mode 4, defaulting to fixed
15726-23967/com.google.android.cameraview.demo W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
15726-23967/com.google.android.cameraview.demo W/LegacyMetadataMapper: convertAfModeToLegacy - ignoring unsupported mode 4, defaulting to fixed
Process: com.google.android.cameraview.demo, PID: 17229
java.lang.NullPointerException: Attempt to invoke virtual method 'android.hardware.camera2.CaptureRequest$Builder android.hardware.camera2.CameraDevice.createCaptureRequest(int)' on a null object reference
at com.google.android.cameraview.Camera2.captureStillPicture(Camera2.java:562)
at com.google.android.cameraview.Camera2.takePicture(Camera2.java:325)
at com.google.android.cameraview.CameraView.takePicture(CameraView.java:376)
at com.google.android.cameraview.demo.MainActivity$1.onClick(MainActivity.java:91)
at android.view.View.performClick(View.java:5280)
at android.view.View$PerformClick.run(View.java:21239)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:234)
at android.app.ActivityThread.main(ActivityThread.java:5526)
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)
Getting a black screen on my Pixel device. Logcat shows this error:
12-10 09:51:35.518 570 1434 E mm-camera: <C2D ><ERROR> 394: c2d_module_start_session: Cannot open ION
12-10 09:51:35.521 570 1441 E mm-camera: <STATS_AIS ><ERROR> 605: sensor_native_thread_handler: Laser Sensor not found!
12-10 09:51:35.548 570 30919 E mm-camera: <MCT ><ERROR> 537: mct_pipeline_lookup_session_data: Couldn't find stream for sessionid 15
12-10 09:51:35.548 570 30919 E mm-camera: <CPP ><ERROR> 2206: cpp_module_notify_add_stream: failed, CPP current version can not support rotation
12-10 09:51:35.576 570 570 E Camera2-Metadata: Mismatched tag type when updating entry enable (-2146893824) of type byte; got type int32 data instead
12-10 09:51:35.576 570 570 E Camera2-Metadata: Mismatched tag type when updating entry is_main (-2146893823) of type byte; got type int32 data instead
12-10 09:51:35.578 570 9921 E QCamera : <MCI><ERROR> mm_channel_fsm_fn_stopped: 893: invalid state (1) for evt (6)
12-10 09:51:35.578 570 9921 E QCamera3HWI: int qcamera::QCamera3HardwareInterface::configureStreamsPerfLocked(camera3_stream_configuration_t *): Blob size greater than 4k and multiple streams are on encoder output
12-10 09:51:35.578 570 9921 E Camera3-Device: Camera 0: configureStreamsLocked: Set of requested inputs/outputs not supported by HAL
12-10 09:51:35.578 570 9921 E CameraDeviceClient: endConfigure: Camera 0: Unsupported set of inputs/outputs provided
12-10 09:51:35.579 32440 32440 E CameraCaptureSession: Session 0: Failed to create capture session; configuration failed
12-10 09:51:35.581 570 30919 E QCamera : <MCI><ERROR> mm_channel_fsm_fn_stopped: 893: invalid state (1) for evt (6)
12-10 09:51:35.582 570 30919 E QCamera3HWI: int qcamera::QCamera3HardwareInterface::configureStreamsPerfLocked(camera3_stream_configuration_t *): Blob size greater than 4k and multiple streams are on encoder output
12-10 09:51:35.582 570 30919 E Camera3-Device: Camera 0: configureStreamsLocked: Set of requested inputs/outputs not supported by HAL
12-10 09:51:35.582 570 30919 E CameraDeviceClient: endConfigure: Camera 0: Unsupported set of inputs/outputs provided
12-10 09:51:35.582 32440 32440 E CameraCaptureSession: Session 1: Failed to create capture session; configuration failed
12-10 09:51:35.599 32440 32440 E Camera2 : Failed to configure capture session.
12-10 09:51:35.599 32440 32440 E Camera2 : Failed to configure capture session.
12-10 09:51:35.634 570 1420 E mm-camera: <SENSOR><ERROR> 37: af_actuator_power_up: failed: rc = -1
12-10 09:51:35.634 570 1420 E mm-camera: <SENSOR><ERROR> 688: af_actuator_init: failed rc -5
12-10 09:51:35.957 570 9921 E QCamera : <MCI><ERROR> mm_channel_fsm_fn_stopped: 893: invalid state (1) for evt (6)
12-10 09:51:35.957 570 9921 E QCamera3HWI: int qcamera::QCamera3HardwareInterface::configureStreamsPerfLocked(camera3_stream_configuration_t *): Blob size greater than 4k and multiple streams are on encoder output
12-10 09:51:35.957 570 9921 E Camera3-Device: Camera 0: configureStreamsLocked: Set of requested inputs/outputs not supported by HAL
12-10 09:51:35.958 570 9921 E CameraDeviceClient: endConfigure: Camera 0: Unsupported set of inputs/outputs provided
12-10 09:51:35.959 32440 32440 E CameraCaptureSession: Session 2: Failed to create capture session; configuration failed
12-10 09:51:35.960 32440 32440 E Camera2 : Failed to configure capture session.
12-10 09:51:40.808 2205 2213 E DataBuffer: Internal data leak within a DataBuffer object detected! Be sure to explicitly call release() on all DataBuffer extending objects when you are done with them. (internal object: com.google.android.gms.common.data.DataHolder@c2c7b1b)
12-10 09:51:40.809 2205 2213 E DataBuffer: Internal data leak within a DataBuffer object detected! Be sure to explicitly call release() on all DataBuffer extending objects when you are done with them. (internal object: com.google.android.gms.common.data.DataHolder@e54d4b8)
12-10 09:51:40.809 2205 2213 E DataBuffer: Internal data leak within a DataBuffer object detected! Be sure to explicitly call release() on all DataBuffer extending objects when you are done with them. (internal object: com.google.android.gms.common.data.DataHolder@13ed291)
I experienced a crash of the demo app when running on an API level 17 device. This is the stacktrace:
com.google.android.cameraview.demo E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to resume activity {com.google.android.cameraview.demo/com.google.android.cameraview.demo.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2957)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2986)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2421)
at android.app.ActivityThread.access$600(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5455)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:966)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:733)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.google.android.cameraview.Camera1.setFlashInternal(Camera1.java:405)
at com.google.android.cameraview.Camera1.adjustCameraParameters(Camera1.java:327)
at com.google.android.cameraview.Camera1.openCamera(Camera1.java:294)
at com.google.android.cameraview.Camera1.start(Camera1.java:114)
at com.google.android.cameraview.CameraView.start(CameraView.java:226)
at com.google.android.cameraview.demo.MainActivity.onResume(MainActivity.java:140)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1190)
at android.app.Activity.performResume(Activity.java:5289)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2944)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2986)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2421)
at android.app.ActivityThread.access$600(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5455)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:966)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:733)
at dalvik.system.NativeStart.main(Native Method)
The cause seems to be that Camera1 does not expect devices to not support flash modes, which is possible by the Camera.Parameters API.
I have tried with aspectRatio="1:1" but nothing change.
Hi!
After last update: f0eef9a I get next bug (not olways, but offen):
FATAL EXCEPTION: main
Process: ua.com.oncreate.infitting, PID: 6792
java.lang.RuntimeException: takePicture failed
at android.hardware.Camera.native_takePicture(Native Method)
at android.hardware.Camera.takePicture(Camera.java:1523)
at com.google.android.cameraview.Camera1.takePictureInternal(Camera1.java:227)
at com.google.android.cameraview.Camera1.takePicture(Camera1.java:222)
at com.google.android.cameraview.CameraView.takePicture(CameraView.java:388)
at ua.com.oncreate.infitting.activity.camera.CameraActivity.onClick(CameraActivity.java:264)
at android.view.View.performClick(View.java:5697)
at android.view.View$PerformClick.run(View.java:22526)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
I run project on Note 4 (6.0.1), but library used camera1 API, why? What I should do with this bug?
Hello, I think I met a big trouble, I'm going to do facial recognition to develop a custom camera, through a variety of ways to solve, so find the CameraView, really very good, I can use this to make a small demo, but into my project always quote exception no camera, I really don't know what's wrong, very helpless, who can help me, thank you
This is more of a question than an issue:
Why are you guys reverting back to the usage of a SurfaceView for API >= 24? What's wrong with TextureView on Nougat+?
I try to start camera after user set permission
@OverRide
public void onRequestPermissionsResult(int requestCode, @nonnull String[] permissions,
@nonnull int[] grantResults) {
switch (requestCode) {
case REQUEST_CAMERA_PERMISSION:
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
cameraView.start();
}
break;
}
}
but I get exception:
FATAL EXCEPTION: main
Process: ua.com.oncreate.infitting, PID: 15583
java.lang.RuntimeException: Failed to start camera session
at com.google.android.cameraview.Camera2.startCaptureSession(Camera2.java:443)
at com.google.android.cameraview.Camera2$1.onOpened(Camera2.java:65)
at android.hardware.camera2.impl.CameraDeviceImpl$1.run(CameraDeviceImpl.java:134)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Samsung Note 4 API 6.0.1
Because of the attribute names i cant use it as other libs are using the same names.
Can you change them? (add "cam_" prefix)
In Camera2.setAspectRatio(AspectRatio ratio), you have this check at the start of the method:
if (ratio == null || ratio.equals(mAspectRatio) ||
**!mPreviewSizes.ratios().contains(ratio)**) {
// TODO: Better error handling
return;
}
setAspectRatio() is called in the constructor of CameraView once the custom XML attribute value for app:aspectRatio is retrieved. At this time mPreviewSizes.ratios() will always be empty because camera info has not been collected yet, which happens on Camera2.start(). So, this method will always return without doing anything, and the default aspect ratio -- 4:3 -- will always be used.
I fixed this by collecting camera info before this check
chooseCameraIdByFacing();
collectCameraInfo();
if (ratio == null || ratio.equals(mAspectRatio) ||
!mPreviewSizes.ratios().contains(ratio)) {
// TODO: Better error handling
return;
}
Device: Nexus 5x running on Nougat (NRD90M)
09-11 07:05:44.562 23963-23963/com.google.android.cameraview.demo E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.google.android.cameraview.demo, PID: 23963
java.lang.IllegalStateException: Session has been closed; further changes are illegal.
at android.hardware.camera2.impl.CameraCaptureSessionImpl.checkNotClosed(CameraCaptureSessionImpl.java:606)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.setRepeatingRequest(CameraCaptureSessionImpl.java:227)
at com.google.android.cameraview.Camera2$3.onConfigured(Camera2.java:132)
at java.lang.reflect.Method.invoke(Native Method)
at android.hardware.camera2.dispatch.InvokeDispatcher.dispatch(InvokeDispatcher.java:39)
at android.hardware.camera2.dispatch.HandlerDispatcher$1.run(HandlerDispatcher.java:65)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
E/Camera2: Failed to start camera preview.
java.lang.IllegalStateException: Session has been closed; further changes are illegal.
at android.hardware.camera2.impl.CameraCaptureSessionImpl.checkNotClosed(CameraCaptureSessionImpl.java:606)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.setRepeatingRequest(CameraCaptureSessionImpl.java:227)
at com.google.android.cameraview.Camera2$2.onConfigured(Camera2.java:98)
at java.lang.reflect.Method.invoke(Native Method)
at android.hardware.camera2.dispatch.InvokeDispatcher.dispatch(InvokeDispatcher.java:39)
at android.hardware.camera2.dispatch.HandlerDispatcher$1.run(HandlerDispatcher.java:65)
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:5422)
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)
Please add timer functionality. Currently, I'm going with:
private int timer;
public void capture(int seconds, final OnCapturingListener listener) {
this.timer = seconds;
final Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
if (timer > 0) {
timer--;
listener.onTicking(timer);
handler.postDelayed(this, 1000);
} else {
listener.onCapturing();
takePicture();
}
}
});
}
public interface OnCapturingListener {
void onTicking(int remainingSeconds);
void onCapturing();
}
Not every single click results in onPictureTaken() callback.
I'm not talking about throttling when you click too fast, as you can see, it's enough time between clicks. It's just skipped randomly.
OnePlus One, 6.0.1
TL;DR of this log: Capture, Skip, Capture
18:30:24.111 D/MainActivity: onClick:
18:30:24.158 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:24.158 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:24.158 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:24.211 D/LegacyFocusStateMapper: onAutoFocusMoving - ignoring move callbacks from old af run1
18:30:24.213 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:24.213 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:24.213 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:24.269 I/RequestQueue: Repeating capture request cancelled.
18:30:24.302 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:24.303 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:24.303 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:24.883 I/RequestThread-0: Received jpeg.
18:30:24.884 I/RequestThread-0: Producing jpeg buffer...
18:30:24.887 D/ImageReader_JNI: ImageReader_lockedImageSetup: Receiving JPEG in HAL_PIXEL_FORMAT_RGBA_8888 buffer.
18:30:24.889 D/MainActivity: onPictureTaken 1026780
18:30:24.922 I/RequestQueue: Repeating capture request set.
18:30:24.924 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:24.924 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:24.924 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:25.053 D/LegacyFocusStateMapper: onAutoFocusMoving - ignoring move callbacks from old af run2
18:30:25.155 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:25.155 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:25.157 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:29.720 D/MainActivity: onClick:
18:30:29.771 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:29.772 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:29.772 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:29.796 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:29.796 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:29.796 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:36.730 D/MainActivity: onClick:
18:30:36.796 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:36.796 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:36.796 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:36.818 D/LegacyFocusStateMapper: onAutoFocusMoving - ignoring move callbacks from old af run4
18:30:36.872 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:36.872 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:36.872 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:36.873 I/RequestQueue: Repeating capture request cancelled.
18:30:36.941 W/LegacyRequestMapper: convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
18:30:36.941 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:36.941 W/LegacyRequestMapper: Only received metering rectangles with weight 0.
18:30:37.702 I/RequestThread-0: Received jpeg.
18:30:37.702 I/RequestThread-0: Producing jpeg buffer...
18:30:37.703 D/ImageReader_JNI: ImageReader_lockedImageSetup: Receiving JPEG in HAL_PIXEL_FORMAT_RGBA_8888 buffer.
18:30:37.704 D/MainActivity: onPictureTaken 1022546
On tapping multiple times on the capture image button the demo app crashes.
The issue appeared on Samsung GT-I9300I running Android 4.4.4
(By the way very helpful library. Can't even begin to tell how big a help this has been.)
com.google.android.cameraview.demo E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.google.android.cameraview.demo, PID: 22695
java.lang.RuntimeException: autoFocus failed
at android.hardware.Camera.native_autoFocus(Native Method)
at android.hardware.Camera.autoFocus(Camera.java:1131)
at com.google.android.cameraview.Camera1.takePicture(Camera1.java:212)
at com.google.android.cameraview.CameraView.takePicture(CameraView.java:378)
at com.google.android.cameraview.demo.MainActivity$1.onClick(MainActivity.java:91)
at android.view.View.performClick(View.java:4741)
at android.view.View$PerformClick.run(View.java:19384)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5679)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.