Android 系统/手机 有哪些好?

今天看到一个问题,iPhone到底爽在哪里? - 手机, 作为一个安卓用户,那么我就问了,安卓的好处都有啥? 姊妹问题: Windows Phone/Windows 10 Mobile 到底爽在哪里? - 手机
关注者
3084
被浏览
192884
Android爽到爆的地方,就两个字:开源。

下面举两个我生活的真实例子:

1.场景一:有段时间微信运动很火,每次中午饭后,身边同事都在讨论谁的步数多,甚至为了比步数,没事就用手摇一摇手机,(原由:统计步数其核心还是根据加速度等信息根据一定算法而来,所以只需用手来回摇摆就可以增加步数)。策略:我果断研究了一下Sensor架构,在framework层将计数器传感器的逻辑,每次上报步数x99,从此霸占朋友圈的微信运动封面。这就是爽到爆的地方。

如果你见过有人为了拼步数,将手机放到震动减肥仪上来增加步数。而我只是通过代码就能解决不是更爽吗?

番外篇:从此饭后再地不一边聊天一边甩手机比步数,再后来独孤求败也就不玩。

另外,有人评论批判这样打击大家健对康运动的积极性,还在自High表示无法理解。
我想说:为了拼步数没事用手摇晃手机,我这何尝不是解救大家? 为了抢个红包一定盯着手机,连正常春晚都看不成,释放自己不好吗? 难道不用微信运动,大家就不运动了?如果您是鹅厂的更不该如此,应该去思考如何改善自己的产品。(更新时间2016.4.28 08:30)


2.场景二:过年微信抢红包,支付宝咻一咻,身边人都盯着手机狂按,更有各种狂点机械手神器。策略:我果断自己写了一个小小的Apk。之后便安心地看春晚,微信红包照单全收。这就是爽到爆的地方。

有人觉得这有啥好爽的?如果你见过有人为了抢红包而设计硬件机器手来抢红包的话(见下图)。只需通过代码就能解决不是更爽吗?


---------------------------------------分割线--------------------------------------------------
更新时间2016.4.26

有人好奇是如何修改计数器逻辑:

在SystemSensorManager.java的内部类 SensorEventQueue中的方法dispatchSensorEvent,做如下修改:

protected void dispatchSensorEvent(int handle, float[] values, int inAccuracy, long timestamp){
        ...
        //START: 只需在该方法后增加如下即可:
        if(t.sensor.getType()==Sensor.TYPE_STEP_COUNTER){ 
            t.values[0]= t.values[0]*99
        }
        //END
        mListener.onSensorChanged(t);
    }

然后编译个framework.jar包,替换掉系统原来的即可,有源码就这么任性。(当然用xposed框架也能完成这件事,只是对我来说两行代码再替换一个jar包更为简单)

有人把替换一个jar就说成是刷Rom,还反讽我,真是可笑,难道你把家中的一张桌子换掉,就等价于重新盖房子?

---------------------------------------分割线-------------------------------------------------
更新时间 2016.4.27

建议:对Android不太熟悉的朋友,大家不要轻易尝试修改framework,很可能导致手机无法开机。

另外评论中不少朋友提到xposed框架,首先必须要说的是这是一个非常优秀的框架,非常值得去学习、去研究,其原理简单说就是通过hook方式把替换了系统原生服务,所以可以在不修改Android系统源码的情况,任意更改framework层的东西,的确很厉害。那xposed真的是万能的吗?答案是否定的,千万别以为有root权限就能为所欲为:
  1. Android 5.0在原有的权限系统下,又增加了一层selinux权限,所以有双重权限检测机制;
  2. 即使过了selinux权限这道坎,其所能干的事也仅仅停留在Android用户空间,对于Android内核都不提供的接口,比如计步器Sensor写数据的功能,该驱动并没对外开放接口,所以也无济于事, 除非直接修改底层驱动。
上面说这么多,并非要否定xposed框架,而是针对下面评论中有人提出的定时写数据的策略,这个计步器sensor真没提供给上层写节点那么简单的功能,至于通过手环计步也只不过是替换了计步源而已。


再则,评论中又有人好奇抢红包的实现方式,实现方式有多种,这里就只简单介绍思路:
  • AccessibilityService方式:在github看到的绝大多数的实现方式是采用AccessibilityService来开发的,这是一个比较具有通用性的实现方式。Google开放这个Service的初衷是为了辅助残疾人士而设计的,凡事有利有弊,于是不少App开发者利用这个做一些自动化的工作。采用这种策略的App很容易鉴别,那就是在手机 设置—>辅助功能—>服务 这一栏会显示先用的App名,这需要用户手动授权。
  • Uiautomator方式:用这种方案来实现的比较少。Google为了自动化测试而设计一套方案,功能之强大,我曾用这种方式写过一些测试Case,比如自动登陆微信/微博,发朋友圈等功能。再往下说细说就是自动化相关,此处省略10000字。有兴趣进一步了解的,可以看看许奔的《深入理解Android自动化测试》,曾跟作者面对面聊过,作者对自动化领域还是颇有心得。

Tips:"Android爽在哪"这是个开放话题,每个人都可以从自身感受出发谈一谈自己的感受。本文就是答主认为爽的地方,如果您不认可,大可以说说自己感觉爽的地方,真没有必要去攻击别人的感受,子非鱼焉知子鱼之乐
大神这个称号,我真的担当不起,还有很多需要学习和专研的,多谢大家的认可与支持。我只是业余时间喜欢瞎倒腾倒腾而已。