package com.joyplus.joylink;
import android.app.ActionBar;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.TextView;
import com.wind.s1mobile.common.S1Constant;
public class ControlSetting extends PreferenceActivity implements
View.OnClickListener {
// implements OnSharedPreferenceChangeListener{
private App app;
private CheckBoxPreference sensorMode;
private SeekBarPreference sensorSpeed;
private ListPreference changeSensor;
public int mRate = 180000;
public int mMax = 200000;
private SensorManager mSensorManager;
private WakeLock mWakeLock;
ControlGSensor mControlGSensor;
private Intent intent;
private int seneorMode;
public Display mDisplay;
private ImageButton mSlidingMenuButton;
private ImageButton mSlidingMenuButtonL;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getActionBar().setCustomView(R.layout.actionbar_layout_list);
TextView mTextView = (TextView) getActionBar().getCustomView()
.findViewById(R.id.actionBarTitle);
mTextView.setText("设置");
mSlidingMenuButtonL = (ImageButton) getActionBar().getCustomView()
.findViewById(R.id.slidingMenuButtonL);
mSlidingMenuButtonL.setOnClickListener(this);
mSlidingMenuButton = (ImageButton) getActionBar().getCustomView()
.findViewById(R.id.slidingMenuButton1);
mSlidingMenuButton.setVisibility(View.INVISIBLE);
app = (App) getApplicationContext();
PreferenceManager manager = getPreferenceManager();
changeSensor = (ListPreference) manager.findPreference("changeSensor");
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// mControlGSensor = ControlGSensor.getInstance();
mControlGSensor = new ControlGSensor(app.getmRemote());
sensorMode = (CheckBoxPreference) findPreference("sensorMode");
sensorSpeed = (SeekBarPreference) findPreference("sensorSpeed");
sensorSpeed.setSettings(this);
intent = this.getIntent();
seneorMode = intent.getIntExtra(S1Constant.INTENT_EXTRA_CONFIGURATION,
-1);
mDisplay = ((WindowManager) getSystemService(WINDOW_SERVICE))
.getDefaultDisplay();
mControlGSensor.setConfig(mDisplay, seneorMode);
System.out.println("intent type :" + seneorMode);
if (seneorMode == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
sensorMode
.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
SensorMode();
return false;
}
});
changeSensor
.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
// seneorModeType =
// Integer.valueOf(newValue.toString());
mControlGSensor.setmSensorModeType(Integer
.valueOf(newValue.toString()));
// System.out.println("setOnPreferenceChangeListener:newValue:"+newValue);
// if (Integer.valueOf(newValue.toString()) == 0) {
// System.out.println("aa");
// ControlGSensor.mSensorMode =
// Configuration.ORIENTATION_LANDSCAPE;
// } else {
// System.out.println("bb");
// ControlGSensor.mSensorMode =
// Configuration.ORIENTATION_PORTRAIT;
// }
// ControlGSensor.mSensorMode = 3;
return true;
}
});
}
@Override
public void onClick(View view) {
if (view == mSlidingMenuButtonL)
finish();
}
private void SensorMode() {
String prefsName = getPackageName() + "_preferences"; // [PACKAGE_NAME]_preferences
SharedPreferences prefs = getSharedPreferences(prefsName,
Context.MODE_PRIVATE);
boolean sensorSettings = prefs.getBoolean("sensorMode", true);
if (sensorSettings) {
openSensorMode();
} else {
closeSensorMode();
}
}
public void openSensorMode() {
changeSensor.setEnabled(true);
sensorSpeed.setEnabled(true);
Log.i("jinlujiao", "SensorMode==openSensorMode:");
String prefsName = getPackageName() + "_preferences"; // [PACKAGE_NAME]_preferences
SharedPreferences prefs = getSharedPreferences(prefsName,
Context.MODE_PRIVATE);
int sensorSpeed = prefs.getInt("sensorSpeed", 180000);
mSensorManager.registerListener(mControlGSensor,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
S1Constant.SENSOR_SPEED_MAX - sensorSpeed);
PowerManager powerManager = (PowerManager) getBaseContext()
.getSystemService(Context.POWER_SERVICE);
mWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK,
"SettingListActivity");
mWakeLock.acquire();
}
private void closeSensorMode() {
changeSensor.setEnabled(false);
sensorSpeed.setEnabled(false);
Log.i("jinlujiao", "SensorMode==closeSensorMode:");
mSensorManager.unregisterListener(mControlGSensor);
if (mWakeLock != null) {
mWakeLock.release();
mWakeLock = null;
}
}
@Override
protected void onDestroy() {
// closeSensorMode();
// mSensorManager.unregisterListener(this);
super.onDestroy();
}
public void onSensorSpeedChange(int rate) {
mSensorManager.unregisterListener(mControlGSensor);
Log.i("jinlujiao", "newValue:" + rate);
mSensorManager.registerListener(mControlGSensor,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
rate);
}
@Override
protected void onResume() {
Log.i("jinlujiao", "SensorMode==onResume:");
String prefsName = getPackageName() + "_preferences"; // [PACKAGE_NAME]_preferences
SharedPreferences prefs = getSharedPreferences(prefsName,
Context.MODE_PRIVATE);
boolean sensorSettings = prefs.getBoolean("sensorMode", true);
if (sensorSettings) {
openSensorMode();
} else {
closeSensorMode();
}
// int sensorValue=prefs.getInt("sensor", 0);
// if(sensorValue==0){
// sensor.setEntries(0);
// }else{
// sensor.setEntries(1);
// }
// Log.i("jinlujiao", "newValue"+newValue);
super.onResume();
}
}