一键呼出小米公交卡

原创作者:AchillesL
若转载文章,请在明显的位置标明文章出处

1. 前言

  小米5可以用NFC公交卡直接刷公交和地铁,非常方便,唯一美中不足的地方是:

  需要在锁屏/黑屏的情况下,长按音量下键或者双击Home键,才能呼出公交卡界面。

  有一个情景:那如果我在需要刷公交卡时,已经进入了桌面,那我就必须先按关机键锁屏,再长按音量下键,才能呼出公交卡界面,有强迫症的人表示伤不起。
  既然这样,我们可以自己写个小程序呼出公交卡界面。

2. 查看公交卡界面的相关信息

  先呼出羊城通界面,然后用adb命令查看顶级Activity的相关信息。

  adb 命令:
  adb shell ddumpsys activity activities
  
  可见信息如图1下:

一键呼出小米公交卡_第1张图片
图1 顶级Activity的相关信息

通过截图,可以得到以下信息:
a. 包名:
com.miui.tsmclient
b. activity:
com.miui.tsmclient.ui.quick.DoubleClickActivity

其中还有action,flag等一些信息。

2. 写自己的APP

a. 新建Activity

一键呼出小米公交卡_第2张图片
图2 主界面

  如图2所示,很简单地,按照我们用adb查到的信息,构造一个Intent,然后通过startActivity调用,然后退出程序。

b. 修改小问题

  不过这样做会出现一个问题:我们点击app的时候,会出现一闪然后退出的情况。这个问题可以通过修改一下theme来解决,我们希望这个Activity不显示,如图3所示。

一键呼出小米公交卡_第3张图片
图3 修改Activity 的 theme

3. 在手机中调用APP

  到这里,APP已经写好,怎么才能更方便地调用呢?我打算把它放入小米的悬浮按钮里面,如图4所示。

一键呼出小米公交卡_第4张图片
图4 加到悬浮按钮中

4. 效果

  点击悬浮按钮,此时就能进入公交卡页面。

一键呼出小米公交卡_第5张图片
图5 通过我们的APP呼出公交卡界面

5. 后续优化

  后来有网友提醒,本文最后实现的效果,还需要点击一下卡面,才能刷公交卡。若想省去这一步,在Intent加入特定键值对就可以了。
 intent.putExtra("event_source", "key_volume_down");

6 代码地址

  https://github.com/AchillesLzg/MiCard

你可能感兴趣的:(一键呼出小米公交卡)