Android Access camera uses Camera.open to return a camera object, set the view to display, call the preview function of the camera function Startpreview, stop the preview function is stoppreview!
Activity_mail.xml layout
<LinearLayoutxmlns:android= "Http://schemas.android.com/apk/res/android"Xmlns:tools= "Http://schemas.android.com/tools"Android:id= "@+id/linearlayout1"Android:layout_width= "Match_parent"Android:layout_height= "Match_parent"android:orientation= "vertical"Tools:context= "Com.ssln.camera.MainActivity" > <VideoviewAndroid:id= "@+id/videoview1"Android:layout_width= "Match_parent"Android:layout_height= "300DP" /> <LinearLayoutAndroid:layout_width= "Match_parent"Android:layout_height= "Wrap_content" > <ButtonAndroid:id= "@+id/button1"Android:layout_width= "Wrap_content"Android:layout_height= "Wrap_content"Android:text= "Open" /> <ButtonAndroid:id= "@+id/button2"Android:layout_width= "Wrap_content"Android:layout_height= "Wrap_content"Android:text= "Off" /> </LinearLayout></LinearLayout>
Mainactivity.java
PackageCom.ssln.camera;Importjava.io.IOException;Importandroid.app.Activity;ImportAndroid.hardware.Camera;ImportAndroid.os.Bundle;ImportAndroid.view.SurfaceHolder;ImportAndroid.view.View;ImportAndroid.view.View.OnClickListener;ImportAndroid.widget.Button;ImportAndroid.widget.VideoView; Public classMainactivityextendsActivityImplementsOnclicklistener {PrivateCamera Mycamra;//Camera PrivateVideoview video;//Show PrivateButton Btnopen, btnclose; Private Booleanispreview=false;//whether to preview PrivateSurfaceholder Holder; @Overrideprotected voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.activity_main); Video=(Videoview) Findviewbyid (R.ID.VIDEOVIEW1); Btnopen=(Button) Findviewbyid (R.id.button1); Btnclose=(Button) Findviewbyid (R.id.button2); Btnopen.setonclicklistener ( This); Btnclose.setonclicklistener ( This); Holder=Video.getholder (); } @Override Public voidOnClick (View v) {if(v = =Btnopen) {Initcamera (); } Else if(v = =btnclose) { if(mycamra!=NULL&&Ispreview) {Mycamra.stoppreview ();//Stop previewingMycamra.release ();//Freeing ResourcesMycamra=NULL; Ispreview=false; } } } /*** Initialize camera*/ Private voidInitcamera () {if(!Ispreview) {Mycamra=camera.open ();//turn on the camera device } if(mycamra!=NULL&&!Ispreview) { Try{mycamra.setpreviewdisplay (holder); Mycamra.startpreview ();//Start Preview}Catch(IOException e) {e.printstacktrace (); } Ispreview=true; } }}
Access to the camera is required permission, remember to add
<?XML version= "1.0" encoding= "Utf-8"?><Manifestxmlns:android= "Http://schemas.android.com/apk/res/android" Package= "Com.ssln.camera"Android:versioncode= "1"Android:versionname= "1.0" > <USES-SDKandroid:minsdkversion= "8"android:targetsdkversion= "+" /> <!--Camera access Rights - <uses-permissionAndroid:name= "Android.permission.CAMERA"/>
<!--Add the following two sentences, otherwise the fail to connect to camera service will appear. Error-
<uses-feature android:name= "Android.hardware.camera"/>
<uses-feature android:name= "Android.hardware.camera.autofocus"/>
<ApplicationAndroid:allowbackup= "true"Android:icon= "@drawable/ic_launcher"Android:label= "@string/app_name"Android:theme= "@style/apptheme" > <ActivityAndroid:name=". Mainactivity "Android:label= "@string/app_name" > <Intent-filter> <ActionAndroid:name= "Android.intent.action.MAIN" /> <categoryAndroid:name= "Android.intent.category.LAUNCHER" /> </Intent-filter> </Activity> </Application></Manifest>
Effect Preview
Android Camera Preview