按照既定的开发进度,原本应该开始整合录音功能到神马笔记中了。
无意之间发现iOS Messages还有一个非常非常方便的功能,拿起手机靠近耳朵会自动启动录音功能。
这真是一个超级实用的功能,想象一下在神马笔记中的使用场景。
阳关明媚的午后,看着蒋勋先生的《蒋勋说宋词》,手机上打开神马笔记做读书笔记,读到辛弃疾的“杯汝来前,老子今朝点检形骸,……”,随手拿起手机,自动开始录音就将朗读的内容记录下来。
一、目标
实现神马笔记对话笔记拿起手机靠近耳朵自动录音。
二、功能分析
截图 | 说明 |
---|---|
没有启动录音时,拿起手机靠近耳朵。 | |
启动录音功能后,拿起手机靠近耳朵。 |
三、参考文章
文章 | 说明 |
---|---|
android实现 拿起耳边拨打电话 | 提供了很好的实现思路 |
android模仿打电话期间手机靠近息屏,远离亮屏 | 提供了非常方便的自动息屏的实现方式 |
android 使用距离传感器实现贴近息屏离开亮屏 | 提供了距离传感器的使用参考 |
四、开源项目
项目 | 描述 |
---|---|
thaleslima / accelerometer-detect-movement | [Android] Detect Movement Accurately using Accelerometer in Android |
tingtingTT / AndroidDetectMovingPhone | An Android mobile app that will set alert on the screen if anyone has moved the phone |
tbouron / ShakeDetector | This library provides a easy way to detect a shake movement using the build-in accelerometer and fire a callback on the UI thread every times it happens. |
brandonyan99 / MovementDetector | App to detect if phone moved |
avani1004 / PhoneMovedOrNot | |
mesutgolcuk / AccelerometerTestApp | Finds out how many seconds phone moved with accelemoter |
五、实现效果
参考了以上文章和开源项目,并且对iOS Messages进行了测试。
确定已经找到了一种比较好的实现方式。
必须结合2个传感器——加速度传感器和距离传感器。
前者用于判断用户是否移动手机,后者用于判断是否靠近耳朵。
只使用距离传感器,导致一个问题,手机没有移动,用手遮挡传感器会触发功能。
因此,必须结合加速度传感器检测手机有移动,和距离传感器判断手机靠近耳朵。
另外还要考量时间的因素,移动的时间太短,用户可能只是移动手机,然后被遮挡,不应该触发功能。
传感器 | 用途 | 目标值 |
---|---|---|
TYPE_ACCELEROMETER | 检测手机是否移动,以及移动的时间 | true or false |
duration | ||
TYPE_PROXIMITY | 检测手机是否靠近耳朵 | true or false |
同时,需要增加提示音。
靠近耳朵开始录音时,播放开始提示音,告知用户可以开始录音了。
远离耳朵停止录音时,播放停止提示音,告知用户录音已经结束。
完整的功能开发以及对参数进行调试,预计需要2天的开发时间。
最后整合到神马笔记,以及提交测试,大概需要1天的开发时间。
因此,总共需要至少3天的开发时间。
鉴于开发进度已经严重超期,按照正常的开发进度,应该在6月18日就发布神马笔记的2.7.0版本。
今天已经6月23日,严重超过既定的发布时间。
因此将该功能推迟到未来作为一个独立版本发布。
六、接下来
开始整合录音功能到神马笔记中。
七、Finally
无上甚深微妙法,
百千万劫难遭遇,
我今见闻得受持,
愿解如来真实义。