Giter Club home page Giter Club logo

android-hidden-camera's Introduction

Android Hidden Camera

Build Status Download API

What is this library for?

This library allows application to take the picture using the device camera without showing the preview of it. Any application can capture the image from front or rear camera from the background service and this library will handle all the complexity on behalf of the application. You can capture images from activity, fragment and even from the background service using this library.

Gradle Dependency:

dependencies {
    compile 'com.kevalpatel2106:hiddencamera:1.3.3'
}

How to integrate?

Step-1: Inherit the builtin class.

Component Class to inherit Sample
Activity com.androidhiddencamera.HiddenCameraActivity public class DemoCamActivity extends HiddenCameraActivity {
Fragment com.androidhiddencamera.HiddenCameraFragment public class DemoCamFragment extends HiddenCameraFragment {
Service com.androidhiddencamera.HiddenCameraService public class DemoCamService extends HiddenCameraService {

Step-2: Create the camera configuration. In this developer can define which camera they want to use, output image format, capture image resolution etc parameters.

//Setting camera configuration
mCameraConfig = new CameraConfig()
    .getBuilder(getActivity())
    .setCameraFacing(CameraFacing.FRONT_FACING_CAMERA)
    .setCameraResolution(CameraResolution.MEDIUM_RESOLUTION)
    .setImageFormat(CameraImageFormat.FORMAT_JPEG)
    .setImageRotation(CameraRotation.ROTATION_270)
    .build();

Step-3: Start the camera in onCreate() by calling startCamera(CameraConfig). Before starting the camera, ask user for the camera runtime permission.

//Check for the camera permission for the runtime
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {

    //Start camera preview
    startCamera(mCameraConfig);
} else {
    ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, 101);
}
  • If you are capturing the image from the service, you have to check if the application has the draw ver other application permission or not? If the permission is not available, application can ask user to grat the permission using HiddenCameraUtils.openDrawOverPermissionSetting().
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
    if (HiddenCameraUtils.canOverDrawOtherApps(this)) {
        ...
        ...
    } else {
        //Open settings to grant permission for "Draw other apps".
        HiddenCameraUtils.openDrawOverPermissionSetting(this);
    }
} else {
    //TODO Ask your parent activity for providing runtime permission
}

Step-4: Take image in background whenever you want by calling takePicture(). You will receive captured image file in onImageCapture() callback.

Step -5: Handle errors by overriding onError() callback. In this callback you will receive an error code for each error occurred. You can take specific actions based on the error code.

@Override
public void onCameraError(@CameraError.CameraErrorCodes int errorCode) {
    switch (errorCode) {
        case CameraError.ERROR_CAMERA_OPEN_FAILED:
            //Camera open failed. Probably because another application
            //is using the camera
            break;
        case CameraError.ERROR_IMAGE_WRITE_FAILED:
            //Image write failed. Please check if you have provided WRITE_EXTERNAL_STORAGE permission
            break;
        case CameraError.ERROR_CAMERA_PERMISSION_NOT_AVAILABLE:
            //camera permission is not available
            //Ask for the camra permission before initializing it.
            break;
        case CameraError.ERROR_DOES_NOT_HAVE_OVERDRAW_PERMISSION:
            //Display information dialog to the user with steps to grant "Draw over other app"
            //permission for the app.
            HiddenCameraUtils.openDrawOverPermissionSetting(this);
            break;
        case CameraError.ERROR_DOES_NOT_HAVE_FRONT_CAMERA:
            Toast.makeText(this, "Your device does not have front camera.", Toast.LENGTH_LONG).show();
            break;
    }
}

That's it.

Demo

  • You can download the sample apk from here.
  • sample

Contribute:

Simple 3 step to contribute into this repo:

  1. Fork the project.
  2. Make required changes and commit.
  3. Generate pull request. Mention all the required description regarding changes you made.

Questions

Hit me on twitter Twitter

License

Copyright 2017 Keval Patel

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

android-hidden-camera's People

Contributors

imtoori avatar kevalpatel2106 avatar viks178 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-hidden-camera's Issues

Video

Any way to do a video recording with this? Any plans on adding that feature?

Always Error Null Pointer After Application Resume

hello @kevalpatel2106 I got some problem here, I always got this error when my apps got onResume, I used version 1.3.1

FATAL EXCEPTION: main
java.lang.NullPointerException: Attempt to invoke virtual method 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference
at com.androidhiddencamera.CameraPreview.surfaceChanged(CameraPreview.java:87)
at android.view.SurfaceView.updateWindow(SurfaceView.java:590)
at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:238)
at android.view.View.dispatchWindowVisibilityChanged(View.java:8697)
at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1269)
at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1269)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1311)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
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)

