本来今天的文章准备给大家提供一篇技术文章,来讲讲Android自动进行通话录音。之前做一个APP有使用过该技术,本以为没有什么问题了,结果今天跳进了一个坑,既然已入坑,索性描述一下,防止大家再次入坑。
之前关于电话录音的需求很简单,来电或者去电时,手机自动录音。关于Android监听电话状态,我这里有一个Demo,就不再详细描述了,可以到github去看看,地址是
https://github.com/yjp19871013/PhoneStateDemo
有两种方式可以进行电话状态的监听,一种是使用Broadcast Receiver,一种使用TelephonyManager设置监听器,代码中两种方法都有涉及,不过使用一种要注释掉另一种的代码。
解决了电话状态监听,那么就该处理录音的问题了,坑就在这里,录音使用MediaRecorder或者AudioRecorder即可,之前的项目是基于4.2以前的系统,所以运行很好,但是,这次基于5.0以上的系统,问题就来了。录音时需要设置AudioSource,以前使用MIC和VOICE_CALL作为录音的声源都是没有问题的,但是,由于谷歌考虑隐私问题,现在基本上我们无法获得对端的声音!
或许你会怀疑,那为什么手机自带的拨号程序可以录音?的确,查阅资料后了解到,如果你的应用作为系统应用,那么是可以拿到对端的声音的。那么你的应用如何可以成为系统应用呢?以前,通过配置manifest文件可以实现,现在这也是不可行的,你需要将你的APP放在操作系统源码中进行编译才可以!
所以,现在的新版系统,如果你还希望做一个应用去进行通话双向录音,看样是有些难度了,目前没有发现什么好办法。也希望有这方面经验的朋友可以交流一下。
回想当时做这个功能,虽然公司内部使用,但是感觉涉及隐私,本不想做,后来经过沟通,添加了Toast提示,但是我们依然没有办法获得电话对端的允许,这样做一直觉得不妥。现在可好,看来是不能用了。代码寿命如此之短,可见还是少打擦边球。
产品不是凭空想象的,受到各个方面的限制,研发成本也是存在的,投入研发成本,换来的收益到底有多少,还是值得思考的。经验教训就是,公司以及研发应当有自己的判断,而不应该只是考虑技术是否可行,更要考虑是否关乎隐私,道德和法律,有一些东西,技术上或许可行,但是,或许过不久,技术的支持就被封杀了,到头来得不偿失。如果我们的产品曾经提供了某项功能,但是之后却取消了,难免会让一些用户离开。如何使用技术是一个值得思考的问题。
最近一段时间中兴员工跳楼事件也比较火,暂且不管结果到底如何,只是觉得作为技术人似乎很有力量,但是力量又是那么的薄弱,技术可能会让我们无所不能,但是技术人却应当有所为有所不为。
本周技术实施失败,也没有准备什么话题,想到哪里写到哪里,有时让自己放松一下,感觉也是不错的XD.