Android-based Remote Video Monitoring System-implementation,

Source: Internet
Author: User

This post is only for the same love as meAndroid DevelopmentAnd those who are eager to learn.
Now I will share my learning process. I hope that you can complete this simple system independently through learning.
(PS. I have been learning Java and Android for a month, so don't worry if you have no foundation. In a few steps, everything is simple)

As described in the title, today we will learn how to turn on the camera and preview images on the screen. Steps for using camera:
(1) Call the open () method of camera to open the camera;
(2) Call the getparameters () method of camera to obtain the camera parameters. This method returns a camera. Parameters object;
(3) Call the setparameters () method of camera // this step is not required after android2.3.3;
(4) Call the startpreview () method of camera to start previewing the scene. before previewing the scene, call setpreviewdisplay (surfaceholder holder) method of camera to set which surfaceview is used to display the scene capture image;
(5) EndProgramCall stoppreview () of camera to end scene preview and call the release () method to release resources.
For the above process, refer to crazy android handout. This book is really good and can be quickly started. Most of the frameworks of the entire system refer to this book, and some questions are searched online.

1. Add the camera permission to the androidmanifest. xml file.

<! -- Grant the App the permission to use the camera --> <uses-Permission Android: Name = "android. permission. camera "/> <uses-feature Android: Name =" android. hardware. camera "/> <uses-feature Android: Name =" android. hardware. camera. autofocus "/>

2. Add a surfaceview to the interface layout file to display the preview image.

 
<Surfaceview Android: Id = "@ + ID/sview" Android: layout_width = "fill_parent" Android: layout_height = "fill_parent"/>

3. Program subject
Here we define a surfaceview variable sview to get the surfaceview component defined in the layout file.
When surfaceview is created, we call initcamera () to initialize the camera and release the camera when the surfaceview is destroyed. These two times are obtained through surfaceholder. addcallback. Let's take a look at the following:CodeYou will understand.

Public class mainactivity extends activity {surfaceview sview; surfaceholder; int screenwidth, screenheight; // defines the camera used by the system; // Boolean ispreview = false during browsing; @ override public void oncreate (bundle savedinstancestate) {super. oncreate (savedinstancestate); // sets the full screen requestwindowfeature (window. feature_no_title); getwindow (). setflags (windowmanager. layoutparams. flag_fullscre En, windowmanager. layoutparams. flag_fullscreen); setcontentview (R. layout. activity_main); windowmanager WM = (windowmanager) getsystemservice (context. window_service); display = WM. getdefadisplay display (); // obtain the screen width and height screenwidth = display. getwidth (); screenheight = display. getheight (); // obtain the surfaceview component sview = (surfaceview) findviewbyid (R. id. sview); // obtain surfaceview surfaceholder surfaceh Older = sview. getholder (); // Add a callback listener surfaceholder for surfaceholder. addcallback (New callback () {@ override public void surfacechanged (surfaceholder holder, int format, int width, int height) {}@ override public void surfacecreated (surfaceholder holder) {// enable camera initcamera () ;}@ override public void surfacedestroyed (surfaceholder holder) {// If camera is not null, release the camera if (camera! = NULL) {If (ispreview) camera. stoppreview (); camera. release (); camera = NULL ;}}); // set this surfaceview to not maintain the buffer surfaceholder. settype (surfaceholder. surface_type_push_buffers);} private void initcamera () {If (! Ispreview) {Camera = camera. open ();} If (camera! = NULL &&! Ispreview) {try {Camera. parameters = camera. getparameters (); // set the size of the previewed photo parameters. setpreviewsize (screenwidth, screenheight); // four parameters are displayed per second. setpreviewframerate (4); // sets the image format parameters. setpictureformat (pixelformat. JPEG); // set the quality of the JPG photo parameters. set ("Jpeg-quality", 85); // set the Photo size parameters. setpicturesize (screenwidth, screenheight); // no further steps are required after android2.3.3 // camera. setparameters (parameters); // use surfaceview to display the camera. setpreviewdisplay (surfaceholder); // start previewing camera. startpreview (); // Auto Focus camera. autofocus (null);} catch (exception e) {e. printstacktrace () ;}ispreview = true ;}}}

In this way, you can use the camera for preview. Of course, you will find that the preview image has been converted to 90 degrees, and the direction is wrong. In the activity attribute settings of the androidmanifest. xml file, add the following content.

 
Android: screenorientation = "Landscape"

Set it to landscape screen. If the screen is black, check whether camera. setparameters (parameters); this step matches your system. This step is not required in the future of 2.3.3.
In this simple way, we have completed the first step of Wireless Video Monitoring and achieved camera image preview. Here we have set preview, but we have not processed the image data of each frame. Next time we will talk about how to obtain and process each frame of the camera.

The following is the source code under sdk2.3.3, which can be run on the mobile phone of my android 4.04 system. Due to the upgrade of the android development tool, the source package is different from the previous version, so I do not know whether there is a conflict with the old version. If the problem persists, you can create a project and copy the content of the three key files.

Source code:

Camerapreview.rar

 

Recommended activities: 1.Blog writing, recommendation of high-paying jobs, blog writing, sending Xiaomi 2 generations & meizu MX

2.30 beans for downloading

3. FollowHttp://weibo.com/u/2975543812Nice gift

 

By the way, we recommend that you develop QQ groups in different regions:

Guangzhou Group 252743081
Guangzhou super group 218251417
Nanjing group 220818530
Shanghai Group 252742977
Shenzhen group 252742753 (full)
Shenzhen group 2 260134856
Chengdu group 252743807
Beijing group 111059554
Xi'an cluster 252746034
Wuhan group 121592153
Hangzhou group 253603803
Xiamen group 253604146
Hunan group 217494504
Dalian group 253672904
Qingdao group 257925319

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.