Android N: Quick Settings Tile API

Android N이 새로이 제공하는 Quick Settings Tile API를 이용하여 Quick Settings 영역에 어플의 tile을 추가할 수 있습니다.  아래 화면을 보면 Test tile이 추가되어 있죠.
Screenshot_20160612-105739.png
새로운 Tile을 추가하기 위해서는 TileService 클래스를 구현한 서비스를 구현해 주어야 합니다.
import android.service.quicksettings.TileService;

public class MyTileService extends TileService {
...
}
사용자가 해당 tile을 선택 시 동작을 구현하기 위해서는 아래와 같이 TileService method를 구현합니다.
public class MyTileService extends TileService {
  @Override
  public void onTileAdded() {
      Log.d(LOG_TAG, "onTileAdded");
  }

  @Override
  public void onTileRemoved() {
      Log.d(LOG_TAG, "onTileRemoved");
  }

  @Override
  public void onClick() {
      Log.d(LOG_TAG, "onClick state = " +
          Integer.toString(getQsTile().getState()));
  }
}
서비스이기 때문에 application의 manifest file에 추가해주어야 합니다. icon은 tile에 기본으로 사용될 icon 리소스를 지정합니다. BIND_QUICK_SETTINGS_TILE permission과 QS_TILE action에 대한 intent-filter는 꼭 필요합니다.
<service
  android:name=".MyTileService"
  android:label="@string/tile_label"
  android:icon="@drawable/ic_videocam"
  android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
  <intent-filter>
      <action
        android:name="android.service.quicksettings.action.QS_TILE"/>
  </intent-filter>
</service>
사용자가 tile을 선택 시 아이콘이 변경되도록 하려면 getQsTile().setIcon() method를 이용합니다. 아이콘 변경 후 updateTile() method를 호출해 주어야 합니다.
@Override
public void onClick() {
  Log.d(LOG_TAG, "onClick state = " +
      Integer.toString(getQsTile().getState()));
  Icon icon;
  if (toggleState == STATE_ON) {
      toggleState = STATE_OFF;
      icon =  Icon.createWithResource(getApplicationContext(),
                  R.drawable.ic_videocam_off);
  } else {
      toggleState = STATE_ON;
      icon = Icon.createWithResource(getApplicationContext(),
                 R.drawable.ic_videocam);
  }
  getQsTile().setIcon(icon);
  getQsTile().updateTile();
}
실행 가능한 전체 예제 코드는 github에서 확인하세요.

이 블로그의 인기 게시물

Wireless: HotSpot 2.0 이란?

Apple M1 Mac Mini에서 이더리움 (Ethereum) 채굴하기

Java: Java for Game? Java가 Game 개발에 어울릴까?