EX10_01.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:5k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex10_01; 
  2. /* import相关class */
  3. import android.app.Activity; 
  4. import android.app.AlertDialog;
  5. import android.content.Context; 
  6. import android.content.DialogInterface;
  7. import android.content.DialogInterface.OnClickListener;
  8. import android.os.Bundle; 
  9. import android.os.PowerManager; 
  10. import android.os.ServiceManager;
  11. import android.provider.Settings;
  12. import android.view.Menu;
  13. import android.view.MenuItem; 
  14. import android.view.Window; 
  15. import android.view.WindowManager; 
  16. import android.widget.LinearLayout;
  17. import android.widget.Toast;
  18. import android.os.IHardwareService;
  19. public class EX10_01 extends Activity 
  20. {
  21.   private boolean ifLocked = false;
  22.   private PowerManager.WakeLock mWakeLock; 
  23.   private PowerManager mPowerManager; 
  24.   private LinearLayout mLinearLayout;
  25.   /* 存储程序启动前的手机亮度 */
  26.   private int mUserBrightness=0; 
  27.   /* 独一无二的menu选项identifier,用以识别事件 */
  28.   static final private int M_CHOOSE = Menu.FIRST; 
  29.   static final private int M_EXIT = Menu.FIRST+1;
  30.   /* 颜色菜单的颜色与文字数组 */
  31.   private int[] color={R.drawable.white,R.drawable.blue,
  32.                        R.drawable.pink,R.drawable.green,
  33.                        R.drawable.orange,R.drawable.yellow};
  34.   private int[] text={R.string.str_white,R.string.str_blue,
  35.                       R.string.str_pink,R.string.str_green,
  36.                       R.string.str_orange,R.string.str_yellow};
  37.   
  38.   @Override 
  39.   public void onCreate(Bundle savedInstanceState) 
  40.   { 
  41.     super.onCreate(savedInstanceState); 
  42.      
  43.     /* 必须在setContentView之前调用全屏幕显示 */
  44.     requestWindowFeature(Window.FEATURE_NO_TITLE);
  45.     getWindow().setFlags 
  46.     ( 
  47.       WindowManager.LayoutParams.FLAG_FULLSCREEN, 
  48.       WindowManager.LayoutParams.FLAG_FULLSCREEN 
  49.     );
  50.     
  51.     setContentView(R.layout.main);
  52.     /* 初始化mLinearLayout */
  53.     mLinearLayout=(LinearLayout)findViewById(R.id.myLinearLayout1);         
  54.     /* 取得PowerManager */
  55.     mPowerManager = (PowerManager)
  56.                      getSystemService(Context.POWER_SERVICE); 
  57.     /* 取得WakeLock */
  58.     mWakeLock = mPowerManager.newWakeLock 
  59.     ( 
  60.       PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "BackLight" 
  61.     );
  62.     
  63.     try
  64.     {
  65.       /* 取得程序启动时的手机设置亮度 */
  66.       mUserBrightness = Settings.System.getInt(getContentResolver(),
  67.                         Settings.System.SCREEN_BRIGHTNESS);
  68.     }
  69.     catch (Exception e)
  70.     {
  71.       Toast.makeText(EX10_01.this,""+e,Toast.LENGTH_LONG).show();
  72.       e.printStackTrace();
  73.     }
  74.   } 
  75.   @Override 
  76.   public boolean onCreateOptionsMenu(Menu menu) 
  77.   { 
  78.     /* menu群组ID */
  79.     int idGroup1 = 0;    
  80.     /* menuItemID */ 
  81.     int orderMenuItem1 = Menu.NONE; 
  82.     int orderMenuItem2 = Menu.NONE+1; 
  83.     /* 创建menu */ 
  84.     menu.add(idGroup1,M_CHOOSE,orderMenuItem1,R.string.str_title);
  85.     menu.add(idGroup1,M_EXIT,orderMenuItem2,R.string.str_exit); 
  86.     menu.setGroupCheckable(idGroup1, true, true);
  87.  
  88.     return super.onCreateOptionsMenu(menu); 
  89.   } 
  90.    
  91.   @Override 
  92.   public boolean onOptionsItemSelected(MenuItem item) 
  93.   {  
  94.     switch(item.getItemId()) 
  95.     { 
  96.       case (M_CHOOSE):
  97.         /* 跳出选择背光颜色的AlertDialog */
  98.         new AlertDialog.Builder(EX10_01.this)
  99.           .setTitle(getResources().getString(R.string.str_title))
  100.           .setAdapter(new MyAdapter(this,color,text),listener1)
  101.           .setPositiveButton("取消",
  102.               new DialogInterface.OnClickListener()
  103.           {
  104.             public void onClick(DialogInterface dialog, int which)
  105.             {
  106.             }
  107.           })
  108.           .show();
  109.         break; 
  110.       case (M_EXIT): 
  111.         /* 离开程序 */
  112.         this.finish(); 
  113.         break; 
  114.     }
  115.     return super.onOptionsItemSelected(item); 
  116.   }
  117.   
  118.   /* 选择背光颜色的AlertDialog的OnClickListener */
  119.   OnClickListener listener1=new DialogInterface.OnClickListener()
  120.   {
  121.     public void onClick(DialogInterface dialog,int which)
  122.     {
  123.       /* 更改背景颜色 */
  124.       mLinearLayout.setBackgroundResource(color[which]);
  125.       /* 以Toast显示设置的颜色 */
  126.       Toast.makeText(EX10_01.this,
  127.                      getResources().getString(text[which]),
  128.                      Toast.LENGTH_LONG).show();
  129.     }
  130.   };
  131.    
  132.   @Override 
  133.   protected void onResume() 
  134.   {  
  135.     /* onResume()时调用wakeLock() */
  136.     wakeLock(); 
  137.     super.onResume(); 
  138.   } 
  139.    
  140.   @Override 
  141.   protected void onPause() 
  142.   {
  143.     /* onPause()时调用wakeUnlock() */
  144.     wakeUnlock(); 
  145.     super.onPause();
  146.   } 
  147.   
  148.   /* 唤起WakeLock的方法 */
  149.   private void wakeLock()
  150.   { 
  151.     if (!ifLocked) 
  152.     { 
  153.       setBrightness(255);
  154.       ifLocked = true;
  155.       mWakeLock.acquire();
  156.     }
  157.     setBrightness(255);
  158.   } 
  159.   /* 释放WakeLock的方法 */
  160.   private void wakeUnlock() 
  161.   { 
  162.     if (ifLocked) 
  163.     { 
  164.       mWakeLock.release(); 
  165.       ifLocked = false;
  166.       setBrightness(mUserBrightness);
  167.     }
  168.   }
  169.   
  170.   /* 设置手机亮度的方法 */
  171.   private void setBrightness(int brightness)
  172.   {
  173.     /* 取得IHardwareService */
  174.     IHardwareService hardware = IHardwareService.Stub.asInterface(  
  175.         ServiceManager.getService("hardware"));  
  176.     if (hardware != null)
  177.     {  
  178.       try
  179.       {
  180.         /* 设置亮度 */
  181.         Settings.System.putInt(getContentResolver(),
  182.             Settings.System.SCREEN_BRIGHTNESS,
  183.             brightness);
  184.         hardware.setScreenBacklight(brightness);
  185.       }
  186.       catch (Exception e)
  187.       {
  188.         Toast.makeText(EX10_01.this,""+e,Toast.LENGTH_LONG).show(); 
  189.         e.printStackTrace();
  190.       }  
  191.     }
  192.   }
  193. }