Home | History | Annotate | Download | only in util
      1 /*
      2  * Copyright (C) 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.tv.settings.util;
     18 
     19 import android.content.Context;
     20 import android.content.res.Resources;
     21 import android.os.AsyncTask;
     22 import android.os.IBinder;
     23 import android.os.Parcel;
     24 import android.os.RemoteException;
     25 import android.os.ServiceManager;
     26 import android.os.SystemProperties;
     27 import android.util.Log;
     28 
     29 import com.android.tv.settings.R;
     30 
     31 public class SettingsHelper {
     32 
     33     private static final String TAG = "SettingsHelper";
     34     private static final boolean DEBUG = false;
     35 
     36     private final Resources mResources;
     37 
     38     public SettingsHelper(Context context) {
     39         mResources = context.getResources();
     40     }
     41 
     42     public static void setSystemProperties(String setting, String value) {
     43         SystemProperties.set(setting, value);
     44         pokeSystemProperties();
     45     }
     46 
     47     public static void setSystemProperties(String setting, boolean value) {
     48         setSystemProperties(setting, Boolean.toString(value));
     49     }
     50 
     51     public static String getSystemProperties(String setting) {
     52         return SystemProperties.get(setting);
     53     }
     54 
     55     private static void pokeSystemProperties() {
     56         (new SystemPropPoker()).execute();
     57     }
     58 
     59     static class SystemPropPoker extends AsyncTask<Void, Void, Void> {
     60         @Override
     61         protected Void doInBackground(Void... params) {
     62             String[] services;
     63             try {
     64                 services = ServiceManager.listServices();
     65             } catch (RemoteException e) {
     66                 return null;
     67             }
     68             for (String service : services) {
     69                 IBinder obj = ServiceManager.checkService(service);
     70                 if (obj != null) {
     71                     Parcel data = Parcel.obtain();
     72                     try {
     73                         obj.transact(IBinder.SYSPROPS_TRANSACTION, data, null, 0);
     74                     } catch (RemoteException e) {
     75                         if (DEBUG) {
     76                             Log.d(TAG, "SystemPropPoker", e);
     77                         }
     78                     } catch (Exception e) {
     79                         Log.i(TAG, "Somone wrote a bad service '" + service
     80                                 + "' that doesn't like to be poked: " + e);
     81                     }
     82                     data.recycle();
     83                 }
     84             }
     85             return null;
     86         }
     87     }
     88 
     89     public String getStatusStringFromBoolean(boolean status) {
     90         int descResId = status ? R.string.action_on_description : R.string.action_off_description;
     91         return mResources.getString(descResId);
     92     }
     93 }
     94