florent37 / camerafragment Goto Github PK
View Code? Open in Web Editor NEWA simple easy-to-integrate Camera Fragment for Android
License: Apache License 2.0
A simple easy-to-integrate Camera Fragment for Android
License: Apache License 2.0
final Configuration.Builder builder = new Configuration.Builder();
builder.setCamera(Configuration.CAMERA_FACE_REAR);
final CameraFragment cameraFragment = CameraFragment.newInstance(builder.build());
getSupportFragmentManager().beginTransaction()
.replace(R.id.content, cameraFragment, FRAGMENT_TAG)
.commit();
Not work .
Hey
I got a crash on first nexus 7 device. it has no back camera - only front camera
Crashlog
java.lang.RuntimeException: Unable to start activity ComponentInfo{at.rosenbauer.emerec.mobile/at.rosenbauer.emerec.feed.feed.photovideo.CapturePhotoVideoActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Integer.equals(java.lang.Object)' on a null object reference
02-14 08:53:31.563 17915-17915/? W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.app.ActivityThread.access$900(ActivityThread.java:154)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.os.Looper.loop(Looper.java:135)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5294)
02-14 08:53:31.563 17915-17915/? W/System.err: at java.lang.reflect.Method.invoke(Native Method)
02-14 08:53:31.563 17915-17915/? W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
02-14 08:53:31.563 17915-17915/? W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
02-14 08:53:31.563 17915-17915/? W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
02-14 08:53:31.563 17915-17915/? W/System.err: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Integer.equals(java.lang.Object)' on a null object reference
02-14 08:53:31.563 17915-17915/? W/System.err: at com.github.florent37.camerafragment.internal.controller.impl.Camera1Controller.switchCamera(Camera1Controller.java:105)
02-14 08:53:31.563 17915-17915/? W/System.err: at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.setCameraTypeFrontBack(BaseAnncaFragment.java:436)
02-14 08:53:31.563 17915-17915/? W/System.err: at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onViewCreated(BaseAnncaFragment.java:270)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1314)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)
02-14 08:53:31.563 17915-17915/? W/System.err: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)
02-14 08:53:31.564 17915-17915/? W/System.err: at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
02-14 08:53:31.564 17915-17915/? W/System.err: at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
02-14 08:53:31.564 17915-17915/? W/System.err: at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
02-14 08:53:31.564 17915-17915/? W/System.err: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
02-14 08:53:31.564 17915-17915/? W/System.err: at android.app.Activity.performStart(Activity.java:6006)
02-14 08:53:31.564 17915-17915/? W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2321)
02-14 08:53:31.564 17915-17915/? W/System.err: ... 10 more
Looking at the code you need to callsetResultListener
even if you pass in a callback into takePhotoOrCaptureVideo
in order to get the callback called.
The onPhotoTaken never gets called, even when i take a picture. Why is this?
btn_Capture.setOnClickListener {
cameraFragment?.takePhotoOrCaptureVideo(object : CameraFragmentResultListener {
override fun onVideoRecorded(filePath: String?) {
}
override fun onPhotoTaken(bytes: ByteArray?, filePath: String?) {
val VC = Intent(this@camActivity, EditPostActivity::class.java)
//VC.putExtra("picture", bytes)
startActivity(VC)
}
},
"/storage/self/primary",
"photo0")
}
please help me in doing this because when i start activity for camera it shows blank space on top and bottom and each time i have to go to settings and set the size of camera plz help me this problem occurs only when we are on front camera not for back camera.
Hi,
I am seeking a library with tap to focus feature, hoped to find here, but I saw it is not present. What a pitty...
George
E/Camera2Manager: Error setting flash:
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.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashModeAndBuildPreviewRequest(Camera2Manager.java:705)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashMode(Camera2Manager.java:235)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.setFlashMode(Camera2Controller.java:130)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onFlashModeChanged(BaseAnncaFragment.java:509)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.setFlashMode(BaseAnncaFragment.java:561)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onViewCreated(BaseAnncaFragment.java:255)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1132)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:181)
at com.trello.rxlifecycle.components.support.RxAppCompatActivity.onStart(RxAppCompatActivity.java:52)
at cn.droidlover.xdroidmvp.mvp.XActivity.onStart(XActivity.java:70)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1254)
at android.app.Activity.performStart(Activity.java:6930)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2756)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2864)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6524)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
E/Camera2Manager: Error setting flash:
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.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashModeAndBuildPreviewRequest(Camera2Manager.java:705)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashMode(Camera2Manager.java:235)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.setFlashMode(Camera2Controller.java:130)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onFlashModeChanged(BaseAnncaFragment.java:509)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.notifyListeners(BaseAnncaFragment.java:277)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onViewCreated(BaseAnncaFragment.java:272)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1132)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:181)
at
invoke the addCamera() then is a error
I use some cellphone to take a picture. However, I switch to frontCamera and the screen is whole dark.
Sony Xperia Z5 compat
When i take an image with the front facing camera, the resulting preview activity displays a rotated, mirrored version of the image. How can i get the exact image as is when image is taken like the rear camera.
Hi,
First of all great work for the library !
I've an issue, using cameraFragment in a fragment of mine.
I'm setting my cameraFragment like this:
final CameraFragment cameraFragment = CameraFragment.newInstance(new Configuration.Builder().build());
getChildFragmentManager().beginTransaction()
.replace(R.id.content, cameraFragment, "camera")
.addToBackStack(null)
.commit();
It's all looking great and the camera view is ok, but when i want to take a photo using the following code:
cameraFragment.takePhotoOrCaptureVideo(new CameraFragmentResultListener() {
@Override
public void onVideoRecorded(String filePath) {
Log.d("PhotoOrVideo","onVideoRecorded");
}
@Override
public void onPhotoTaken(byte[] bytes, String filePath) {
Log.d("PhotoOrVideo","onPhotoTaken");
}
});
I don't get anything and neither onPhotoTaken or onVideoRecorded is called.
What is strange is i get log, saying it's all working great:
onRecordStatePhoto
Failed to open libwvm.so: dlopen failed: library "libwvm.so" not found
I/OMXClient: MuxOMX ctor
I/OMXClient: MuxOMX ctor
D/Camera2Manager: onCaptureCompleted:
D/Camera2Manager: onPhotoSuccessFinish:
D/Camera2Manager: onCaptureCompleted:
D/Camera2Manager: onPhotoSuccessFinish:
Is the issue comming from libwvm.so ? Looking into your code, the only way I can get onPhotoSuccessFinish but no call of onPhotoTaken would be for my listener to be null, but I just set it once and don't touch it anymore.
Any idea ?
#0. Crashed: main: 0 0 0x0000000000000000
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.openCamera(Camera2Manager.java:185)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.openCamera(Camera2Manager.java:56)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.onCameraClosed(Camera2Controller.java:174)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.onCameraClosed(Camera2Controller.java:31)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager$4$1.run(Camera2Manager.java:228)
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:7409)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
--
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.post(java.lang.Runnable)' on a null object reference
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.openCamera(Camera2Manager.java:185)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.openCamera(Camera2Manager.java:56)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.onCameraClosed(Camera2Controller.java:174)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.onCameraClosed(Camera2Controller.java:31)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager$4$1.run(Camera2Manager.java:228)
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:7409)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
#0. Crashed: main: 0 0 0x0000000000000000
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.openCamera(Camera2Manager.java:185)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.openCamera(Camera2Manager.java:56)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.onCameraClosed(Camera2Controller.java:174)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.onCameraClosed(Camera2Controller.java:31)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager$4$1.run(Camera2Manager.java:228)
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:7409)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
#1. com.mixpanel.android.AnalyticsWorker
at com.android.org.conscrypt.NativeCrypto.SSL_read(NativeCrypto.java)
at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:811)
at com.android.okhttp.okio.Okio$2.read(Okio.java:140)
at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:211)
at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:316)
at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:310)
at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:206)
at com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:239)
at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:104)
at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:1154)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:982)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:482)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:418)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:235)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
at com.mixpanel.android.util.HttpService.performRequest(HttpService.java:142)
at com.mixpanel.android.mpmetrics.DecideChecker.getUrls(DecideChecker.java:289)
at com.mixpanel.android.mpmetrics.DecideChecker.getDecideResponseFromServer(DecideChecker.java:231)
at com.mixpanel.android.mpmetrics.DecideChecker.runDecideCheck(DecideChecker.java:86)
at com.mixpanel.android.mpmetrics.DecideChecker.runDecideChecks(DecideChecker.java:68)
at com.mixpanel.android.mpmetrics.AnalyticsMessages$Worker$AnalyticsMessageHandler.handleMessage(AnalyticsMessages.java:263)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
#2. Queue
at java.lang.Object.wait(Object.java)
at java.lang.Thread.parkFor$(Thread.java:1220)
at sun.misc.Unsafe.park(Unsafe.java:299)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2013)
at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1036)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1098)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
#3. Crashlytics Exception Handler1
at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
at java.lang.Thread.getStackTrace(Thread.java:580)
at java.lang.Thread.getAllStackTraces(Thread.java:522)
at com.crashlytics.android.core.CrashlyticsController.writeSessionEvent(CrashlyticsController.java:1114)
at com.crashlytics.android.core.CrashlyticsController.writeFatal(CrashlyticsController.java:852)
at com.crashlytics.android.core.CrashlyticsController.access$400(CrashlyticsController.java:59)
at com.crashlytics.android.core.CrashlyticsController$6.call(CrashlyticsController.java:292)
at com.crashlytics.android.core.CrashlyticsController$6.call(CrashlyticsController.java:285)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:75)
at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30)
at java.lang.Thread.run(Thread.java:818)
#4. TubeSockReader-1
at com.android.org.conscrypt.NativeCrypto.SSL_read(NativeCrypto.java)
at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:811)
at libcore.io.Streams.readFully(Streams.java:81)
at java.io.DataInputStream.readFully(DataInputStream.java:99)
at blv.a(:com.google.android.gms.DynamiteModulesC@11509438:78)
at blv.a(:com.google.android.gms.DynamiteModulesC@11509438:13)
at blq.run(:com.google.android.gms.DynamiteModulesC@11509438:69)
at java.lang.Thread.run(Thread.java:818)
#5. Queue
at java.lang.Object.wait(Object.java)
at java.lang.Thread.parkFor$(Thread.java:1220)
at sun.misc.Unsafe.park(Unsafe.java:299)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2013)
at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:510)
at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1036)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1098)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
#6. TubeSockWriter-1
at java.lang.Object.wait(Object.java)
at java.lang.Thread.parkFor$(Thread.java:1220)
at sun.misc.Unsafe.park(Unsafe.java:299)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2013)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
at blw.a(:com.google.android.gms.DynamiteModulesC@11509438:53)
at blx.run(:com.google.android.gms.DynamiteModulesC@11509438:5)
at java.lang.Thread.run(Thread.java:818)
Hi
I add the camera fragment with the following settings:
Configuration.Builder configurationBuilder = new Configuration.Builder();
configurationBuilder.setMediaAction(
mIsPhoto ? Configuration.MEDIA_ACTION_PHOTO : Configuration.MEDIA_ACTION_VIDEO);
configurationBuilder.setMediaQuality(
mIsPhoto ? Configuration.MEDIA_QUALITY_HIGHEST : Configuration.MEDIA_QUALITY_LOW);
configurationBuilder.setCamera(Configuration.CAMERA_FACE_REAR);
I would like to start with rear camera - but everytime the front facing camera is selected. What I am doing wrong?
Thanks for the great lib.
Hi!
First of all thanks for open sourcing this, is great. I've been using it and all great so far. I need to have a fullscreen camera by default (16:9). Right now the only thing I could do is provide the user your Settings dialog and they can try different resolutions but it won't look nice with my layout & needs. Would be great to be able to get the different resolutions or/and aspect ratios available for the device and then pass one of this to the Configuration Builder. What do you think? Is this something you would consider adding?
Best,
Rafa
Hi @florent37,
I have tested the library on multiple phones and there seems to be an issue with brightness in dual rear camera phones.(the screen is almost completely black); this is happing on huawei p9 plus
.
is there a way to solve this issue ?
thanks.
Hi if you run the demo and start the camera and place it on a table (for example) or hold it flat, you will see that the icons start rotating like crazy.
I checked the issue and saw that it comes from the BaseAnncaFragment. I fixed it with this method and checking this before calling onScreenRotation(int degrees);
/**
* Taken from https://stackoverflow.com/questions/11175599/how-to-measure-the-tilt-of-the-phone-in-xy-plane-using-accelerometer-in-android/15149421#15149421
*
* @param sensorEvent
* @return - true if phone is on flat surcafe, false otherwise
*/
private boolean isPhoneOnFlatSurface(SensorEvent sensorEvent) {
float[] g;
g = sensorEvent.values.clone();
double norm_Of_g = Math.sqrt(g[0] * g[0] + g[1] * g[1] + g[2] * g[2]);
// Normalize the accelerometer vector
g[0] = (float) (g[0] / norm_Of_g);
g[1] = (float) (g[1] / norm_Of_g);
g[2] = (float) (g[2] / norm_Of_g);
int inclination = (int) Math.round(Math.toDegrees(Math.acos(g[2])));
return inclination < 25 || inclination > 155;
}
Checking
https://github.com/florent37/CameraFragment/blob/master/camerafragment/src/main/java/com/github/florent37/camerafragment/internal/enums/Camera.java
and
https://developer.android.com/reference/android/hardware/Camera.CameraInfo.html
shouldn't the numbers from the enum be like Android's Camera?
Also, on Camera1Controller, the cameraFace, which is set on Configuration Builder, is pretty much useless.
@Override
public void switchCamera(@Configuration.CameraFace final int cameraFace) {
final Integer backCameraId = cameraManager.getFaceBackCameraId();
final Integer frontCameraId = cameraManager.getFaceFrontCameraId();
if(cameraManager.getCurrentCameraId().equals(frontCameraId)){
setCurrentCameraId(backCameraId);
} else {
setCurrentCameraId(frontCameraId);
}
cameraManager.closeCamera(this);
}
here is the crash log
D/CameraHelper: Failed to create directory.
D/Camera1Manager: Error creating media file, check storage permissions.
my device is Motorola XT1068 running on Android 5.0.2 (API 21)
whenever i click on TAKE PHOTO button the application doesn't do anything
first click add camera error。
Hello,
I am using the Camera fragment, and here is my problem:
when i take a photo the camera fragment preview the captured photo and no live preview of the camera shown again,
i need to take a series of photos without previewing the captured photo,
right now i am recreating the hole activity in order to clear the camera preview - and that is not a efficient solution -
please help me or guide me to another solution
Bests,
Hi,
Firstly thanks for the great library.
Ive implemented it in an app of mine and Im getting the following error for certain users
Fatal Exception: java.lang.RuntimeException: Camera is being used after Camera.release() was called at android.hardware.Camera.native_getParameters(Camera.java) at android.hardware.Camera.getParameters(Camera.java:1944) at com.github.florent37.camerafragment.internal.manager.impl.Camera1Manager.getPhotoSizeForQuality(Camera1Manager.java:271) at com.github.florent37.camerafragment.internal.manager.impl.Camera1Manager.getPhotoQualityOptions(Camera1Manager.java:680) at com.github.florent37.camerafragment.internal.controller.impl.Camera1Controller.getPhotoQualityOptions(Camera1Controller.java:216) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.setCameraPreview(BaseAnncaFragment.java:653) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment$3.updateCameraPreview(BaseAnncaFragment.java:188) at com.github.florent37.camerafragment.internal.controller.impl.Camera1Controller.onCameraOpened(Camera1Controller.java:164) at com.github.florent37.camerafragment.internal.controller.impl.Camera1Controller.onCameraOpened(Camera1Controller.java:32) at com.github.florent37.camerafragment.internal.manager.impl.Camera1Manager$1$1.run(Camera1Manager.java:74) 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:5254) 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:902) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
Its not something happening on every device and everytime its used but it does crop up from time to time. Havent been able to identify the exact conditions as yet but any help would be appreciated.
Thanks.
In order to stop recording video I've to create a new fragment that extend CameraFragment because the method is protected.
Looks like when Camera2Controller.setFlashMode have been called, from BaseAncaFragment onFlashModeChanged. The Camera2Manager previewRequestBuilder is null resulting this:
Error setting flash:
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.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashModeAndBuildPreviewRequest(Camera2Manager.java:705)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashMode(Camera2Manager.java:235)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.setFlashMode(Camera2Controller.java:112)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onFlashModeChanged(BaseAnncaFragment.java:500)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.setFlashMode(BaseAnncaFragment.java:552)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onViewCreated(BaseAnncaFragment.java:255)
Hi,
I need to restart the process after taking and reviewing a photo/video.
Should I create a new instance of CameraFragment for to do it?
And is there any method to check the current state?
These are not issues, but they should be there, i think..
Regards,
Huseyin.
Application crash with IllegalStateException:
Terminating app due to an uncaught exception 'java.lang.IllegalStateException', reason: 'Image is already closed'
0 | java.lang.IllegalStateException: Image is already closed
1 | at android.media.Image.throwISEIfImageIsInvalid(Image.java:68)
2 | at android.media.ImageReader$SurfaceImage.getPlanes(ImageReader.java:733)
3 | at com.github.florent37.camerafragment.internal.utils.ImageSaver.run(ImageSaver.java:39)
4 | at android.os.Handler.handleCallback(Handler.java:751)
5 | at android.os.Handler.dispatchMessage(Handler.java:95)
6 | at android.os.Looper.loop(Looper.java:154)
7 | at android.os.HandlerThread.run(HandlerThread.java:61)
Got the following exception on Sony C1504, Android 4.1.1 (rooted):
Fatal Exception: java.lang.NullPointerException at com.github.florent37.camerafragment.internal.controller.impl.Camera1Controller.switchCamera(Camera1Controller.java:105) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.switchCameraTypeFrontBack(BaseAnncaFragment.java:421) at com.dgtalgroup.retailmonitor.gui.activities.CameraActivity.toggleCamara(CameraActivity.java:111) at com.dgtalgroup.retailmonitor.gui.activities.CameraActivity$$ViewBinder$1.doClick(CameraActivity$$ViewBinder.java:18)
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
at android.view.View.performClick(View.java:4106)
at android.view.View$PerformClick.run(View.java:17150)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4793)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575)
at dalvik.system.NativeStart.main(NativeStart.java)
Is there any way to listen the camera1 or camera2 auto focus event such like Camera.AutoFocusCallback,then maybe I can do some shutter animation
Steps to reproduce it:
Basically, it looks like the flash state is not preserved. Toggling programmatically using 3 times "toggleFlashMode()" fixes it (really hacky but it's the only public method of the api that interacts with the flash).
First of all thanks for this useful library but im facing a problem in my Samsung Galaxy sm-g600fy .
When im trying to switch from front to rear camera then app stop working it's not a crash issue but it freeze the screen and all controls stop working.
i don't know why it's happening but i really need help to solve it.
if anyone facing the same issue then please contact me on [email protected]
When photo taken in galaxy s7 camera, blur photo captured with line line on screen.
Hello,
very great library it is. Can you please tell me how to set maximum seconds for recording video? I want to set maximum 20 seconds limit for video recording.
Hello,
I used Samsung galaxy note 4, a fullscreen camera can't open into device.
give me hint or guide me how to open fullscreen camera into device.
unable to access recorded video. I get a corrupted video/missing codec error when trying to open. The audio works however.
Phone: LG-D213, Android 4.4.2
Fatal Exception: java.lang.NullPointerException
at com.github.florent37.camerafragment.internal.manager.impl.Camera1Manager.getPhotoSizeForQuality(Camera1Manager.java:258)
at com.github.florent37.camerafragment.internal.manager.impl.Camera1Manager.getPhotoQualityOptions(Camera1Manager.java:621)
at com.github.florent37.camerafragment.internal.controller.impl.Camera1Controller.getPhotoQualityOptions(Camera1Controller.java:200)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.setCameraPreview(BaseAnncaFragment.java:639)
at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment$3.updateCameraPreview(BaseAnncaFragment.java:183)
at com.github.florent37.camerafragment.internal.controller.impl.Camera1Controller.onCameraOpened(Camera1Controller.java:148)
at com.github.florent37.camerafragment.internal.controller.impl.Camera1Controller.onCameraOpened(Camera1Controller.java:30)
at com.github.florent37.camerafragment.internal.manager.impl.Camera1Manager$1$1.run(Camera1Manager.java:73)
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:5103)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(NativeStart.java)
Sony C1504, Android 4.1.1 (rooted)
Fatal Exception: java.lang.NullPointerException at com.github.florent37.camerafragment.internal.manager.impl.Camera1Manager.setCameraPhotoQuality(Camera1Manager.java:488) at com.github.florent37.camerafragment.internal.manager.impl.Camera1Manager.access$400(Camera1Manager.java:39) at com.github.florent37.camerafragment.internal.manager.impl.Camera1Manager$3.run(Camera1Manager.java:166)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.os.HandlerThread.run(HandlerThread.java:60)
Is it possible to pause and then resume the recording with this library?
E/Camera1Controller: onCameraOpenError and its lolipop device
Hi florent37,
Thank you for sharing this awesome library.
I found the issue with different aspect ratio for preview of camera in Photo mode and captured photo.
I tested it with demo app.
So for example on Nexus 6, 7.1.1 device I choose 4160 x 3120 (4:3) resolution but it's previewing the fullscreen mode which is 16:9. And when I take a photo it's captured in 4160 x 3120.
It would be nice to have same preview and captured photo.
I will try to investigate it...
I am using camera fragment with one of the fragments in viewpager.now the problem is whole activity blinks when activity is started(on call of camera fragment).
Hi,
firstly, thanks for your work ! Then, I have a Honor 8, and mostly everything is working well, but as you can see there is a filter issue or something like that I think (Cause neither me or Coca Cola aren't blue).
The above screenshot is taken with the rear camera on Android 7.0.0 and the following with the front cam (the problem is increased with the front cam)
I don't know if you have time for this, but at least you are warned. I tryed with some Huawey if there is the same problem, but no issue with P9 and Nova.
Best regards,
Mike.
Hi
if I use your library with my old Nexus 7 (1 version from 2012) it needs up to 15 seconds to show the camera image. I would say this is quite too long. Maybe you know a quick fix for that?
E/dalvikvm: Could not find class 'android.util.Size', referenced from method com.github.florent37.camerafragment.internal.utils.Size.fromList2
W/dalvikvm: VFY: unable to resolve check-cast 376 (Landroid/util/Size;) in Lcom/github/florent37/camerafragment/internal/utils/Size;
Android 4.4.2
Device Samsung GT-I9195
When I tried to ran your demo project, I got this exception
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.toString()' on a null object reference at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onStopVideoRecord(BaseAnncaFragment.java:730) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.stopRecording(BaseAnncaFragment.java:633) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.takePhotoOrCaptureVideo(BaseAnncaFragment.java:296) at com.github.florent37.camerafragment.sample.MainActivity.onRecordButtonClicked(MainActivity.java:90) at com.github.florent37.camerafragment.sample.MainActivity$$ViewBinder$4.doClick(MainActivity$$ViewBinder.java:48)
Hi
pictures and videos are stored in sdcard / Pictures / packagename
It would be nice to configure this path.
Best wishes
Phone: HUAWEI VNS-L53, Android 6.0
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.post(java.lang.Runnable)' on a null object reference
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.openCamera(Camera2Manager.java:182)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.openCamera(Camera2Manager.java:56)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.onCameraClosed(Camera2Controller.java:156)
at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.onCameraClosed(Camera2Controller.java:31)
at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager$4$1.run(Camera2Manager.java:225)
at android.os.Handler.handleCallback(Handler.java:743)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:5639)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:689)
I am loving this repo, but I see no options to disable the shutter sound and I am having a hard time coming up with a workaround that still allows me to use this well built repo.
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.