`
java_suddy
  • 浏览: 31697 次
  • 性别: 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源码——SqliteManager 源码.zip

    SQLiteManager是Android中用于管理SQLite数据库的工具类,它提供了创建、查询、更新和删除数据库表等操作的接口。这份"Android源码——SqliteManager 源码.zip"包含了一些关于SqliteManager的源代码分析以及可能的...

    android 应用 源代码——文件下载

    3. **下载管理器(DownloadManager)**: - Android系统提供了内置的DownloadManager服务,它可以处理后台下载任务,包括断点续传、网络状况检测和通知用户等功能。 - 使用DownloadManager时,需要创建一个Request...

    安卓Android源码——android打电话源码.zip

    7. **CallManager**: 这个类在系统层面管理所有的通话活动,包括管理多个电话卡(如果设备支持),处理来电和去电,以及通话转移等。 8. **AOSP(Android Open Source Project)**: Android源码是开源的,开发者...

    安卓Android源码——SqliteManager源码.zip

    SQLiteManager是Android系统中用于管理SQLite数据库的一个重要工具,其源码对于理解数据库操作、数据存储以及Android系统的内部工作原理具有极大的价值。本文将对Android SqliteManager的源码进行深入剖析,以揭示其...

    Android学习之路——7.Service

    本篇文章将深入探讨“Android学习之路——7.Service”,分析Service的基本概念、使用方式以及常见应用场景,同时结合源码解析Service的工作原理,并提供一个实战Demo——Service_Demo。 一、Service基本概念 ...

    深入浅出Android——Android开发经典教材

    - **模拟器类型**:通过AVD Manager可以查看和管理不同的Android虚拟设备(AVD)。这里可以创建不同版本、分辨率和API级别的模拟器以满足测试需求。 - **模拟器管理**:包括创建、删除模拟器等操作。通过命令行或者...

    安卓Android源码——android打电话源码.rar

    5. **电信Manager**:Android提供了TelephonyManager类,用于获取有关手机的详细信息,如SIM卡状态、网络类型等。此外,它还提供了挂断电话的接口,但需要特定的权限。 6. **Activity生命周期**:在拨打电话的过程...

    Android项目实战——手机安全卫士开发案例解析word版

    这涉及到Android的Activity Manager和MemoryInfo类。 4. **流量监控**:记录并显示每个应用的网络流量使用情况,可能需要监听网络状态变化,使用BroadcastReceiver和TrafficStats类。 5. **启动项管理**:防止不必...

    安卓Android源码——游戏源码——忍者快跑.zip

    在安卓平台上,开发一款游戏需要深入理解Android操作系统的工作原理、Java编程语言以及Android SDK的相关工具。"安卓Android源码——游戏源码——忍者快跑.zip"是一个包含了一个具体游戏项目源码的压缩包,我们可以...

    安卓Android源码——Spaceassault.zip

    《安卓Android源码深度解析——以Spaceassault项目为例》 在移动开发领域,安卓Android系统因其开源特性,吸引了无数开发者进行二次开发和创新。本文将深入探讨Android源码,以"Spaceassault"项目为例,揭示其背后...

    安卓Android源码——软件管理器.zip

    本资源“安卓Android源码——软件管理器.zip”包含的可能是一份关于安卓软件管理器的源代码实现,这为我们深入理解Android系统的内部工作原理提供了宝贵的资料。 软件管理器,通常被称为应用管理器或App Manager,...

    安卓Android源码——任务管理器源码.zip

    这份“安卓Android源码——任务管理器源码.zip”包含的文件将帮助我们深入理解Android系统内部的任务调度机制。我们将探讨以下几个关键知识点: 1. **任务与活动(Tasks and Activities)**: 在Android中,任务是...

    Android游戏源码——忍者快跑.zip

    Android提供了Asset Manager和Resources类来处理这些资源,源码中会有对应的加载和释放代码,确保游戏运行流畅,不占用过多内存。 8. **Android生命周期管理**:游戏的Activity需要遵循Android的生命周期,如暂停、...

    Android源码——生活手册源码.zip

    《Android源码——生活手册源码》是一份深入解析Android操作系统源码的宝贵资源,它包含了一系列关于Android系统内部工作原理、组件结构以及关键功能实现的详细代码。这份压缩包中的源码是开发者理解Android系统运行...

    Android项目之——漂亮的平台书架.zip

    《Android项目之——漂亮的平台书架》是一款基于Android平台的应用程序,主要展示了如何在Java编程环境下构建一个美观的书籍展示界面。此项目的核心是通过Android SDK进行开发,它包括了多个关键组件和功能,让我们...

    安卓Android源码——WindowJitter.zip

    【标题】"安卓Android源码——WindowJitter.zip" 提供的是一个关于Android系统源码的分析案例,重点是Window Jitter现象。Window Jitter是指在Android应用中,窗口渲染时可能出现的延迟或不稳定,这可能导致用户界面...

    Android源码——快捷查询源码.7z

    【Android源码——快捷查询源码.7z】是一个压缩包文件,主要包含与Android操作系统源码相关的快捷查询工具或方法。从文件名来看,我们可以推测这个压缩包可能提供了某种方式来快速查找和理解Android系统的源代码。...

Global site tag (gtag.js) - Google Analytics