,,Android开发之超实用的系统管理工具类【SD卡,网络,uri,屏幕,网络,软键盘,文本,进程等】

,,Android开发之超实用的系统管理工具类【SD卡,网络,uri,屏幕,网络,软键盘,文本,进程等】

这篇文章主要介绍了机器人开发之超实用的系统管理工具类,涉及机器人针对南达科他州卡,网络,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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: