1.布局文件

    

 

2.代码

package com.example.lihui.androidproject;import android.Manifest;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Context;import android.content.pm.PackageManager;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.PixelFormat;import android.hardware.Camera;import android.os.Build;import android.os.Bundle;import android.os.Environment;import android.view.Display;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;import android.view.WindowManager;import android.widget.Button;import android.widget.Toast;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;public class MainActivity extends Activity{    private Button btnCamera=null;    private Button chgCamera=null;    private SurfaceView mySurfaceView =null;    private Camera cam=null;    private SurfaceHolder holder=null;    private boolean previewRunning=false;    private static final int FRONT = 1;//前置摄像头标记    private static final int BACK = 2;//后置摄像头标记    private int currentCameraType = -1;//当前打开的摄像头标记    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);        setContentView(R.layout.activity_main);        if (Build.VERSION.SDK_INT >= 23) {            int REQUEST_CODE_CONTACT = 101;            String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA};            for (String str : permissions) {                if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {                    this.requestPermissions(permissions, REQUEST_CODE_CONTACT);                    return;                }            }        }        btnCamera=findViewById(R.id.btn_camera);        chgCamera=findViewById(R.id.change);        mySurfaceView=findViewById(R.id.mySurfaceView);        holder=this.mySurfaceView.getHolder();        holder.addCallback(new MySurfaceViewCallback());        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);        holder.setFixedSize(800, 480);        currentCameraType = BACK;        btnCamera.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if(cam!=null){                    cam.autoFocus(new AutoFocusCallbackImpl());                }            }        });        chgCamera.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                try {                    changeCamera();                } catch (IOException e) {                    e.printStackTrace();                }            }        });    }    private void changeCamera() throws IOException{        if(previewRunning){            cam.setPreviewCallback(null);            cam.stopPreview();            cam.lock();            cam.release();            cam = null;        }        if(currentCameraType == FRONT){            cam = openCamera(BACK);        }else if(currentCameraType == BACK){            cam = openCamera(FRONT);        }        cam.setPreviewDisplay(holder);        cam.startPreview();    }    @SuppressLint("NewApi")    private Camera openCamera(int type){        int frontIndex =-1;        int backIndex = -1;        int cameraCount = Camera.getNumberOfCameras();        Camera.CameraInfo info = new Camera.CameraInfo();        for(int cameraIndex = 0; cameraIndex   

 

3.AndroidManifest.xml文件

更多相关文章

  1. android识别鼠标左键,右键操作
  2. android中的sqlite操作
  3. Android库. 1 SD卡操作
  4. Android(安卓)AsynTask学习笔记
  5. Android中调用摄像头拍照保存,并在相册中选择图片显示
  6. Android(安卓)操作权限大全 (android.permission)
  7. Android(安卓)剪切板操作
  8. Android的NDK开发(5)————Android(安卓)JNI层实现文件的read
  9. Android中创建文件夹和文件的操作

随机推荐

  1. 如何在android 系统 C/C++ 层中添加 log
  2. 转 Android中进入系统设置界面
  3. ImageView的属性android:scaleType作用
  4. Android如何解析json数组对象
  5. android-HandlerThread、IntentServer
  6. Android(安卓)progressbar实现带底部指示
  7. Android SQLite数据库中的表详解
  8. Anroid camera + mediacodec
  9. android的MediaPlayer的简介
  10. android底部标签页的tab实现