RuntimeException: startPreview failed

Caused by: java.lang.RuntimeException: startPreview failed
at android.hardware.Camera.startPreview(Native Method)
at com.androidhiddencamera.CameraPreview.startCameraInternal(CameraPreview.java:158)

Android O permission denied for window type 2006

06-19 22:18:06.485 27339-27339/com.example.mateen.gcmtesting E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.mateen.gcmtesting, PID: 27339 java.lang.RuntimeException: Unable to start service com.example.mateen.gcmtesting.ActionServices.CameraService@edc3f43 with Intent { cmp=com.example.mateen.gcmtesting/.ActionServices.CameraService (has extras) }: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@8da1cf2 -- permission denied for window type 2006 at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3556) at android.app.ActivityThread.-wrap20(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1698) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@8da1cf2 -- permission denied for window type 2006 at android.view.ViewRootImpl.setView(ViewRootImpl.java:788) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:92) at com.androidhiddencamera.HiddenCameraService.addPreView(HiddenCameraService.java:125) at com.androidhiddencamera.HiddenCameraService.startCamera(HiddenCameraService.java:82) at com.example.mateen.gcmtesting.ActionServices.CameraService.onStartCommand(CameraService.java:100) at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3539) at android.app.ActivityThread.-wrap20(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1698)  at android.os.Handler.dispatchMessage(Handler.java:105)  at android.os.Looper.loop(Looper.java:164)  at android.app.ActivityThread.main(ActivityThread.java:6541)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

this error comes when i call the service to take the picture in android O

app passed NULL surface

There is some delay when the HiddenCameraService is started (please refer 1st and 2nd lines from below log).

Then after a while (about 5-10 seconds), the image is captured (pls refer 3rd line in the below log)

D/Camera: app passed NULL surface
I/Choreographer: Skipped 47 frames! The application may be doing too much work on its main thread.
D/Image capture: 1376498

Device: Moto G4+

app passed NULL surface

When running the hidden camera using this code
mCameraConfig = new CameraConfig()
.getBuilder(this)
.setCameraFacing(CameraFacing.FRONT_FACING_CAMERA)
.setCameraResolution(CameraResolution.HIGH_RESOLUTION)
.setImageFormat(CameraImageFormat.FORMAT_JPEG)
.setImageRotation(CameraRotation.ROTATION_270)
.build();

I keep getting App passed NULL surface error. The mCameraConfig has been properly constructed

Fake surface not getting removed. Not able to do anything on phone after picture is clicked

In O OS, after the picture is clicked in service, I am not able to access the device until I restart it. I think the fake surface is not getting removed as I am not able to swipe or open any other app, but I am able to access notification panel and also notification is showing in notification panel that my app is displaying over other apps continuously. Please help

ERROR_IMAGE_WRITE_FAILED = 9854;

Hi, i have the error ERROR_IMAGE_WRITE_FAILED = 9854, i give the write external and internal permission on manifest but i don't understand why i received this error.
Can you help me?
Thank you

Good day. I dont know why my app crashes when I add hidden camera through background service. The fragment that uses hidden camera starts using a "new Thread()" approach. :( thanks.

FATAL EXCEPTION: main java.lang.RuntimeException: startPreview failed at android.hardware.Camera.startPreview(Native Method) at com.androidhiddencamera.CameraPreview.surfaceChanged(CameraPreview.java:128) at android.view.SurfaceView.updateWindow(SurfaceView.java:626) at android.view.SurfaceView.access$000(SurfaceView.java:86) at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:178) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:707) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1938)at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4454) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) at android.view.Choreographer.doCallbacks(Choreographer.java:555) at android.view.Choreographer.doFrame(Choreographer.java:525)at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 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:4895) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761) at dalvik.system.NativeStart.main(Native Method)

How to Clear Cache after taking picture?

