应用背景:
本来平台是一直使用手机管理,做的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;
简单对这几个类进行了简要说明,后续在应用中再一点设计和表述
相关推荐
6.6 小结 第7章 地图、地理编码和基于位置的服务 7.1 使用基于位置的服务 7.2 使用Test Proyider构建模拟器 7.2.1 更新模拟位置提供器中的位置 7.2.2 创建一个应用程序来管理Test Location Provider 7.3 选择——个...
第9章分析了Vold和Rild,其中Vold负责Android平台中外部存储设备的管理,而Rild负责与射频通信有关的工作。本章的拓展思考部分介绍了嵌入式系统中与存储有关的知识,还探讨了 Rild和Phone设计优化方面的问题。 ...
◆与电话和网络硬件相关的所有内容,如电话api、sms和网络管理等 ◆高级开发主题,包括安全、ipc以及一些高级图形和用户界面技术 读者对象 本书面向希望在android手机平台上创建应用程序的所有人员。不管是...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
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 修改现有的...
|--屏幕相关之Display类获取屏幕尺寸和分辨率 |--屏幕适配之ScrollView |--屏幕适配之像素dp和px之间转换 |--工具类之Log的封装类 |--工具类之不同log打印的封装 |--工具类之开启新的Activity |--布局加载器的获取 |...
随着Android手机种类的不断丰富,各种应用软件也开始遍地开花,Android用起来也越来越爽了……不过有很多软件都是老外编的,虽然英文界面也能用,但是毕竟不如咱们中文看着舒服,特别是一些功能相对比较复杂的软件,...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后...