原创作者:AchillesL
若转载文章,请在明显的位置标明文章出处
1. 前言
小米5可以用NFC公交卡直接刷公交和地铁,非常方便,唯一美中不足的地方是:
需要在锁屏/黑屏的情况下,长按音量下键或者双击Home键,才能呼出公交卡界面。
有一个情景:那如果我在需要刷公交卡时,已经进入了桌面,那我就必须先按关机键锁屏,再长按音量下键,才能呼出公交卡界面,有强迫症的人表示伤不起。
既然这样,我们可以自己写个小程序呼出公交卡界面。
2. 查看公交卡界面的相关信息
先呼出羊城通界面,然后用adb命令查看顶级Activity的相关信息。
adb 命令:
adb shell ddumpsys activity activities
可见信息如图1下:
通过截图,可以得到以下信息:
a. 包名:
com.miui.tsmclient
b. activity:
com.miui.tsmclient.ui.quick.DoubleClickActivity
其中还有action,flag等一些信息。
2. 写自己的APP
a. 新建Activity
如图2所示,很简单地,按照我们用adb查到的信息,构造一个Intent,然后通过startActivity调用,然后退出程序。
b. 修改小问题
不过这样做会出现一个问题:我们点击app的时候,会出现一闪然后退出的情况。这个问题可以通过修改一下theme来解决,我们希望这个Activity不显示,如图3所示。
3. 在手机中调用APP
到这里,APP已经写好,怎么才能更方便地调用呢?我打算把它放入小米的悬浮按钮里面,如图4所示。
4. 效果
点击悬浮按钮,此时就能进入公交卡页面。
5. 后续优化
后来有网友提醒,本文最后实现的效果,还需要点击一下卡面,才能刷公交卡。若想省去这一步,在Intent加入特定键值对就可以了。
intent.putExtra("event_source", "key_volume_down");