简单功能扫一扫-思想剖析 by:西瓜

分享给大家一个秘诀:

要开始写功能,首先得查这方面的资料,然后得在脑海里模拟这个功能的实现过程,而不是没有思路拿起键盘就敲的,敲的改来改去,思路不通又全删了,再慢慢敲。这样的效率是特别慢的。

好了废话不多说了,下面我们开始剖析一下扫一扫功能的实现:

第一步,首先我们得确定就是用户的相机的权限获取。只有在获取了用户的相机的权限才能进行扫一扫。因为扫一扫是拿相机的扫的。

第一步又可以分为2个部分。

01.如果是第一次使用扫一扫功能,这里会出现一个弹框提示用户,提示用户我们这边需要获取您的相机权限。如果允许,这里开启才能进行扫一扫,如果拒绝是扫不了的。

02.如果是第二次,我们这边就需要检测一下我们是否有app权限,如果有我们这边不做任何操作,直接进行扫一扫,如果没有我们需要提示用户去设置里面开启权限。

第二步:也就是开启一些初始化的设置了。

1.系统框架的导入,扫一扫依赖的系统库是AVFoundation。

2.获取当前摄像设备,如果获取不到。这里我们需要提示用户您的设置没有摄像头。然后扫一扫功能就此停止。

3.初始化设备的输入流和输出流。并对输出流支持的格式做判断。我们这边主要兼容条形码和二维码就好了。并且让输出流是在主线程里面进行刷新,如果是异步的话,链接是会出问题的。

4.初始化采集流(采集流的作用在于捕捉输入流和输出流)。并设置高的分辨率。

5.这里做一个判断,当采集流能添加输入流的时候,添加输入流。让采集流能够添加输出流的时候输出,添加输出流。截止到目前,采集流和输入流以及输出流已经衔接上了。

6.初始化采集流进行扫描窗口的位置。也就是扫描的范围。

7.针对窗口位置进行绘制框。(可自定义样式)。

8.针对窗口的上下,画条线,针对线写一个由上二下的动画。(可自定义动画)。针对动画来回走动,我这边里采用的是定时器。

9.在扫描窗口位置下面进行自定义(可是手电筒功能,提示用户的消息等等)。

第三步:开始扫描。

让采集流开始扫描采集。

第四步:扫描出结果。

01.扫秒出了结果,我们需要停止扫描动画。也就是定时器的扫描。

02.此时为想拿结果做的事定义为一个方法。

03.这里提示一下用户,扫描已完成,然后给用户2个选择,重新扫描,二确定。

04.当用户点击重新扫描。

采集流的扫描开启,定时器的开启,也就是线的动画的上动画开启。

有结果了又会走向第四步又从01开始。

05.用户点击确定。

1.移除采集流窗口。

2.销毁定时器。

3.调用想做的事情的那个方法。

至此扫一扫功能的整体模式就出来了。想要源码的可以私下找我拿。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,054评论 3 119
  • older elder
    左壮右悦阅读 1,063评论 0 0
  • 撩妹高手苏东坡。东坡一生有过三任妻子,分别是王弗,汪润之,王兆云。和王弗感情最深!在王弗离世后的第十年,东...
    沁墨m阅读 2,286评论 0 1
  • 不记得是什么时候进入这个写作群的,也许是一年吧,也许是一年多吧。其实,进群时间长短不是主要的,最主要的是进群后,我...
    杨金社阅读 1,823评论 2 1
  • 我坐在公交车上,旁边坐着我年老的父亲,他大声得和我说着话,引来一车人看着他,我也耐心地大声应着,对周围人歉意地笑笑...
    问芯阅读 1,792评论 0 2

友情链接更多精彩内容