package com.naman14.stools; import android.app.Application; import android.content.SharedPreferences; import android.hardware.Sensor; import android.hardware.SensorManager; import android.util.Log; import com.naman14.stools.cpu.CpuStateMonitor; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Vector; /** * Created by naman on 30/01/15. */ public class SToolsApp extends Application { private static final String KERNEL_VERSION_PATH = "/proc/version"; private static final String TAG = "CpuSpyApp"; private List<Sensor> mSensorList= new Vector<Sensor>(); private SensorManager mSensorManager; private static final String PREF_NAME = "CpuSpyPreferences"; private static final String PREF_OFFSETS = "offsets"; private CpuStateMonitor _monitor = new CpuStateMonitor(); private String _kernelVersion = ""; public void setSensorManager(SensorManager mgr){ this.mSensorManager = mgr; } public SensorManager getSensorManager(){ return this.mSensorManager; } public void setSensorList(List<Sensor> list){ this.mSensorList.clear(); this.mSensorList.addAll(list); } public List<Sensor> getSensorList(){ return this.mSensorList; } public Sensor getSensor(int index){ if(index <0 || index >= mSensorList.size()) return null; else return mSensorList.get(index); } @Override public void onCreate(){ loadOffsets(); updateKernelVersion(); } public String getKernelVersion() { return _kernelVersion; } public CpuStateMonitor getCpuStateMonitor() { return _monitor; } public void loadOffsets() { SharedPreferences settings = getSharedPreferences( PREF_NAME, MODE_PRIVATE); String prefs = settings.getString (PREF_OFFSETS, ""); if (prefs == null || prefs.length() < 1) { return; } Map<Integer, Long> offsets = new HashMap<Integer, Long>(); String[] sOffsets = prefs.split(","); for (String offset : sOffsets) { String[] parts = offset.split(" "); offsets.put (Integer.parseInt(parts[0]), Long.parseLong(parts[1])); } _monitor.setOffsets(offsets); } public void saveOffsets() { SharedPreferences settings = getSharedPreferences( PREF_NAME, MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); String str = ""; for (Map.Entry<Integer, Long> entry : _monitor.getOffsets().entrySet()) { str += entry.getKey() + " " + entry.getValue() + ","; } editor.putString(PREF_OFFSETS, str); editor.commit(); } public String updateKernelVersion() { try { InputStream is = new FileInputStream(KERNEL_VERSION_PATH); InputStreamReader ir = new InputStreamReader(is); BufferedReader br = new BufferedReader(ir); String line; while ((line = br.readLine())!= null ) { _kernelVersion = line; } is.close(); } catch (IOException e) { Log.e(TAG, "Problem reading kernel version file"); return ""; } return _kernelVersion; } }