[黑历史] CYANOGENMOD API 初探——自定义磁贴

· 79 words · 1 minute read

注,这篇文章是于 2023 年 6 月 15 日从最早期的 WordPress 博客迁移来的,主要是记录(证明)一下小时候折腾的各种事情吧((逃


/2016/09/screenshot_20160927-2121191.png

CyanogenMod提供一些API,我们今天主要探索它的自定义磁贴。

自定义磁贴类似于通知,需要build,publish等操作,而且发布自定义磁贴需要常驻后台。

配置项目 #

项目的配置很简单,只需要在app级build.gradle加入依赖即可

dependencies {
……
compile org.cyanogenmod:platform.sdk:2.0
}

随后点击AndroidStudio工具栏按钮同步Gradle:

gradle-build

最后在需要的地方引用包:

import cyanogenmod.app.CMStatusBarManager;
import cyanogenmod.app.CustomTile;

Build一个磁贴 #

如同Notification Builder,CM磁贴也有一个极其类似的builder:

CustomTile.Builder builder = new CustomTile.Builder(context);

builder提供一些方法来自定义你的磁贴,CyanVibrate 项目使用了这些方法:

  • setIcon 设置图标
  • setOnClickIntent 设置磁贴被点击时的PendingIntent
  • setLabel 设置磁贴文字
  • shouldCollapsePanel 设置磁贴点击后是否收起通知栏,默认true
  • setOnSettingsClickIntent 设置 更多设置 按钮被点击时的Intent

我们主要讲讲较为复杂的setOnClickIntent。

setOnClickIntent——点击事件 #

由于是PendingIntent,我采用的是发送广播的方式,即“点击磁贴,发送广播,接收广播,启动震动服务”

首先,初始化一个Intent,设置Action:

Intent intent = new Intent();
intent.setAction(ACTION);

随后,调用setOnClickIntent方法设置点击intent:

builder.setOnClickIntent(PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));

最后,创建一个广播接收器接收你发出的Intent。

创建完builder,使用builder.build()方法生成磁贴。

发布磁贴 #

生成完之后,发布磁贴:

CMStatusBarManager.getInstance(context).publishTile(TAG, ID, customTile);

如同通知,它也需要一个TAG和ID,用于识别不同磁贴,并提供取消磁贴的方法。

执行上述语句之后,拉下快速设置面板,即可看到你的磁贴了。

提示 #

在接收器的onReceive中判断Action时,最好使用 ACTION常量.equals(intent.getAction()),不要使用intnet.getAction().equals(ACTION常量)。