24小时热门版块排行榜    

查看: 2473  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

qqhegg

荣誉版主 (文坛精英)

珊瑚小美-----小元家的九妹

优秀版主优秀版主

[交流] android 学习笔记--------camera 已有5人参与

最近学习android照相机,我所说的是自定义相机而不是调用系统自带的相机功能
android的camera其实十分的简单
1.想要进行camera的自定义,首先必须使用surfaceView画布,并且需要继承surfaceHolder callback
2.然后我们会看到一下三个部分:surfaceChanged.surfaceCreated,和surfaceDestroyed。
3.然后进行代码的关键部分的编写
首先我们需要初始化相机,在surfaceChanged进行
  public void surfaceChanged(SurfaceHolder holder, int format, int width,            int height) {
//定义参数
Camera.Parameters parameters = mCamera.getParameters();  
//设置照片的格式
      parameters.setPictureFormat(PixelFormat.JPEG);
//设置照片的大小,对于高版本的相机不用推荐直接设置,因为相机可能不支持下面讨论     
  parameters.setPictureSize(320, 480);
//这句对于2.2以下必须,2.3不需要这句      
mCamera.setParameters(parameters);
//开始预览      
mCamera.startPreview();
}

在surfaceCreated部分需要进行判断
public void surfaceCreated(SurfaceHolder holder) {
if(!IspreView)
{  mCamera = Camera.open();
//对于这个部分经常会出错,从android API上我们可以发现2.2的是这种语法,但是对于2.3,它还添加了Camera.open(int id);对于这个id提供了一个范围,我一般采用0,但是很多时候还是会报错,具体原因不祥
}
try {         
  mCamera.setPreviewDisplay(holder);        }        
catch (IOException e) {         
   mCamera.release();           
mCamera = null;        }
在这边一定要释放掉相机资源,不然相机在返回以后再拍照时,非常有可能会报错,我经常把资源释放放在catch语句的后面。
try {         
  mCamera.setPreviewDisplay(holder);        }        
catch (IOException e) {         }
   mCamera.release();           
mCamera = null;      
}
对于surfaceDestroyed部分十分简单
public void surfaceDestroyed(SurfaceHolder holder) {      
  mCamera.stopPreview();      
mCamera = null;    }
4.如何进行拍照呢
一般情况下是调用camera的takepicture函数
public boolean onKeyUp(int keyCode, KeyEvent event) {      
// TODO Auto-generated method stub      
switch (keyCode) {      
  case KeyEvent.KEYCODE_DPAD_CENTER:            
mPreview.takePicture();           
break;        }      
return true;    }  
takepicture一共有3个参数
前面的2个可以设置为null
最后一个参数最重要下面的代码是将我们拍照的图片保存起来
private PictureCallback jpegCallback = new PictureCallback() {                @Override        
public void onPictureTaken(byte[] data, Camera camera) {  
        
  cameraBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);            File myCaptureFile = new File("/sdcard/camera/camera1.jpg";            
try {               
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));               
cameraBitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);                bos.flush();               
bos.close();               
Canvas canvas = mHolder.lockCanvas();               
canvas.drawBitmap(cameraBitmap, 0, 0, null);                mHolder.unlockCanvasAndPost(canvas);            }            
catch (Exception e) {              
  e.getStackTrace();         
  }      
}   
};  
因为我做的是一个小项目,camera只是其中一个部分,所以学习是参考网上的代码进行。现在把链接给出来http://www.cnblogs.com/chiefCTO/archive/2011/09/27/2193637.html
这是博客园的链接,欢迎大家共同探讨和研究
对于camera这个部分有很多的问题存在,比如资源,比如打开语句,大家实际应用时就会发现,希望可以一起探讨呵呵
回复此楼

» 收录本帖的淘帖专辑推荐

android学习笔记

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

每天都是新的一天,每天上帝都会给你不同的惊喜
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jinghua88888

木虫 (职业作家)

梦未央

不懂,好高深
Own Your Future!
4楼2012-03-19 23:11:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

qqhegg

荣誉版主 (文坛精英)

珊瑚小美-----小元家的九妹

优秀版主优秀版主

引用回帖:
2楼: Originally posted by 林夕梦 at 2012-03-19 21:47:05:

呵呵
每天都是新的一天,每天上帝都会给你不同的惊喜
3楼2012-03-19 21:47:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gujing136

禁虫 (文坛精英)

你太强了,小美··
叫老猫的兔子
5楼2012-03-20 09:08:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qqhegg

荣誉版主 (文坛精英)

珊瑚小美-----小元家的九妹

优秀版主优秀版主

引用回帖:
5楼: Originally posted by gujing136 at 2012-03-20 09:08:29:
你太强了,小美··

oh ,no
每天都是新的一天,每天上帝都会给你不同的惊喜
6楼2012-03-20 09:54:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[博后之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 IDs3scOF0tjC 2026-09-28 4/200 2026-09-29 19:27 by cqwQDCxMcL3I
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +4 ZYXdhzDAy9ZX 2026-09-28 4/200 2026-09-29 16:54 by yCO1Ll7aHtsw
[考研] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 ZYXdhzDAy9ZX 2026-09-28 4/200 2026-09-29 16:37 by etmYJ6d2rquH
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 tqUTOxClQUMF 2026-09-28 3/150 2026-09-29 15:46 by etmYJ6d2rquH
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 tqUTOxClQUMF 2026-09-28 4/200 2026-09-29 15:15 by etmYJ6d2rquH
[博后之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 tqUTOxClQUMF 2026-09-28 3/150 2026-09-29 15:04 by etmYJ6d2rquH
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 tqUTOxClQUMF 2026-09-28 3/150 2026-09-29 14:58 by etmYJ6d2rquH
[考博] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +6 GDBe8tDZqE8z 2026-09-28 6/300 2026-09-29 14:41 by etmYJ6d2rquH
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 GDBe8tDZqE8z 2026-09-28 3/150 2026-09-29 14:30 by etmYJ6d2rquH
[找工作] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +6 IDs3scOF0tjC 2026-09-28 6/300 2026-09-29 14:13 by etmYJ6d2rquH
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +6 IDs3scOF0tjC 2026-09-28 7/350 2026-09-29 14:07 by etmYJ6d2rquH
[博后之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 IDs3scOF0tjC 2026-09-28 3/150 2026-09-29 13:56 by etmYJ6d2rquH
[教师之家] 某top大学教授说“能够在市场中兑现的能力才是真能力”无比同意! +8 zju2000 2026-09-26 9/450 2026-09-29 13:47 by ahsoarli
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 ZYXdhzDAy9ZX 2026-09-28 3/150 2026-09-29 06:42 by ZvyPK8n6Nfki
[找工作] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 ZYXdhzDAy9ZX 2026-09-28 3/150 2026-09-29 06:28 by ZvyPK8n6Nfki
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 tqUTOxClQUMF 2026-09-28 3/150 2026-09-28 23:46 by b8fCuTHqckEt
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 IDs3scOF0tjC 2026-09-28 4/200 2026-09-28 22:55 by ez6fGg9abYaj
[有机交流] 同一个分子,一条来自文献,一条来自AI——不告诉你答案,你会选哪条? +3 tianxiaoxian 2026-09-28 6/300 2026-09-28 22:44 by tianxiaoxian
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 IDs3scOF0tjC 2026-09-28 6/300 2026-09-28 22:15 by ez6fGg9abYaj
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 CfXuS1rDhLYN 2026-09-28 3/150 2026-09-28 19:08 by 9lS3ad5oOymn
信息提示
请填处理意见