package info.papdt.blackblub.services; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.graphics.drawable.Icon; import android.os.Build; import android.service.quicksettings.Tile; import android.service.quicksettings.TileService; import android.content.Intent; import android.util.Log; import info.papdt.blackblub.C; import info.papdt.blackblub.R; import info.papdt.blackblub.receiver.TileReceiver; @SuppressLint("Override") @TargetApi(Build.VERSION_CODES.N) public class MaskTileService extends TileService { private boolean isRunning = false; private static final String TAG = MaskTileService.class.getSimpleName(); @Override public void onClick(){ Log.i(TAG, "Tile service onClick method called"); super.onClick(); Tile tile = getQsTile(); if (tile == null) return; int status = tile.getState(); Log.i(TAG, "status:"+status+"\t receive"); switch (status){ case Tile.STATE_INACTIVE: Intent activeIntent = new Intent(); activeIntent.setAction(TileReceiver.ACTION_UPDATE_STATUS); activeIntent.putExtra(C.EXTRA_ACTION, C.ACTION_START); activeIntent.putExtra(C.EXTRA_DO_NOT_SEND_CHECK, false); sendBroadcast(activeIntent); updateActiveTile(tile); break; case Tile.STATE_ACTIVE: Intent inActiveIntent = new Intent(); inActiveIntent.setAction(TileReceiver.ACTION_UPDATE_STATUS); inActiveIntent.putExtra(C.EXTRA_ACTION, C.ACTION_STOP); inActiveIntent.putExtra(C.EXTRA_DO_NOT_SEND_CHECK, false); sendBroadcast(inActiveIntent); updateInactiveTile(tile); break; default: break; } } private void updateInactiveTile(Tile tile) { Icon inActiveIcon = Icon .createWithResource(getApplicationContext(), R.drawable.ic_qs_night_mode_off); tile.setIcon(inActiveIcon); tile.setState(Tile.STATE_INACTIVE); tile.updateTile(); } private void updateActiveTile(Tile tile) { Icon activeIcon = Icon .createWithResource(getApplicationContext(), R.drawable.ic_qs_night_mode_on); tile.setIcon(activeIcon); tile.setState(Tile.STATE_ACTIVE); tile.updateTile(); } @Override public int onStartCommand(Intent intent, int flags, int arg) { if (intent != null) { isRunning = C.ACTION_START.equals(intent.getStringExtra(C.EXTRA_ACTION)); this.onStartListening(); } return super.onStartCommand(intent, flags, arg); } @Override public void onStartListening() { if (getQsTile() != null) { if (isRunning) { updateActiveTile(getQsTile()); } else { updateInactiveTile(getQsTile()); } } } }