这篇文章主要介绍了机器人开发之超实用的系统管理工具类,涉及机器人针对南达科他州卡,网络,uri,屏幕,网络,软键盘,文本,进程等相关操作技巧,需要的朋友可以参考下
本文实例讲述了机器人开发之超实用的系统管理工具类。分享给大家供大家参考,具体如下:
这是一个系统管理工具类,管理存储卡卡,判断网络,uri转换,获取屏幕宽高,获取网络类型,隐藏软键盘,复制文本到粘贴板,获取状态栏高度,获取当前进程等。
上代码
导入Java。io。文件;
导入安卓。注释。抑制掉毛;
导入安卓。注释。目标API
导入安卓。app。活动;
导入安卓。app。活动经理;
导入安卓。内容。剪辑数据;
导入安卓。内容。语境;
导入安卓。数据库。光标;
导入安卓。网。连接管理器;
导入安卓。网。网络信息;
导入安卓。网。uri
导入安卓。OS。建造;
导入安卓。OS。环境;
导入安卓。OS。statfs
导入安卓。提供商。mediastore
导入安卓。文字。文本实用程序;
导入安卓。util。显示指标;
导入安卓。查看。查看;
导入安卓。查看。输入法。输入法管理器;
@SuppressWarnings('deprecation ')
公共类系统工具{
public static final int net type _ WIFI=0x 01;
public static final int NETTYPE _ cm WAP=0x 02;
public static final int NETTYPE _ CMNET=0x 03;
/** 判断是否手机插入存储卡卡*/
公共静态布尔sdcardunable(){
返回环境。getexternalsragestate().等于(环境。媒体_挂载);
}
/**
* 获取存储卡卡的总容量
*
* @返回
*/
@ suppress lint(' new API ')public static long getSdCardTotalSize(){
如果(!sdcardautable()){
返回0;
}
//取得南达科他州卡文件路径
文件路径=环境。getexternalsratedirectory();
StatFs SF=新的StatFs(路径。getpath());
//获取单个数据块的大小(字节)
长块大小=SF。getblocksizelong();
//获取所有数据块数
所有块的长度=SF。getblockcountlong();
//返回南达科他州卡大小
//返回allBlocks * blockSize//单位字节
//return(all blocks * blockSize)/1024;//单位千字节
return(所有块* blockSize)/1024/1024;//单位医学学士
}
/**
* 获取存储卡卡的可用容量
*
* @返回
*/
@ suppress lint(' NewApi ')public static long getSdCardFreeSize(){
如果(!sdcardautable()){
返回0;
}
//取得南达科他州卡文件路径
文件路径=环境。getexternalsratedirectory();
StatFs SF=新的StatFs(路径。getpath());
//获取单个数据块的大小(字节)
长块大小=SF。getblocksizelong();
//空闲的数据块的数量
长空闲块=SF。getavailableblockslong();
//返回南达科他州卡空闲大小
//返回freeBlocks * blockSize//单位字节
//return(free blocks * blockSize)/1024;//单位千字节
return(空闲块数* blockSize)/1024/1024;//单位医学学士
}
/**
* 判断是否联网或者漫游
*
* @param上下文
* @返回布尔值
*/
公共静态布尔哈希网(上下文上下文){
//获得连接管理器的管理器
网络信息信息=((连接管理器)上下文。getsystem服务(上下文.连通性_服务))。getActiveNetworkInfo();
if (info==null ||!info.isConnected()) {
返回错误的
}
if (info.isRoaming()) { //漫游判断
返回真实的
}
返回真实的
}
/** 获得文件*/的数据流
公共静态字符串getUrlPath(活动上下文,Uri uri) {
String[] proj={ MediaStore .图像。媒体。data };
光标cursor=上下文。托管查询(uri,proj,null,null,null);
int column _ index=游标。getcolumnindexorthrow(MediaStore .图像。媒体。数据);
光标。移到第一个();
返回光标。getstring(column _ index);
}
/** 从传入上呼吸道感染获得真实的路径*/
公共字符串getRealPathFromURI(活动上下文,Uri contentUri) {
//可以张贴图像
String[] proj={ MediaStore .图像。媒体。data };
光标cursor=上下文。托管查询(内容uri,proj,//哪些列
//返回
null,//其中子句;要返回哪些行(所有行)
null,//其中子句选择参数(无)
null);//排序依据子句(按名称升序)
int column _ index=游标。getcolumnindexorthrow(MediaStore .图像。媒体。数据);
光标。移到第一个();
返回光标。getstring(column _ index);
}
/** 获得屏幕的宽度*/
public static int getScreenWidth(活动上下文){
显示指标out metrics=新显示指标();
context.getWindowManager().getDefaultDisplay().获取度量(out metrics);
返回指标。宽度像素;
}
/** 获取屏幕的高度*/
public static int getScreenHeight(活动上下文){
显示指标out metrics=新显示指标();
context.getWindowManager().getDefaultDisplay().获取度量(out metrics);
返回超出指标。高度像素;
}
/** 获得网络的类型*/
public static int getNetworkType(Context Context){
int netType=0;
连接管理器连接管理器=(连接管理器)上下文。getsystem服务(上下文.连通性_服务);
网络信息网络信息=连接管理器。getactivenetworkinfo();
if (networkInfo==null) { //判断是否联网
返回网络类型;
}
int nType=网络信息。gettype();//获得
if (nType==ConnectivityManager .TYPE_MOBILE) {
字符串附加信息=网络信息。get extra info();
如果(!TextUtils.isEmpty(extraInfo)) {
if (extraInfo.toLowerCase().等于(' cmnet '){
netType=NETTYPE _ CMNET
}否则{
netType=NETTYPE _ CMWAP
}
}
} else if(n type==连接管理器.TYPE_WIFI) {
netType=NETTYPE _ WIFI
}
返回网络类型;
}
/** 隐藏软件盘*/
public static void hideSoftKeyborad(活动上下文){
最终视图v=context.getWindow().peekDecorView();//检索
//当前装饰
//查看
如果(v!=null v.getWindowToken()!=null) {
输入方法管理器IMM=(输入方法管理器)上下文//获得输入方法的经理。获取系统服务(上下文。输入_方法_服务);
IMM。hidesoftinputfromwindow(v . getwindowtoken(),0);
}
}
/**
* 复制文本到剪切板
*
* @param上下文
* @param text
*/
@TargetApi(值=11)
@SuppressLint({ 'NewApi ',' NewApi' })
公共静态无效文本(上下文语境,字符串文本){
如果(构建。版本SDK_INT=Build .版本代码。蜂巢){
安卓。内容。剪贴板管理器剪贴板管理器=(Android。内容。剪贴板管理器)上下文。获取系统服务(上下文CLIPBOARD _ SERVICE);
剪辑数据剪辑数据=剪辑数据新明文(“标签”,文本);
剪贴板管理器。setprimaryclip(剪辑数据);
}否则{
安卓。文字。剪贴板管理器剪贴板管理器=(Android。文字。剪贴板管理器)上下文。getsystem服务(上下文.CLIPBOARD _ SERVICE);
剪贴板管理器. setText(文本);
}
}
/**
* 获取状态栏高度
*
* @返回
*/
public static int getstatusbarehight(Context Context){
班级?c=空;
对象obj=null
Java。郎。反思。field field=null
int x=0;
int status bar eight=0;
尝试{
c=类。forname(' com。安卓。内部。r $ dimen’);
obj=c . new instance();
field=c . getfield(' status _ bar _ height ');
x=整数。解析int(字段。得到(obj).toString());
status bareight=上下文。获取资源().getDimensionPixelSize(x);
返回状态背景灯
} catch(异常e) {
e。printstacktrace();
}
返回状态背景灯
}
/**
* 获取当前进程名
* @param上下文
* @返回进程名
*/
公共静态最终字符串getProcessName(上下文上下文){
字符串进程名=空
//ActivityManager
活动管理器am=((活动管理器)上下文。getsystem服务(上下文.ACTIVITY _ SERVICE));
while (true) {
对于(ActivityManager .runnipponprocessinfo:am。getrunningappprocesses()){
如果(信息。PID==安卓。OS。过程。mypid()){
流程名称=信息。流程名称;
打破;
}
}
//回家
如果(!文本实用程序。isempty(进程名)){
返回进程名
}
//休息一下,再来
尝试{
线程。睡眠(100 l);
} catch(中断例外){
前任。printstacktrace();
}
}
}
}
更多关于机器人相关内容感兴趣的读者可查看本站专题: 《Android开发入门与进阶教程》 、 《Android调试技巧与常见问题解决方法汇总》 、 《Android基本组件用法总结》 、 《Android视图View技巧总结》 、 《Android布局layout技巧总结》 及《Android控件用法总结》
希望本文所述对大家机器人程序设计有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。