`
java_suddy
  • 浏览: 31149 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

android 相关管理类——各种****Manager

阅读更多

应用背景:     

       本来平台是一直使用手机管理,做的Athrun手机测试平台,随着手机日益增多,需要开发个手机应用来辅助平台应用。将开发的一些过程积累起来以供大家学习。

 

想介绍几个涉及或者用到的Manager:

1、PowerManager:主要是用来控制电源状态,设置屏幕状态,和电池待机状态

           PowerManager  pm = ((PowerManager)getSystemService(POWER_SERVICE));

           这里我需要保持屏幕长期唤醒,不被锁屏,所以我调用WakeLock。

           WakeLock wake = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK |                          

                                                                          Powe r Manager.ON_AFTER_RELEASE, **Activity.class );

           wake.acquire();//请求执行

           ps:一些相关的flag

           PARTIAL_WAKE_LOCK         : 保持CPU 运转,屏幕和键盘灯有可能是关闭的。

           SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯

           SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯

           FULL_WAKE_LOCK              : 保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度

 

      权限获得:

<uses-permission android:name="android.permission.WAKE_LOCK" /

 

2、屏幕亮度:

    我的需求由于实验室机器全天24小时运转,所以我们需要保持屏幕亮度最低,而不是每次都是手动去调节每个手机,所以我的需求就是安装启动本小应用就要将屏幕亮度跳到最低。

    起初我调用window,设置window里面screenBrightness参数的值,但却短暂设置屏幕亮度的亮度,在某个activity下面才可以生效。

          

/**
     * 设置屏幕亮度
     */
    private void setWindowScreen(){
    	Window localWindow = getWindow();  
        WindowManager.LayoutParams localLayoutParams = localWindow.getAttributes();  
        float f = 5 / 255.0F;  
        localLayoutParams.screenBrightness = f;  
        localWindow.setAttributes(localLayoutParams); 
    }

     需要获得权限:

  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

 

    不过在调用前要先把其设定为手动,看下面代码,进行设置调节,也很容易查看就不多解释了

     

/** 
* 获得当前屏幕亮度的模式     
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 
* SCREEN_BRIGHTNESS_MODE_MANUAL=0  为手动调节屏幕亮度 
*/  
private int getScreenMode(){
   int screenMode = 0;
   try{
   screenMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
   }catch(Exception e){
       e.printStackTrace();
  }
     return screenMode;
 }
	 	
	 /** 
	   * 设置当前屏幕亮度的模式     
	   * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 
	   * SCREEN_BRIGHTNESS_MODE_MANUAL=0  为手动调节屏幕亮度 
	   */  
	 private void setScreenMode(int paramInt){  
	    try{  
	        Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, paramInt);  
	     }catch (Exception localException){  
	        localException.printStackTrace();  
	     }  
	 } 

//相关权限
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

       结果发现只有在当前activity下生效,当这个小应用关掉后屏幕又恢复了,所以我就重新查找,需要改动系统文件下面的相关数值,调用Uri(类似链接)方法

 /** 
	  * 保存屏幕亮度最低
	  * save light state
	  **/
	 public  void saveBrightness(ContentResolver resolver) {
	    Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");  
	    android.provider.Settings.System.putInt(resolver, "screen_brightness", 0);
	    resolver.notifyChange(uri, null);
	 }

  

3、WifiManager:毋庸置疑,就是无限管理相关的,类似获得wifi链接名字,判断是否链接,开关等一些和无线相关

WifiManager manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);

    获得wifimanager后调用

WifiInfo info = manager.getConnectionInfo();

    wifiinfo里面包含很多东西,无限的IP,名字,ISSID,物理地址等很多信息,这里我需要获得查看是否链接实验室的无线获得无线的名字,名字是SSID。

String ssId = info.getSSID();

    还有控制wifi开关

manager.setWifiEnabled(true);//打开wifi
manager.setWifiEnabled(false);// 关闭wifi  

    获得相关权限有:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

 

4、ConnectivityManager:主要管理网络连接相关操作, 

 

ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetWorkInfo netinfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)

   NetWorkInfo里面就包括网络连接的信息,包括连接状态,网络是否可用等相关操作

  

int code = netinfo.getState();
if (wifiState == State.CONNECTED || wifiState == State.CONNECTING) 			
      return 200;// 连接成功	
else 		
      return 500; // 连接失败

    获得权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

5、ActivityManager:是与系统中所有运行着的Activity交互提供了接口,主要的接口围绕着运行中的进程信息,任务信息,服务信息等。

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);

     通过activityManager可以获得很多相关信息:通过名字就可以看出相关信息

MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);
am.getRunningAppProcesses();
am.getRunningServices();
am.getDeviceConfigurationInfo();
am.killBackgroundProcessed(PackageName);
am.restartPackage(PackageName);
……

 

6、TelephonyManager主要是设计到和手机相关的操作,获得手机一些相关信息,硬件信息,产地等很多信息

 

    	TelephonyManager telephone = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    	String imei = telephone.getDeviceId();
    	String model = Build.MODEL;
        String manufactrer = Build.MANUFACTURER;
        String id = Build.ID;

 

 

    简单对这几个类进行了简要说明,后续在应用中再一点设计和表述

1
0
分享到:
评论

相关推荐

    《Android高级编程》

    6.6 小结 第7章 地图、地理编码和基于位置的服务 7.1 使用基于位置的服务 7.2 使用Test Proyider构建模拟器 7.2.1 更新模拟位置提供器中的位置 7.2.2 创建一个应用程序来管理Test Location Provider 7.3 选择——个...

    深入理解Android:卷I--详细书签版

     第9章分析了Vold和Rild,其中Vold负责Android平台中外部存储设备的管理,而Rild负责与射频通信有关的工作。本章的拓展思考部分介绍了嵌入式系统中与存储有关的知识,还探讨了 Rild和Phone设计优化方面的问题。 ...

    Android高级编程--源代码

     ◆与电话和网络硬件相关的所有内容,如电话api、sms和网络管理等  ◆高级开发主题,包括安全、ipc以及一些高级图形和用户界面技术  读者对象  本书面向希望在android手机平台上创建应用程序的所有人员。不管是...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    Android高级编程.pdf

    3.7.3 Android活动类 3.8 小结 第4章 创建用户界面 4.1 Android UI基本设计 4.2 View简介 4.2.1 使用View创建Activity(活动)用户界面 4.2.2 Android Widget工具箱 4.3 布局简介 4.4 创建新的View 4.4.1 修改现有的...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--屏幕相关之Display类获取屏幕尺寸和分辨率 |--屏幕适配之ScrollView |--屏幕适配之像素dp和px之间转换 |--工具类之Log的封装类 |--工具类之不同log打印的封装 |--工具类之开启新的Activity |--布局加载器的获取 |...

    APKTool批处理版l

    随着Android手机种类的不断丰富,各种应用软件也开始遍地开花,Android用起来也越来越爽了……不过有很多软件都是老外编的,虽然英文界面也能用,但是毕竟不如咱们中文看着舒服,特别是一些功能相对比较复杂的软件,...

    JAVA上百实例源码以及开源项目

    还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏  Java编写的网页版魔方游戏,编译后...

    JAVA上百实例源码以及开源项目源代码

    还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏  Java编写的网页版魔方游戏,编译后...

Global site tag (gtag.js) - Google Analytics