Hello, this is a great library and I used it a lot.
I have a question. Can I can clear the application cache after takePicture() is called?
Correct me if I'm wrong. I think this library take the picture and save it in the application cache. So whenever takePicture() is called, the application cache is keep increasing.

ERROR_CAMERA_OPEN_FAILED

I'm using DemoCamActivity in my device (Android 5.0.1 API 21) and sometimes I got this error: CameraError.ERROR_CAMERA_OPEN_FAILED. And the toast that states it.
But oddly, sometimes it works as expected.
I'm running from android studio.
Possibles ideas on what could be happening this issue?

Attempt to invoke virtual method 'void android.hardware.Camera.setDisplayOrientation(int)' on a null object reference

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.Camera.setDisplayOrientation(int)' on a null object reference
com.a.c.surfaceCreated ()
android.view.SurfaceView.updateWindow (SurfaceView.java:709)
android.view.SurfaceView$3.onPreDraw (SurfaceView.java:208)
android.view.ViewTreeObserver.dispatchOnPreDraw (ViewTreeObserver.java:1018)
android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2308)
android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1301)
android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7016)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:777)
android.view.Choreographer.doCallbacks (Choreographer.java:590)
android.view.Choreographer.doFrame (Choreographer.java:560)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:763)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:145)
android.app.ActivityThread.main (ActivityThread.java:6946)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1404)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199)

First Time Camera not working

After give the camera permission in DemoCamActivity ,when user click on button to capture the image,It's not working in first time after relaunch the activity its working fine but i want camera work first time when user give the permission. please give me solution thank you

Please solve this issue

android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@3e47865 -- permission denied for window type 2006
at android.view.ViewRootImpl.setView(ViewRootImpl.java:809)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
at com.txusballesteros.bubbles.BubblesService$2.run(BubblesService.java:120)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6809)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

App crashing when calling takePicture()

FATAL EXCEPTION: main Process: , PID: 3794 java.lang.RuntimeException: Unable to start service tarun0.gyananter.CaptureService@7a5c685 with Intent { cmp=tarun0.gyananter/.CaptureService }: java.lang.RuntimeException: takePicture failed at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3335) at android.app.ActivityThread.-wrap21(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1578) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6123) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

Burst/multiple images?

Hi,

Can someone please suggest how to take multiple images with the help of the service -- one after other repeatedly say for like 3 times (or if possible, take all at the same time without doing the saveImage first.)

Thank you!

Can't install app on devices that do not support camera autofocus.

Hi.
So not all devices support camera autofocus but the still have camera and can use them.
You have to add
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
in your manifest so that thous devices can install the app that uses your library.
Repo example that had the same problem. Scroll bottom to see fix.
jitsi/jitsi-meet#1736

Best

Surface memory leak issue

I got this warning using HiddenCameraService
W/WindowStateAnimator: OutOfResourcesException creating surface
I/WindowManager: Out of memory for surface! Looking for leaks...
W/WindowManager: No leaked surfaces; killing applicatons!

fix this issue:

add this code in CameraPreview.java

void stopAndRelease() {
    //Fix Surface memory leak
    destroyDrawingCache();
    stopPreviewAndFreeCamera();
    if (mHolder != null) {
        mHolder.removeCallback(this);
        mHolder.getSurface().release();
    }
 }

and change HiddenCameraService.java

change mCameraPreview.stopPreviewAndFreeCamera(); to mCameraPreview.stopAndRelease();

App crashing when initializing Activity

FATAL EXCEPTION: main
Process: com.example.mubashshir.screenlock_usesmartway, PID: 22058
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mubashshir.screenlock_usesmartway/com.example.mubashshir.screenlock_usesmartway.DemoCamActivity}: java.lang.RuntimeException: Root view of the activity/fragment cannot be frame layout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2472)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2534)
at android.app.ActivityThread.access$800(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1424)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5550)
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:955)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
Caused by: java.lang.RuntimeException: Root view of the activity/fragment cannot be frame layout
at com.androidhiddencamera.HiddenCameraActivity.addPreView(HiddenCameraActivity.java:132)
at com.androidhiddencamera.HiddenCameraActivity.onCreate(HiddenCameraActivity.java:51)
at com.example.mubashshir.screenlock_usesmartway.DemoCamActivity.onCreate(DemoCamActivity.java:27)
at android.app.Activity.performCreate(Activity.java:6003)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2425)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2534) 
at android.app.ActivityThread.access$800(ActivityThread.java:174) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1424) 
at android.os.Handler.dispatchMessage(Handler.java:111) 
at android.os.Looper.loop(Looper.java:194) 
at android.app.ActivityThread.main(ActivityThread.java:5550) 
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:955) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750) 

