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

作者: gtechoogle | 来源:发表于2016-07-18 21:10 被阅读1906次

    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到
    <service android:name=".TestTile"
                android:label="@string/tile_label"
                android:icon="@drawable/ic_zen"
              android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
                <intent-filter>
                    <action android:name="android.service.quicksettings.action.QS_TILE"/>
                </intent-filter>
    </service>
    

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

    • 下来可以先看下实际效果,下拉后再Quick Setting中会有个Edit,点击后往下滑动,三方APP定义的QS tile就会都显示,可以通过拖拽放到常用设定中.
    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,然后反转成黑底的

    Screenshot_20160718-210709.png 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 新功能 - 添加快速设定

        本文链接:https://www.haomeiwen.com/subject/lbpyjttx.html