- 浏览: 90583 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
enefry:
不能修改对焦和曝光时间啊.
android 手机拍照流程 -
greenboy1:
楼主 你的方法里面若是保存IM出现问题。
Contact 联系人工具类(二) -
greenboy1:
谢谢分享 非常感谢
Contact 联系人工具类(二) -
greenboy1:
非常好 谢谢
Contact 联系人工具类(一) -
bug_shi:
import com.litsoft.domain.Conta ...
Contact 联系人工具类(一)
android 拍照API流程
1. 在布局文件中添加一个 surfaceView (摄影平面)
2.根据 SurfaceView 获得 Holder (固定器)
3.给固定器设置 SurfaceHolder.Callback ; 这个 Callback 有一系列的周期方法,
比如:surfaceCreated,surfaceChanged,surfaceDestroyed等方法.
①.在surfaceDestroyed 中 打开相机,设置预览效果 ;
②.在surfaceChanged中可以初始化相机( Camera );比如相机的参数: 像素, 大小,格式,开始预览,等等
③.在surfaceDestroyed可以可以停止相机拍摄;释放相机资源
4. 相机自动对焦 的回调处理
Camera.autoFocus( AutoFocusCallback )
AutoFocusCallback 有个接口方法 public void onAutoFocus(boolean focused, Camera camera) { /* 对到焦点拍照 */ if (focused) { takePicture();//见第5步 } }
5.Camera.takePicture(ShutterCallback shutter/*摄像*/, PictureCallback raw/*拍照*/, PictureCallback jpeg/*照片*/)
查看API或者源码,可以发现,这些callback里面都有包含摄像,或者被拍照时的byte[]数据,而这些数据可以根据BitmapFactory变成Bitmap图片.
见源代码如下:
public class ScanBarZBarActivity extends Activity implements SurfaceHolder.Callback{ private static String TAG = "ScanBarZBarActivity"; private Camera mCamera; private Button mButton, mButton1, mButton2; private SurfaceView mSurfaceView; private SurfaceHolder holder; private AutoFocusCallback mAutoFocusCallback = new AutoFocusCallback(); private String path = "WXJSMyPhoto"; private String path1; private Bitmap bmp; private int cnt = 1; private Calendar c; public native String getISBN(Bitmap bmp); private int flag=5; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 隐藏状态栏 */ this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); /* 隐藏标题栏 */ requestWindowFeature(Window.FEATURE_NO_TITLE); /* 设定屏幕显示为横向 */ this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); setContentView(R.layout.camera); /* SurfaceHolder设定 */ mSurfaceView = (SurfaceView) findViewById(R.id.mSurfaceView); holder = mSurfaceView.getHolder(); holder.addCallback(ScanBarZBarActivity.this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); c = Calendar.getInstance(); /* Button初始化 */ mButton = (Button) findViewById(R.id.myButton); mButton1 = (Button) findViewById(R.id.myButton1); mButton2 = (Button) findViewById(R.id.myButton2); /* 拍照Button的事件处理 */ mButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { /* 告动对焦后拍照 */ mCamera.autoFocus(mAutoFocusCallback); } }); /* Button的事件处理 */ mButton1.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { /* 保存文件 */ Log.i(TAG,"click button2"); if (bmp != null) { /* 检查SDCard是否存在 */ if (!Environment.MEDIA_MOUNTED.equals(Environment .getExternalStorageState())) { /* SD卡不存在,显示Toast信息 */ Toast.makeText(ScanBarZBarActivity.this, "SD卡不存在!无法保存相片,请插入SD卡。", Toast.LENGTH_LONG) .show(); } else { try { /* 文件不存在就创建 */ File f = new File(Environment .getExternalStorageDirectory(), path); Log.i(TAG,"click button2:" + f.getAbsolutePath()); if (!f.exists()) { f.mkdir(); } /* 保存相片文件 */ path1 = String.valueOf(c.get(Calendar.MILLISECOND)) + "camera.jpg"; File n = new File(f, path1); FileOutputStream bos = new FileOutputStream(n .getAbsolutePath()); /* 文件转换 */ bmp.compress(Bitmap.CompressFormat.JPEG, 100, bos); /* 调用flush()方法,更新BufferStream */ bos.flush(); /* 结束OutputStream */ bos.close(); Toast.makeText(ScanBarZBarActivity.this, path1 + "保存成功!", Toast.LENGTH_LONG).show(); cnt++; } catch (Exception e) { e.printStackTrace(); } } } mButton.setVisibility(View.VISIBLE); mButton1.setVisibility(View.VISIBLE); mButton2.setVisibility(View.VISIBLE); /* 重新设定Camera */ stopCamera(); initCamera(); } }); /* 放弃Button的事件处理 */ mButton2.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { mButton.setVisibility(View.VISIBLE); mButton1.setVisibility(View.VISIBLE); mButton2.setVisibility(View.VISIBLE); /* 重新设定Camera */ stopCamera(); initCamera(); } }); } @Override public void surfaceCreated(SurfaceHolder surfaceholder) { try { /* 打开相机, */ mCamera = Camera.open(); mCamera.setPreviewDisplay(holder); } catch (IOException exception) { mCamera.release(); mCamera = null; } } @Override public void surfaceChanged(SurfaceHolder surfaceholder, int format, int w, int h) { /* 相机初始化 */ Log.i(TAG,"init camera"); initCamera(); } @Override public void surfaceDestroyed(SurfaceHolder surfaceholder) { Log.i(TAG,"destoryed camera"); stopCamera(); mCamera.release(); mCamera = null; } /* 拍照的method */ private void takePicture() { if (mCamera != null) { Log.i(TAG,"takePicture"); mCamera.takePicture(shutterCallback, rawCallback, jpegCallback); } } private ShutterCallback shutterCallback = new ShutterCallback() { public void onShutter() { } }; private PictureCallback rawCallback = new PictureCallback() { public void onPictureTaken(byte[] _data, Camera _camera) { } }; private PictureCallback jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] _data, Camera _camera) { /* 取得相仞 */ try { /* 设定Button?视性 */ mButton.setVisibility(View.GONE); mButton1.setVisibility(View.VISIBLE); mButton2.setVisibility(View.VISIBLE); /* 取得相仞Bitmap对象 */ bmp = BitmapFactory.decodeByteArray(_data, 0, _data.length); //发送给isbn分析 // String isbn = getISBN(bmp);获得图片解析后的信息 // Log.i(TAG, "isbn:" + flag + isbn); flag--; if(flag>0){ mCamera.autoFocus(mAutoFocusCallback); } } catch (Exception e) { e.printStackTrace(); } } }; /* 告定义class AutoFocusCallback */ public final class AutoFocusCallback implements android.hardware.Camera.AutoFocusCallback { public void onAutoFocus(boolean focused, Camera camera) { /* 对到焦点拍照 */ if (focused) { takePicture(); } } }; /* 相机初始化的method */ private void initCamera() { if (mCamera != null) { try { Camera.Parameters parameters = mCamera.getParameters(); /* * 设定相片大小为1024*768, 格式为JPG */ parameters.setPictureFormat(PixelFormat.JPEG); parameters.setPictureSize(1024, 768); mCamera.setParameters(parameters); /* 开启预览画面 */ mCamera.startPreview(); } catch (Exception e) { e.printStackTrace(); } } } /* 停止相机的method */ private void stopCamera() { if (mCamera != null) { try { /* 停止预览 */ mCamera.stopPreview(); } catch (Exception e) { e.printStackTrace(); } } } }
发表评论
-
android progressbar 自定义样式
2012-04-27 13:12 0<?xml version="1.0&q ... -
自定义Sync账户
2011-11-28 15:44 935看code -
自定义view图片圆角
2011-11-24 16:43 929没啥说的,看code才是王道。。 -
android 动画
2011-10-18 14:57 799人家的:http://www.htcplayer.com/th ... -
使用PopupWindows
2011-08-18 13:14 2959主要参考资料: http://www.cnblogs.com ... -
service 刷新UI
2011-08-12 21:40 858service 刷新UIservice 刷新UI,见附件 -
Android CTS的使用
2011-01-24 17:06 3180Android CTS的使用1. 下载Android源码(用r ... -
Contact 联系人工具类(一)
2010-11-12 16:44 2769从数据库中取出数据封装成对象: package com. ... -
Contact 联系人封装
2010-11-12 16:42 1122Contact 需要的字段 private Strin ... -
android 中好用的时间工具-DateUtils
2010-10-14 11:07 2453DateUtils.isToday(timeMills) ? ... -
不要忘了BroadcastReceiver 注册的用法
2010-10-14 10:52 1464BroadcastReceiver 是用来接收广播意图的服务组 ... -
Contact 联系人中的一些重要信息
2010-10-08 16:26 1218首先应该知道联系人的信息都存放在data表中,其中主要的字段 ...
相关推荐
Android平台的选择,一方面是因为其开源的特性和庞大的用户基础,另一方面也是因为智能手机的普及使得在移动设备上实现车牌识别成为可能。 Demo程序中可能包含的模块有图像采集、预处理、车牌定位、字符分割、字符...
其目标是在手机、个人数字助理(PDA)等移动终端上,通过电信、互联网通讯技术的融合,实现实时的信息交流和工作协同。 - **定义**: 移动信息化涉及将政府和企业的各种信息化软件体系(如办公自动化、ERP、CRM、物流...
实训商业源码-130个微信小程序源码-论文模板.zip
内容概要:本文详细介绍了光伏交直流混合微电网系统的离网(孤岛)模式下双下垂控制的Matlab/Simulink仿真模型。该系统由直流微电网、交流微电网和互联变换器(ILC)组成,分别采用了不同的控制策略来确保系统的稳定性。直流微电网采用电压电流双闭环控制,交流微电网则利用LCL逆变器进行下垂控制,而ILC通过双下垂控制策略协调交流母线频率和直流母线电压。仿真结果显示,在负载突变情况下,系统能够迅速恢复并保持稳定运行,展示了良好的鲁棒性和波形质量。 适合人群:对电力电子、微电网技术和Matlab仿真感兴趣的科研人员和技术开发者。 使用场景及目标:适用于研究和开发光伏交直流混合微电网系统的离网控制策略,特别是双下垂控制的应用。目标是在不同负载条件下验证系统的稳定性和效率,优化控制参数以提高系统性能。 其他说明:该仿真模型需要Matlab 2020b及以上版本,并使用SPS工具箱中的特定模块。文中提供了详细的控制参数设置和仿真结果分析,有助于深入理解各组件的工作原理及其协同效应。
内容概要:本文深入解析了基于SMIC 180nm工艺的10bit 20MHz SAR(Successive Approximation Register)ADC设计及其仿真实现。文中详细介绍了各个关键模块的设计原理和技术细节,如栅压自举开关、Vcm-Based开关时序、差分CDAC阵列、两级动态比较器、异步时钟生成以及动态SAR逻辑等。此外,提供了完整的仿真文档、电路图和预设好的仿真参数,使读者能够快速上手并进行实验验证。文章还特别强调了设计中的优化技巧,如通过动态电平转换降低THD、利用Vcm-Based时序减少冗余比较周期、优化比较器时钟脉冲宽度等,确保设计的高性能和稳定性。 适合人群:对模拟集成电路设计感兴趣的初学者和有一定经验的研发人员,特别是希望深入了解SAR ADC设计原理和仿真实践的人群。 使用场景及目标:① 学习SAR ADC的基本原理和设计方法;② 掌握基于SMIC 180nm工艺的具体实现细节;③ 进行仿真实验,验证设计效果并理解各模块的工作机制;④ 提升对低功耗、高精度ADC设计的理解。 其他说明:本文不仅提供理论讲解,还包括大量实用的Verilog和Matlab代码片段,便于读者理解和实践。同时,预设的蒙特卡洛仿真参数有助于读者探索工艺偏差对性能的影响。
基于聚类特征随机凸组合的非对抗图像生成算法 本研究旨在提供一种从给定数据集生成新图像的方法,而无需训练任何生成对抗网络(GAN)。其想法是使用主成分分析(PCA)算法提取数据集的特征,寻找图像像素空间和特征空间之间的线性变换,执行降维,并对结果集进行聚类。然后,通过随机凸组合生成新的特征向量,随后通过应用相应变换的逆将其映射回图像像素空间。 拼音双语对照 笔记
实训商业源码-文件快递-论文模板.zip
更新说明: 1.新增加前台用户自助购买广告功能 2.新增加自动审核功能 3.自动定时提交百度收录! 4.前台模板1套、置顶在线购买,接口对接易支付) 5.【修复】修复在线支付产生的BUG 环境要求:PHP7.0 安装sg11拓展
内容概要:本文档《DeepSeek本地部署教程(非ollama)》详细介绍了DeepSeek大语言模型的本地部署流程。首先明确了环境要求,包括Python 3.8以上版本、CUDA 11.7(针对GPU用户)、至少16GB RAM以及推荐的操作系统。接着阐述了安装步骤,如克隆代码仓库、创建虚拟环境、安装依赖等。随后讲解了模型下载方式,支持从Hugging Face平台下载不同版本的DeepSeek模型,如DeepSeek-7B、DeepSeek-67B和DeepSeek-Coder。文档还提供了两种运行模型的方式:命令行运行和使用API服务。此外,针对常见的问题,如CUDA相关错误、内存不足和模型加载失败等,给出了详细的解决方案。最后,文档提出了性能优化建议,如使用量化技术减少内存占用、启用CUDA优化等,并强调了安全注意事项,包括定期更新模型和依赖包、注意API访问权限控制等方面。; 适合人群:对大语言模型感兴趣的研究人员、开发者,特别是希望在本地环境中部署和测试DeepSeek模型的技术人员。; 使用场景及目标:①帮助用户在本地环境中成功部署DeepSeek大语言模型;②解决部署过程中可能遇到的问题,如环境配置、模型下载和运行时的常见错误;③提供性能优化建议,确保模型在不同硬件条件下的最佳表现;④指导用户进行安全配置,保障模型和数据的安全性。; 阅读建议:在阅读本教程时,建议按照文档的步骤顺序逐步操作,同时结合实际情况调整环境配置和参数设置。对于遇到的问题,可以参考常见问题解决部分提供的解决方案。此外,性能优化部分的内容有助于提高模型的运行效率,值得深入研究。
Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目),该项目是个人大作业项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于SpringCloud架构的简易版个人网上银行系统源码(高分项目)Java基于S
内容概要:本文档详细介绍了基于JavaScript的俄罗斯方块游戏课程设计,旨在通过开发完整的俄罗斯方块游戏帮助学生掌握前端开发技术。课程设计分为课程背景与目标、项目意义、预期成果、需求分析、系统设计、详细设计、界面设计、实现方案、测试方案、项目进度安排以及总结与展望几个部分。系统设计采用模块化思想,包括游戏核心逻辑、界面渲染、用户交互和游戏状态管理四个主要模块。详细设计中定义了方块类、游戏类、渲染类和控制器类,明确了各组件的功能和交互方式。实现方案提供了HTML、CSS和JavaScript的具体代码示例,确保游戏在不同浏览器和设备上的兼容性。测试方案涵盖功能测试、边界测试、用户界面测试和兼容性测试,以保证游戏的质量。项目进度安排分为需求分析、编码实现、测试调试、文档编写和项目验收五个阶段,时间跨度约为11周。 适合人群:具备一定编程基础,特别是对JavaScript有一定了解的学生或初学者。 使用场景及目标:①巩固JavaScript基础知识,包括变量、函数、对象、数组、循环等;②理解并掌握DOM操作方法;③学习如何处理用户事件和实现交互效果;④掌握动画原理和实现方式;⑤培养解决实际问题的能力和逻辑思维。 其他说明:此课程设计不仅注重代码编写,还强调需求分析和方案设计,建议学习者在实践中结合这些内容,调试代码并不断优化游戏体验。此外,文档还提出了未来的改进方向,如添加更多游戏模式、实现多人对战、增加音效和动画效果等。
实训商业源码-13116-成语答题-论文模板.zip
实训商业源码-婚恋交友系统v6.0-论文模板.zip
K005_调试工具_串口调试软件3.0a-串口通讯.zip
内容概要:本文介绍了二维RRT(Rapidly-exploring Random Trees)算法与贝塞尔曲线结合用于路径规划的方法。RRT算法通过随机采样在复杂环境中寻找路径,而贝塞尔曲线则用于对路径进行平滑处理,使路径更加自然流畅。文中详细解释了两种算法的工作原理,并提供了具体的实现步骤和代码片段。此外,还展示了不同情况下的效果图,指出了在障碍物密集区域可能出现的问题及其解决方案。 适合人群:对机器人导航、自动驾驶等领域感兴趣的科研人员、工程师及学生。 使用场景及目标:①研究和开发高效的路径规划算法;②应用于机器人导航、自动驾驶等需要路径规划的实际项目中;③解决路径不平滑、易与障碍物相交等问题。 其他说明:虽然贝塞尔曲线可以使路径更加美观和平滑,但在障碍物密集的情况下可能会导致路径与障碍物相交。因此,需要进一步优化采样策略或增加避障逻辑以确保路径的安全性和有效性。
Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码.zip,该项目是个人大作业项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子跳绳队人员管理系统源码Java实现的洛杉矶第三人民医院女子
内容概要:本文档详细介绍了《C#超市收银系统课程设计》的内容,旨在通过实现一个简单的超市收银系统,帮助学生掌握C#语言的基础编程技巧、面向对象编程、Windows窗体应用程序开发以及数据库操作等知识点。系统主要功能包括商品信息的录入、存储和管理,支持扫码(或手动输入)结账、计算总价与找零、生成购物小票,并实现数据的持久化存储。系统采用三层架构设计,分别为表示层、业务逻辑层和数据访问层,确保系统的模块化、健壮性和可扩展性。此外,文档还提供了详细的类设计、数据库设计、源代码实现及系统测试用例,并总结了设计成果、遇到的问题及解决方案。 适合人群:计算机专业学生或具备一定C#编程基础的开发者,特别是对Windows窗体应用程序开发和数据库操作感兴趣的初学者。 使用场景及目标:① 学习C#语言的基本语法和面向对象编程;② 掌握Windows窗体应用程序的开发流程;③ 理解并实现数据库操作,如SQLite的使用;④ 提高程序设计和调试能力,增强对实际项目开发的理解。 其他说明:文档不仅提供了理论知识,还结合了实际操作,通过具体的功能实现和测试用例,帮助读者更好地理解和掌握C#编程技巧。此外,文档还提出了改进方向,如增加图形界面、会员管理、销售统计和报表功能等,鼓励读者进一步探索和完善系统。
实训商业源码-拼多多1.28完整包-论文模板.zip
本文详细介绍了基于STM32F103处理器的环境监测系统硬件连接、OneNET云平台配置、代码修改及固件烧录的全流程。系统通过PM2.5传感器、温湿度传感器、OLED显示屏和ESP8266 WiFi模块实现数据采集与显示,并通过OneNET云平台进行数据传输与监控。文章首先描述了各硬件模块与STM32的接线方法,包括OLED、ESP8266、PM2.5传感器、温湿度传感器和继电器模块的详细连接说明。接着,提供了OneNET平台的使用教程,包括账号注册、产品添加、设备配置和Token生成等步骤。