java.lang.RuntimeException: getParameters failed (empty parameters)

Moto G (2nd Gen) Android 6.0

Fatal Exception: java.lang.RuntimeException: getParameters failed (empty parameters)
       at android.hardware.Camera.native_getParameters(Camera.java)
       at android.hardware.Camera.getParameters(Camera.java:1974)
       at com.androidhiddencamera.CameraPreview.surfaceChanged(CameraPreview.java:102)
       at android.view.SurfaceView.updateWindow(SurfaceView.java:593)
       at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:177)
       at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1119)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6060)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
       at android.view.Choreographer.doCallbacks(Choreographer.java:670)
       at android.view.Choreographer.doFrame(Choreographer.java:606)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
       at android.os.Handler.handleCallback(Handler.java:746)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:5443)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

and

XIAOMI Redmi 5 Android 7.1.2

Fatal Exception: java.lang.RuntimeException: getParameters failed (empty parameters)
       at android.hardware.Camera.native_getParameters(Camera.java)
       at android.hardware.Camera.getParameters(Camera.java:2057)
       at com.androidhiddencamera.CameraPreview.surfaceChanged(CameraPreview.java:102)
       at android.view.SurfaceView.updateWindow(SurfaceView.java:646)
       at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:162)
       at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2246)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1295)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6400)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:876)
       at android.view.Choreographer.doCallbacks(Choreographer.java:688)
       at android.view.Choreographer.doFrame(Choreographer.java:623)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:862)
       at android.os.Handler.handleCallback(Handler.java:754)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:163)
       at android.app.ActivityThread.main(ActivityThread.java:6228)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

permission denied for window type 2006

Hello.
Help needed please.

W/System.err: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$WEx@ab0bdc9 -- permission denied for window type 2006
W/System.err: at android.view.ViewRootImpl.setView(ViewRootImpl.java:829)
W/System.err: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:368)
W/System.err: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
W/System.err: at com.androidhiddencamera.HiddenCameraService.addPreView(HiddenCameraService.java:125)
W/System.err: at com.androidhiddencamera.HiddenCameraService.startCamera(HiddenCameraService.java:82)
W/System.err: at com.pins.infinity.services.CaptureImageService.onStartCommand(CaptureImageService.java:98)
W/System.err: at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3609)
W/System.err: at android.app.ActivityThread.-wrap20(Unknown Source:0)
W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1717)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:105)
W/System.err: at android.os.Looper.loop(Looper.java:164)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6710)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

Library version 1.3.2

So it only shows up on GL g6 with android 8.1.1. I guess its related to
"For Android API level of 8.0.0, you should use
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
instead of LayoutParams.TYPE_TOAST or TYPE_APPLICATION_PANEL or SYSTEM_ALERT."
from
https://stackoverflow.com/questions/32224452/android-unable-to-add-window-permission-denied-for-this-window-type

Locked screen

Does this library support capturing when the screen is off and locked?

setParameters failed

Unable to set parameters in certain devices(Redmi Note 3)

List<Camera.Size> pictureSizes = mCamera.getParameters().getSupportedPictureSizes();

        //set the preview sizes that are the lowest, as we don't have to display the preview.
        parameters.setPreviewSize(pictureSizes.get(pictureSizes.size() - 1).width,
                pictureSizes.get(pictureSizes.size() - 1).height);

        //set the camera image size based on config provided
        Camera.Size cameraSize;
        switch (mCameraConfig.getResolution()) {
            case CameraResolution.HIGH_RESOLUTION:
                cameraSize = pictureSizes.get(0);   //Highest res
                break;
            case CameraResolution.MEDIUM_RESOLUTION:
                cameraSize = pictureSizes.get(pictureSizes.size() / 2);     //Resolution at the middle
                break;
            case CameraResolution.LOW_RESOLUTION:
                cameraSize = pictureSizes.get(pictureSizes.size() - 1);       //Lowest res
                break;
            default:
                throw new RuntimeException("Invalid camera resolution.");
        }
        parameters.setPictureSize(cameraSize.width, cameraSize.height);

