package com.eolwral.osmonitor.preferences; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import com.eolwral.osmonitor.JNIInterface; import android.content.Context; import android.preference.DialogPreference; import android.util.AttributeSet; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Spinner; public class SetCPUGovPreference extends DialogPreference { JNIInterface JNILibrary = JNIInterface.getInstance(); Spinner GovSpinner = null; @Override protected View onCreateDialogView() { if(GetCPUGovList() == null) return new View(this.getContext()); this.GovSpinner = new Spinner(this.getContext()); ArrayAdapter<String> GovAdapter = new ArrayAdapter<String>(this.getContext(), android.R.layout.simple_spinner_item, GetCPUGovList()); GovAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); GovSpinner.setAdapter(GovAdapter); if(getPersistedString("None").equals("None")) { for (int CurGov = 0; CurGov < GovAdapter.getCount(); CurGov++) { if(GovAdapter.getItem(CurGov).trim().equals(JNILibrary.GetProcessorScalGov().trim())) GovSpinner.setSelection(CurGov); } } else { for (int CurGov = 0; CurGov < GovAdapter.getCount(); CurGov++) { if(GovAdapter.getItem(CurGov).trim().equals(getPersistedString(""))) GovSpinner.setSelection(CurGov); } } return this.GovSpinner; } private String [] GetCPUGovList() { String [] GovList = null; try { byte[] RawData = new byte[256]; File CPUGov = new File("/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"); BufferedInputStream bInputStream = new BufferedInputStream(new FileInputStream(CPUGov)); bInputStream.read(RawData); String CPUGovList = (new String(RawData)).trim(); bInputStream.close(); GovList = CPUGovList.split(" "); if(GovList.length == 0) GovList = null; } catch (Exception e) { GovList = null; } return GovList; } @Override protected void onDialogClosed(boolean positiveResult) { if(positiveResult){ persistString(GovSpinner.getSelectedItem().toString()); } super.onDialogClosed(positiveResult); } public SetCPUGovPreference(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public SetCPUGovPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } }