Android硬件入门-照相机
学习Android不能不学习照相机,现在各种美容相机,微信朋友圈发图,现在升级之后直接下拉就可以照相了,各种艳照的的源头也是照相机,扯远了,有点邪恶了,还是简单学习一下Android中照相机的使用,Android中照相机的使用一般分为两种使用已有的照相App(可以理解为系统内置的照相机)和单独创建一个照相App,第一种方式简单易懂,第二种方式如果做的好的话可以养活一个公司~今天就简单的描述一下第一种的调用~
基础工作
调用照相机需要照相,照相就需要存储,存在外部存储中需要设置权限,本次设置的三个权限:一个是调用Camera权限,第二个是要求设备有照相机,第三个是在外部设备写的权限:
1 2 3 4 5 | <uses-permission android:name= "android.permission.CAMERA" /> <uses-feature android:name= "android.hardware.camera" /> <uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" /> |
简单的页面,一个Buttom,一个ImageView:
Demo实现
简单的三部曲,首先创建Intent,然后启动Intent,最后接收结果,没有前置摄像头,就用的是模拟的:
拍照事件:
1 2 3 4 5 6 7 | public void cameraEvent(View view) { intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 创建一个意图去获取图片 file= getOutputMediaFile(); // 获取路径 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); // 设置文件名 // 启动Intent startActivityForResult(intent, IMAGE_REQUEST_CODE); } |
获取文件路径的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // 图片路径 private static File getOutputMediaFile() { File mediaStorageDir = new File( Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), tag); if (!mediaStorageDir.exists()) { if (!mediaStorageDir.mkdirs()) { Log.d(tag, "存储目录创建失败" ); return null ; } } // 创建文件名 String timeStamp = new SimpleDateFormat( "yyyyMMdd_HHmmss" ) .format( new Date()); File mediaFile = null ; mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg" ); Log.d(tag, "存储目录:" + mediaFile); return mediaFile; } |
完成之后的接收事件需要重写Activity中的onActivityResult方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 | @Override protected void onActivityResult( int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub if (requestCode == IMAGE_REQUEST_CODE&&resultCode==RESULT_OK) { imageView=(ImageView) findViewById(R.id.camera_img); //两种设置方式 //图片较大的时候可以使用这种 Bitmap bitmap=BitmapFactory.decodeFile(file.toString()); imageView.setImageBitmap(bitmap); // imageView.setImageURI(Uri.fromFile(file)); } super .onActivityResult(requestCode, resultCode, data); } |
效果如下:
主要参考资料:http://developer.android.com/guide/topics/media/camera.html
作者:FlyElephant
出处:http://www.cnblogs.com/xiaofeixiang
说明:博客经个人辛苦努力所得,如有转载会特别申明,博客不求技惊四座,但求与有缘人分享个人学习知识,生活学习提高之用,博客所有权归本人和博客园所有,如有转载请在显著位置给出博文链接和作者姓名,否则本人将付诸法律。
出处:http://www.cnblogs.com/xiaofeixiang
说明:博客经个人辛苦努力所得,如有转载会特别申明,博客不求技惊四座,但求与有缘人分享个人学习知识,生活学习提高之用,博客所有权归本人和博客园所有,如有转载请在显著位置给出博文链接和作者姓名,否则本人将付诸法律。
标签:
Android
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 2025成都.NET开发者Connect圆满结束