去年暑假自学的JAVA, 这个暑假决定弄个挑战杯,而我负责的就是android客户端的开发,我要做的就是用手机拍照然后把东西传给服务器。因为从来没有接触过这种项目,平时只是自己搞个用java编的贪吃蛇啊什么的玩玩,而且android不比我以前弄的J2SE,有许多都是不懂的,特别是那个配置文件让人蛋疼。就是因为自己是个菜鸟,所以准备在这里把我开发的进程记录下来,毕竟都是不断学习的过程,不仅是复习巩固一下,下次用到的时候回来看看也不错。
在Camera1.0,要实现如下功能
1.实现camera的实时预览
2.能够保存照片到sd卡根目录下
3.在底部添加一个Button点击即可拍照
接下来,我就分布说明各部分的解决方法
1.实现camera的实时预览
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cameralayout);
//使其横向显示
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//窗口去掉标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
//窗口设置为全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
//设置窗口为半透明
getWindow().setFormat(PixelFormat.TRANSLUCENT);
FrameLayout fl = (FrameLayout)findViewById(R.id.framelayout);
cv = new CameraView(this);
fl.addView(cv);
//Button b = (Button)findViewById(R.id.button);
}
这是MainActivity的onCreate方法。为了更好地实现照相机的功能,我将窗口去掉,全屏,并设置为半透明。
其实,要实现动态预览很简单,就是在一个FrameLayout中添加一个SuifaceView即可。我在这里用的是它的子类CameraView
// 用于得到照相机拍到的当前视图
class CameraView extends SurfaceView {
private SurfaceHolder holder = null;
//构造函数
public CameraView(Context context) {
supe