几个接口api 实现camera预览,初学者达到很好的认识也不复杂。关键点是使用surfaceview 和 surfaceholder这个接口,它的作用就像一个关于Surface的监听器。它通过三个回调方法,让我们能够感知到Surface的创建、销毁或者改变。
package com.example.camerapreviewactivity;
import java.io.IOException;
import android.support.v7.app.ActionBarActivity;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class MainActivity extends ActionBarActivity {
Camera camera;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SurfaceView surfaceview = (android.view.SurfaceView) findViewById(R.id.camera);
SurfaceHolder holder = surfaceview.getHolder(); //获取SurfaceHolder
holder.addCallback(new Callback());
}
public class Callback implements SurfaceHolder.Callback {
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
camera.startPreview();
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
camera = Camera.open();
camera.setDisplayOrientation(90);
try {
camera.setPreviewDisplay(arg0);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
}
}
}