removing this code under CamPreview.java fixes the issue.
Can you please remove it and push

How to use in higher version like oreo

Hello sir ,
we have implement these repo with using foreground services in lower version its working fine but when we go for higher version (OS 8.0.0) like Oreo . It gets hang our device.
We want to capture images continuously through using service either job scheduler.

Please help us regarding that issues, that how can i implement this feature with continuous capturing.

Thanks
Mayuri

Take multiple photo background

I'm trying to take more pictures in the background every 5 seconds, but give me this error Can not create handler inside thread that has not called Looper.prepare ()

Has anyone tried to do something like this or did it?

Unhandled RuntimeException exception causing app crash

On one device I receive following exception which is unhandled and causes app crash:

Value: java.lang.RuntimeException: startPreview failed
at android.hardware.Camera.startPreview(Native Method)
at com.androidhiddencamera.CameraPreview.surfaceChanged(CameraPreview.java:139)
at android.view.SurfaceView.updateWindow(SurfaceView.java:580)
at android.view.SurfaceView.access$000(SurfaceView.java:86)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:174)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:680)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1842)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:532)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)

Solution to catch this exception and prevent app crash is to set catch (IOException | RuntimeException e)
in https://github.com/kevalpatel2106/android-hidden-camera/blob/master/hiddencamera/src/main/java/com/androidhiddencamera/CameraPreview.java#L142

com.androidhiddencamera.CameraPreview not attached to window manager

Hello
Help needed please.

java.lang.RuntimeException: Unable to stop service CaptureImageService@4dd86f3: java.lang.IllegalArgumentException: View=com.androidhiddencamera.CameraPreview{bdca1f1 V.E...... ......I. 0,0-1,1} not attached to window manager
at android.app.ActivityThread.handleStopService(ActivityThread.java:3657)
at android.app.ActivityThread.-wrap26(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1722)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6710)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
Caused by: java.lang.IllegalArgumentException: View=com.androidhiddencamera.CameraPreview{bdca1f1 V.E...... ......I. 0,0-1,1} not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:497)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:406)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:120)
at com.androidhiddencamera.HiddenCameraService.stopCamera(HiddenCameraService.java:109)
at com.androidhiddencamera.HiddenCameraService.onDestroy(HiddenCameraService.java:55)
at android.app.ActivityThread.handleStopService(ActivityThread.java:3639)
at android.app.ActivityThread.-wrap26(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1722) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6710)

Version 1.3.4
On LG g6 with android 8.0.0

App crashing when calling takePicture()

FATAL EXCEPTION: main Process: , PID: 3794
java.lang.RuntimeException: Unable to start service tarun0.gyananter.CaptureService@7a5c685 with Intent { cmp=tarun0.gyananter/.CaptureService }: java.lang.RuntimeException: takePicture failed
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3335)
at android.app.ActivityThread.-wrap21(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1578)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

Caused by: java.lang.RuntimeException: takePicture failed
at android.hardware.Camera.native_takePicture(Native Method)
at android.hardware.Camera.takePicture(Camera.java:1461)
at android.hardware.Camera.takePicture(Camera.java:1406)
at com.androidhiddencamera.CameraPreview.takePictureInternal(CameraPreview.java:181)
at com.androidhiddencamera.HiddenCameraService.takePicture(HiddenCameraService.java:94)
at tarun0.gyananter.CaptureService.onStartCommand(CaptureService.java:63)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3318)
at android.app.ActivityThread.-wrap21(ActivityThread.javaat android.app.ActivityThread$H.handleMessage(ActivityThread.java:1578at android.os.Handler.dispatchMessage(Handler.java:102at android.os.Looper.loop(Looper.java:154at android.app.ActivityThread.main(ActivityThread.java:6123at java.lang.reflect.Method.invoke(Native Methodat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757

Ask for Streaming

I've searched for any hidden camera streamer for android. I've found lots of RTMP streamers but they all need activity for a SurfaceView for preview action. I've found based on your library and other questions like in this link and this link but failed to create a streamer. Other resources and links I've checked:

Looking for any answer.
Regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.