/* * Copyright (C) 2015-2016 Willi Ye <williye97@gmail.com> * * This file is part of Kernel Adiutor. * * Kernel Adiutor is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Kernel Adiutor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Kernel Adiutor. If not, see <http://www.gnu.org/licenses/>. * */ package com.grarak.kerneladiutor.services.profile; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import com.grarak.kerneladiutor.R; import com.grarak.kerneladiutor.services.boot.Service; import com.grarak.kerneladiutor.utils.Prefs; import com.grarak.kerneladiutor.utils.Utils; import com.grarak.kerneladiutor.utils.kernel.cpu.CPUFreq; import com.grarak.kerneladiutor.utils.root.RootUtils; /** * Created by willi on 21.07.16. */ public class Tasker extends BroadcastReceiver { private static final String TAG = Tasker.class.getSimpleName(); public static final String EXTRA_BUNDLE = "com.twofortyfouram.locale.intent.extra.BUNDLE"; public static final String EXTRA_STRING_BLURB = "com.twofortyfouram.locale.intent.extra.BLURB"; public static final String ACTION_FIRE_SETTING = "com.twofortyfouram.locale.intent.action.FIRE_SETTING"; public static final String BUNDLE_EXTRA_STRING_MESSAGE = "com.grarak.kerneladiutor.tasker.extra.STRING_MESSAGE"; public static final String BUNDLE_EXTRA_INT_VERSION_CODE = "com.grarak.kerneladiutor.tasker.extra.INT_VERSION_CODE"; public static final String DIVIDER = "wkefnewnfewp"; @Override public void onReceive(Context context, Intent intent) { if (!ACTION_FIRE_SETTING.equals(intent.getAction())) { return; } final Bundle bundle = intent.getBundleExtra(EXTRA_BUNDLE); if (isBundleValid(bundle)) { String commands = bundle.getString(BUNDLE_EXTRA_STRING_MESSAGE); if (commands != null) { String[] cs = commands.split(DIVIDER); Log.i(TAG + ": " + getClass().getSimpleName(), "Applying " + cs[0]); if (Prefs.getBoolean("showtaskertoast", true, context)) { Utils.toast(context.getString(R.string.applying_profile, cs[0]), context, Toast.LENGTH_LONG); } if (cs.length > 1) { RootUtils.SU su = new RootUtils.SU(); for (int i = 1; i < cs.length; i++) { if (cs[i].isEmpty()) { continue; } synchronized (this) { CPUFreq.ApplyCpu applyCpu; if (cs[i].startsWith("#") && (applyCpu = new CPUFreq.ApplyCpu(cs[i].substring(1))).toString() != null) { for (String applyCpuCommand : Service.getApplyCpu(applyCpu, su)) { Log.i(TAG + ": " + getClass().getSimpleName(), "Run: " + applyCpuCommand); su.runCommand(applyCpuCommand); } } else { Log.i(TAG + ": " + getClass().getSimpleName(), "Run: " + cs[i]); su.runCommand(cs[i]); } } } su.close(); } } } } private boolean isBundleValid(Bundle bundle) { return null != bundle && !(!bundle.containsKey(BUNDLE_EXTRA_STRING_MESSAGE) || !bundle.containsKey(BUNDLE_EXTRA_INT_VERSION_CODE)) && !(2 != bundle.keySet().size() || "".equals(bundle.getString(BUNDLE_EXTRA_STRING_MESSAGE))) && bundle.getInt(BUNDLE_EXTRA_INT_VERSION_CODE, 0) == bundle.getInt(BUNDLE_EXTRA_INT_VERSION_CODE, 1); } }