日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android camera入门,android 基础一 Camera1 预览、拍照

發布時間:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android camera入门,android 基础一 Camera1 预览、拍照 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

預覽流程: Camera.open-->camera.setPreviewDisplay->camera.startPreview

拍照:camera.takePicture-->保存圖片-->camera.startPreview

public class MainActivity extends Activity {

String TAG="Camera_1111";

SurfaceView surfaceView;

SurfaceHolder surfaceHolder;

Camera camera;

int cameraId=0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Log.e(TAG,"---------onCreate---------");

setContentView(R.layout.activity_main);

surfaceView=(SurfaceView) findViewById(R.id.svCamera);

surfaceHolder=surfaceView.getHolder();

surfaceHolder.addCallback(new SurfaceHolder.Callback() {

@Override

public void surfaceCreated(SurfaceHolder holder) {

camera=Camera.open(cameraId);

try {

camera.setPreviewDisplay(surfaceHolder);

} catch (IOException e) {

e.printStackTrace();

}

setCameraDisplayOrientation();

// configParameters();

camera.startPreview();

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

Log.e(TAG,"---------surfaceDestroyed---------");

camera.release();

}

});

}

//配置預覽參數

private void configParameters(){

Camera.Parameters param = camera.getParameters();

param.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);

param.setPictureFormat(ImageFormat.JPEG);

param.setJpegQuality(100);

param.setPreviewSize(param.getSupportedPreviewSizes().get(0).width,param.getSupportedPreviewSizes().get(0).height);

Log.e(TAG,"param.getSupportedPreviewSizes()"+param.getSupportedPreviewSizes().get(0).width+" X "+param.getSupportedPreviewSizes().get(0).height);

param.setPictureSize(param.getSupportedPictureSizes().get(0).width,param.getSupportedPictureSizes().get(0).height);

camera.setParameters(param);

}

//旋轉預覽角度

private void setCameraDisplayOrientation() {

android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();

android.hardware.Camera.getCameraInfo(cameraId, info);

int rotation = getWindowManager().getDefaultDisplay().getRotation();

int degrees = 0;

switch (rotation) {

case Surface.ROTATION_0: degrees = 0; break;

case Surface.ROTATION_90: degrees = 90; break;

case Surface.ROTATION_180: degrees = 180; break;

case Surface.ROTATION_270: degrees = 270; break;

}

int result;

if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {

result = (info.orientation + degrees) % 360;

result = (360 - result) % 360; // compensate the mirror

} else { // back-facing

result = (info.orientation - degrees) % 360;

}

Log.e(TAG,"rotation ="+result);

//旋轉預覽的角度

camera.setDisplayOrientation(result);

//-----------------------------

//旋轉生成的照片角度

Camera.Parameters param = camera.getParameters();

param.setRotation(result);

camera.setParameters(param);

}

public void photo(View view){

camera.takePicture(null,null,new Camera.PictureCallback(){

@Override

public void onPictureTaken(byte[] data, Camera camera) {

savePicture(data);

camera.startPreview();

}

});

}

private void savePicture(byte[] data) {

String root = Environment.getExternalStorageDirectory().getPath();

File objPic = new File(root,"test.jpg");

BufferedOutputStream bos = null;

try {

bos = new BufferedOutputStream(new FileOutputStream(objPic));

bos.write(data);

bos.flush();

Toast.makeText(this,"拍照成功",Toast.LENGTH_SHORT).show();

} catch (IOException e) {

e.printStackTrace();

}finally {

if(bos!=null){

try {

bos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

public classMainActivity extendsActivity {

String TAG="Camera_1111";

SurfaceView surfaceView;

SurfaceHolder surfaceHolder;

Camera camera;

intcameraId=0;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Log.e(TAG,"---------onCreate---------");

setContentView(R.layout.activity_main);

surfaceView=(SurfaceView) findViewById(R.id.svCamera);

surfaceHolder=surfaceView.getHolder();

surfaceHolder.addCallback(newSurfaceHolder.Callback() {

@Overridepublic voidsurfaceCreated(SurfaceHolder holder) {

camera=Camera.open(cameraId);

try{

camera.setPreviewDisplay(surfaceHolder);

} catch(IOException e) {

e.printStackTrace();

}

setCameraDisplayOrientation();

// configParameters();camera.startPreview();

}

@Overridepublic voidsurfaceChanged(SurfaceHolder holder, intformat, intwidth, intheight) {

}

@Overridepublic voidsurfaceDestroyed(SurfaceHolder holder) {

Log.e(TAG,"---------surfaceDestroyed---------");

camera.release();

}

});

}

//配置預覽參數private voidconfigParameters(){

Camera.Parameters param = camera.getParameters();

param.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);

param.setPictureFormat(ImageFormat.JPEG);

param.setJpegQuality(100);

param.setPreviewSize(param.getSupportedPreviewSizes().get(0).width,param.getSupportedPreviewSizes().get(0).height);

Log.e(TAG,"param.getSupportedPreviewSizes()"+param.getSupportedPreviewSizes().get(0).width+" X "+param.getSupportedPreviewSizes().get(0).height);

param.setPictureSize(param.getSupportedPictureSizes().get(0).width,param.getSupportedPictureSizes().get(0).height);

camera.setParameters(param);

}

//旋轉預覽角度private voidsetCameraDisplayOrientation() {

android.hardware.Camera.CameraInfo info = newandroid.hardware.Camera.CameraInfo();

android.hardware.Camera.getCameraInfo(cameraId, info);

introtation = getWindowManager().getDefaultDisplay().getRotation();

intdegrees = 0;

switch(rotation) {

caseSurface.ROTATION_0: degrees = 0; break;

caseSurface.ROTATION_90: degrees = 90; break;

caseSurface.ROTATION_180: degrees = 180; break;

caseSurface.ROTATION_270: degrees = 270; break;

}

intresult;

if(info.facing== Camera.CameraInfo.CAMERA_FACING_FRONT) {

result = (info.orientation+ degrees) % 360;

result = (360- result) % 360; // compensate the mirror} else{ // back-facingresult = (info.orientation- degrees) % 360;

}

Log.e(TAG,"rotation ="+result);

//旋轉預覽的角度camera.setDisplayOrientation(result);

//-----------------------------//旋轉生成的照片角度Camera.Parameters param = camera.getParameters();

param.setRotation(result);

camera.setParameters(param);

}

public voidphoto(View view){

camera.takePicture(null,null,newCamera.PictureCallback(){

@Overridepublic voidonPictureTaken(byte[] data, Camera camera) {

savePicture(data);

camera.startPreview();

}

});

}

private voidsavePicture(byte[] data) {

String root = Environment.getExternalStorageDirectory().getPath();

File objPic = newFile(root,"test.jpg");

BufferedOutputStream bos = null;

try{

bos = newBufferedOutputStream(newFileOutputStream(objPic));

bos.write(data);

bos.flush();

Toast.makeText(this,"拍照成功",Toast.LENGTH_SHORT).show();

} catch(IOException e) {

e.printStackTrace();

}finally{

if(bos!=null){

try{

bos.close();

} catch(IOException e) {

e.printStackTrace();

}

}

}

}

}

原文:https://www.cnblogs.com/jtzp007/p/11650575.html

總結

以上是生活随笔為你收集整理的android camera入门,android 基础一 Camera1 预览、拍照的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。