20140425161535_747  

import android.app.Activity;

import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.BatteryManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
public class BatteryActivity extends Activity {
    /** Called when the activity is first created. */
     
    private IntentFilter   mIntentFilter;
    private TextView mHealth;
    private TextView mLevel;
    private TextView mVoltage;
    private TextView mTemperature;
    private ImageView image;
    private ToggleButton btn_save,btn_sleep;
    private final static String ShareState="ModeState";
    private SharedPreferences sp ;
    private boolean mode_flag=false;
    private WifiManager mWifiManager;
    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()
    {
 
 
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_BATTERY_CHANGED))
            {
                int scale = intent.getIntExtra("scale"100);
                int level=intent.getIntExtra("level"0);
 
 
                if(level<10)
                {
                    image.setImageResource(R.drawable.battery_00);
                }else if(level>=10&&level<20)
                {
                    image.setImageResource(R.drawable.battery_10);
                }
                else if(level>=20&&level<30)
                {
                    image.setImageResource(R.drawable.battery_20);
                }
                else if(level>=30&&level<40)
                {
                    image.setImageResource(R.drawable.battery_30);
                }
                else if(level>=40&&level<50)
                {
                    image.setImageResource(R.drawable.battery_40);
                }
                else if(level>=50&&level<60)
                {
                    image.setImageResource(R.drawable.battery_50);
                }
                else if(level>=60&&level<70)
                {
                    image.setImageResource(R.drawable.battery_60);
                }
                else if(level>=70&&level<80)
                {
                    image.setImageResource(R.drawable.battery_70);
                }
                else if(level>=80&&level<90)
                {
                    image.setImageResource(R.drawable.battery_80);
                }
                else if(level>=90&&level<100)
                {
                    image.setImageResource(R.drawable.battery_90);
                }
                else
                    image.setImageResource(R.drawable.battery_100);
    
                mLevel.setText("剩余电量:" + String.valueOf(level * 100 / scale) + "%");
                mVoltage.setText("电池电压:" + intent.getIntExtra("voltage"0) +"mV");
                mTemperature.setText("电池温度 :" +tenthsToFixedString((intent.getIntExtra("temperature"0))));
                int health = intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN);
                String healthString;
                if (health == BatteryManager.BATTERY_HEALTH_GOOD) {
                    healthString = "非常健康";
                else if (health == BatteryManager.BATTERY_HEALTH_OVERHEAT) {
                    healthString = "BATTERY_HEALTH_OVERHEAT";
                else if (health == BatteryManager.BATTERY_HEALTH_DEAD) {
                    healthString = "BATTERY_HEALTH_DEAD";
                else if (health == BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE) {
                    healthString = "BATTERY_HEALTH_OVER_VOLTAGE";
                else if (health == BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE) {
                    healthString = "BATTERY_HEALTH_UNSPECIFIED_FAILURE";
                }  else {
                    healthString = "不清楚";
                }
                 
                mHealth.setText("健康状态 :"+healthString);
            }
        }
         
    };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.battery);
         
        mIntentFilter = new IntentFilter();
        mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
        sp= getSharedPreferences(ShareState, MODE_PRIVATE);
        mWifiManager=(WifiManager) this.getSystemService(Context.WIFI_SERVICE);
              
        mLevel=(TextView) findViewById(R.id.level);
        mHealth=(TextView) findViewById(R.id.health);
        mTemperature=(TextView) findViewById(R.id.temperature);
        mVoltage=(TextView) findViewById(R.id.voltage);
        image=(ImageView) findViewById(R.id.pleve);
        btn_save=(ToggleButton) findViewById(R.id.save);
        btn_sleep=(ToggleButton) findViewById(R.id.sleep);
         
        mode_flag=sp.getBoolean("Save_KEY"true);
        if(mode_flag)
            btn_save.setChecked(true);
        else
            btn_save.setChecked(false);
        mode_flag=sp.getBoolean("Sleep_KEY"true);
        if(mode_flag)
            btn_sleep.setChecked(true);
        else
            btn_sleep.setChecked(false);
        registerReceiver(mIntentReceiver, mIntentFilter);  
         
        btn_save.setOnClickListener(new OnClickListener() {
             
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //存入数据
                Editor editor = sp.edit();                            
                if(btn_save.isChecked())
                {
                    Toast.makeText(BatteryActivity.this"touch in"1000).show();
                    stopAutoBrightness(BatteryActivity.this);
                    setBrightness(BatteryActivity.this65);
                    if(mWifiManager.isWifiEnabled())
                        mWifiManager.setWifiEnabled(false);
 
 
                      editor.putBoolean("Save_KEY"true);
                      editor.commit();
                     
                }
                else
                {
                    Toast.makeText(BatteryActivity.this"touch out"1000).show();
                    setBrightness(BatteryActivity.this125);
                    mWifiManager.setWifiEnabled(true);
                    startAutoBrightness(BatteryActivity.this) ;
                    editor.putBoolean("Save_KEY"false);
                    editor.commit();
                }
            }
        });
        btn_sleep.setOnClickListener(new OnClickListener() {
             
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //存入数据
                Editor editor = sp.edit();    
                 
                if(btn_sleep.isChecked())
                {
                    setAirplaneModeOn(BatteryActivity.this,true);
                    editor.putBoolean("Sleep_KEY"true);
                    editor.commit();
                }
                else
                {
                    setAirplaneModeOn(BatteryActivity.this,false);
                    editor.putBoolean("Sleep_KEY"false);
                    editor.commit();
                }
                 
                if(getAirplaneMode(BatteryActivity.this))
                {
                    Toast.makeText(BatteryActivity.this"AirMode"1000).show();
                }
                else
                    Toast.makeText(BatteryActivity.this"NotAirMode"1000).show(); 
            }
        });
    }
     
    private  String tenthsToFixedString(int x) {
        int tens = x / 10;
        return Integer.toString(tens) + "." + (x - 10 * tens);
    }
  /* 
    * 判断手机是否是飞行模式
    * @param context
    * @return
    */
    public static boolean getAirplaneMode(Context context){
    int isAirplaneMode = Settings.System.getInt(context.getContentResolver(),
    Settings.System.AIRPLANE_MODE_ON, 0) ;
    return (isAirplaneMode == 1)?true:false;
    }
     
    /**
    * 设置手机飞行模式
    * @param context
    * @param enabling true:设置为飞行模式 false:取消飞行模式
    */
    public static void setAirplaneModeOn(Context context,boolean enabling) {
    Settings.System.putInt(context.getContentResolver(),
    Settings.System.AIRPLANE_MODE_ON,enabling ? 1 : 0);
    Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
    intent.putExtra("state", enabling);
    context.sendBroadcast(intent);
    }
     
    //------------省电亮度调节-------------------
    public static void setBrightness(Activity activity, int brightness) {                    
        WindowManager.LayoutParams lp = activity.getWindow().getAttributes();    
       
         lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);   
     //    Log.d("lxy", "set  lp.screenBrightness == " + lp.screenBrightness); 
       
        activity.getWindow().setAttributes(lp); 
        //save
        ContentResolver resolver = activity.getContentResolver(); 
        saveBrightness( resolver, brightness);
         
        }     
    public static void saveBrightness(ContentResolver resolver, int brightness) {     
         
        Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");    
       
         android.provider.Settings.System.putInt(resolver, "screen_brightness", brightness);     
                           
         resolver.notifyChange(uri, null);
         }
    public static int getScreenBrightness(Activity activity) {    
         
        int nowBrightnessValue = 0;            
         ContentResolver resolver = activity.getContentResolver();            
         try{                
         nowBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);          
           }       
          catch(Exception e) {               
          e.printStackTrace();          
           }            
         return nowBrightnessValue; 
         }
     
    /** * 停止自动亮度调节 */ 
     
    public static void stopAutoBrightness(Activity activity) {    
   
     Settings.System.putInt(activity.getContentResolver(),           
   
      Settings.System.SCREEN_BRIGHTNESS_MODE,            
   
     Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); 
     
         /** * 开启亮度自动调节 *         
         * @param activity */                        
    public static void startAutoBrightness(Activity activity) {    
        
          Settings.System.putInt(activity.getContentResolver(),                         
          Settings.System.SCREEN_BRIGHTNESS_MODE,                          
         Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);        
         }
     
    /** * 判断是否开启了自动亮度调节 */ 
     
    public static boolean isAutoBrightness(ContentResolver aContentResolver) {       
    boolean automicBrightness = false;       
    try{           
    automicBrightness = Settings.System.getInt(aContentResolver,                 
   
    Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;      
     }   
    catch(SettingNotFoundException e)    
   {         
     e.printStackTrace();     
      }       
    return automicBrightness; 
    }
}
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()