Android N 新功能 - 添加快速设定

Android N version 其中一个功能,就是允许三方app可以添加自己的快速设定,到系统的下拉设定中,方便用户快速打开关闭某些功能.

废话不多说,直接上代码来讲解.

  • 创建一个class,继承自TileService,这个TileService是N SDK新加的,所以务必SDK更新到N version
public class TestTile extends TileService {
    @Override
    public void onStartListening() {
        super.onStartListening();
    }

    @Override
    public void onStopListening() {
        super.onStopListening();
    }

    @Override
    public void onClick() {
        super.onClick();
    }
}

这里的override方法之后会再详细介绍.

  • 建完service后,需要在manifest中声明,这样才能被系统SystemUI query到

            
                
            

从上面的声明中,其实已经比较明显,这个Tile要显示的名字,icon等都是在这里声明的,特别注意这里一定要加上对应的permission才行.

  • 下来可以先看下实际效果,下拉后再Quick Setting中会有个Edit,点击后往下滑动,三方APP定义的QS tile就会都显示,可以通过拖拽放到常用设定中.
Android N 新功能 - 添加快速设定_第1张图片
Screenshot_20160718-202234.png
  • 有了显示后,还需要有对应的功能才有意义。一般来说,QS中的tile的功能就是某个功能开关,比如手电筒的开关等,因此这里通常需要实现的就是点击的相应,已经开关状态的显示。
    先说点击,这个比较简单,就是override的TileService 的onClick() function. 可以是启动自己的activity等,根据APP需求来编写.
@Override
    public void onClick() {
        super.onClick();
        Log.d("TEST","Launch onClick()")
    }

那么怎么更新state呢?这里QS的定义会是两个状态,Tile.STATE_ACTIVE 和 Tile.STATE_INACTIVE, 而这两个状态的设定则是app自己结合你的功能来设定,然后再更新UI,方法基本上类似下面

@Override
    public void onClick() {
        super.onClick();        
        num++;
        boolean enabled = num % 2 == 0;
        Log.d("TEST","Run onClick function with enabled = " + enabled);
        getQsTile().setState(enabled ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
        getQsTile().updateTile();
    }

另外要注意,这里的ACTIVE和INACTIVE其实就是对图做翻色的一个设定,我没有测试这里是否可以放置非白色的图,但是default都是这种白色的icon,然后反转成黑底的

Android N 新功能 - 添加快速设定_第2张图片
Screenshot_20160718-210709.png
Android N 新功能 - 添加快速设定_第3张图片
Screenshot_20160718-210714.png
07-18 21:03:10.437  8692  8692 D TEST    : Run onClick function with enabled = f
alse
07-18 21:03:13.715  8692  8692 D TEST    : Run onClick function with enabled = t
rue
07-18 21:03:14.941  8692  8692 D TEST    : Run onClick function with enabled = f
alse
07-18 21:03:15.656  8692  8692 D TEST    : Run onClick function with enabled = t
rue
07-18 21:03:21.745  8692  8692 D TEST    : Run onClick function with enabled = f
alse
07-18 21:03:22.531  8692  8692 D TEST    : Run onClick function with enabled = t
rue
07-18 21:05:07.896  8692  8692 D TEST    : Run onClick function with enabled = f
alse
07-18 21:07:11.244  8692  8692 D TEST    : Run onClick function with enabled = t
rue

原理的部分还没有仔细看过,如果有兴趣的同学可以一起讨论学习.

你可能感兴趣的:(Android N 新功能 - 添加快速设定)