Skip to content

Commit

Permalink
提交部分工具类
Browse files Browse the repository at this point in the history
  • Loading branch information
马天宇 committed Dec 10, 2014
1 parent 3888f86 commit 6f681cf
Show file tree
Hide file tree
Showing 12 changed files with 1,683 additions and 77 deletions.
49 changes: 49 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,52 @@ common-src
some utils, common calsses, base src.

LiteCommon项目:其中包括位图、MD5、Hex、File、Byte、计数器、均值器,存储器、吐司,日志,校验,系统,弹窗,提示等基础功能

1. async包:异步与并发
AsyncExecutor: 一个简单的可以自定义线程池并发执行器

2. log包:日志
Log: 一个和android系统日志类同名(方便快速替换)的Log工具类,不同的是这个Log具有一键开关功能,方便快速开发打开调试模式。

3. assit包:辅助
Averager: 均值器, 添加一些列数字或时间戳,获取其均值。
Base64: Base64, 兼容到android1.0版本的Base64编解码器。
Check: 检测类, 检测各种对象是否为null或empty。
LogReader: 日志捕获器, 将某个程序、级别的日志记录到sd卡中,方便远程调试。
Network: 网络探测器, 判断网络是否打开、连接、可用,以及当前网络状态。
SilentInstaller: 安装器, 静默安装、卸载(仅在root过的手机上)。
TimeAverager: 计时均值器, 统计耗时的同时,多次调用可得出其花费时间均值。
TimeCounter: 计时器, 顾名思义,统计耗时用的。
Toastor: 吐司, 解决多次连续弹出提示问题,可只弹出最后一次,也可连续弹出轻量级提示。

4. data包:数据处理
DataKeeper: 轻量级持久化工具,封装的SharedPreferences,可加密,更简单、安全的存储(持久化)、获取数字、布尔值、甚至对象。
chipher包: 放置加解密辅助类。

5. io包:文件与IO
Charsets: 字节编码类
FilenameUtils: 通用的文件名字、路径操作工具类
FileUtils: 通用文件操作工具类
IOUtils: 通用IO流操作工具类
StringCodingUtils:字符串编码工具类
stream包: IO流操作辅助类

6. utils包:常用工具类
AndroidUtil: android信息, 获取android手机品牌、mac、imei、imsi等信息
AppUtil: app工具, 检测是否前台运行,服务是否运行中等
BitmapUtil: 位图操作, 拍照,裁剪,圆角,byte、string互转,压缩,放缩,保存等
ByteUtil: byte工具类
ClassUtil: 类工具, 新建实例,判断类型等
DialogUtil: 对话框工具类, 统一全局对话框
FieldUtil: 属性工具类
FileUtil: 文件工具类
HexUtil: 16进制工具类
MD5Util: MD5工具类
NotificationUtil:通知工具类
NumberUtil: 数字工具类
PackageUtil: 应用程序类,安装,卸载,启动等
RandomUtil: 随机工具类,产生随机string或数字,随机洗牌等。
SerializeUtil: 序列化工具类
ShellUtil: shell 名利工具类
TelephoneUtil: 电话工具类,手机号、运营商、IMEI等信息
VibrateUtil: 震动工具类
4 changes: 3 additions & 1 deletion src/com/litesuits/android/async/AsyncExecutor.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ public AsyncExecutor() {
}

public AsyncExecutor(ExecutorService threadPool) {
if (AsyncExecutor.threadPool != null) {
shutdownNow();
}
if (threadPool == null) {
AsyncExecutor.threadPool = Executors.newCachedThreadPool();
} else {
Expand All @@ -31,7 +34,6 @@ public AsyncExecutor(ExecutorService threadPool) {
public static synchronized void shutdownNow() {
if (threadPool != null && !threadPool.isShutdown()) threadPool.shutdownNow();
threadPool = null;
handler = null;
}

/**
Expand Down
195 changes: 195 additions & 0 deletions src/com/litesuits/common/assist/Network.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
package com.litesuits.common.assist;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import com.litesuits.android.log.Log;

import java.lang.reflect.Method;

/**
*
* assist us in sensing state of the networks.
*
* need <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
*
* 半夜了,研究了一下Android的Network方面,发现网上有些文章理解的是不对的。
* 以下方法是我研究得出的结论和方法,如有误也感谢指出。
*
* @author MaTianyu
* 2014-1-8上午 00:33:11
*/
public class Network {
private static final String TAG = Network.class.getSimpleName();

public enum NetType {
None(1),
Mobile(2),
Wifi(4),
Other(8);
NetType(int value) {
this.value = value;
}
public int value;
}

/**
* 获取ConnectivityManager
*/
public static ConnectivityManager getConnManager(Context context) {
return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}

/**
* 判断网络连接是否有效(此时可传输数据)。
* @param context
* @return boolean 不管wifi,还是mobile net,只有当前在连接状态(可有效传输数据)才返回true,反之false。
*/
public static boolean isConnected(Context context) {
NetworkInfo net = getConnManager(context).getActiveNetworkInfo();
return net != null && net.isConnected();
}

/**
* 判断有无网络正在连接中(查找网络、校验、获取IP等)。
* @param context
* @return boolean 不管wifi,还是mobile net,只有当前在连接状态(可有效传输数据)才返回true,反之false。
*/
public static boolean isConnectedOrConnecting(Context context) {
NetworkInfo[] nets = getConnManager(context).getAllNetworkInfo();
if (nets != null) {
for (NetworkInfo net : nets) {
if (net.isConnectedOrConnecting()) { return true; }
}
}
return false;
}

public static NetType getConnectedType(Context context) {
NetworkInfo net = getConnManager(context).getActiveNetworkInfo();
if (net != null) {
switch (net.getType()) {
case ConnectivityManager.TYPE_WIFI :
return NetType.Wifi;
case ConnectivityManager.TYPE_MOBILE :
return NetType.Mobile;
default :
return NetType.Other;
}
}
return NetType.None;
}

/**
* 是否存在有效的WIFI连接
*/
public static boolean isWifiConnected(Context context) {
NetworkInfo net = getConnManager(context).getActiveNetworkInfo();
return net != null && net.getType() == ConnectivityManager.TYPE_WIFI && net.isConnected();
}

/**
* 是否存在有效的移动连接
* @param context
* @return boolean
*/
public static boolean isMobileConnected(Context context) {
NetworkInfo net = getConnManager(context).getActiveNetworkInfo();
return net != null && net.getType() == ConnectivityManager.TYPE_MOBILE && net.isConnected();
}

/**
* 检测网络是否为可用状态
*/
public static boolean isAvailable(Context context) {
return isWifiAvailable(context) || (isMobileAvailable(context) && isMobileEnabled(context));
}

/**
* 判断是否有可用状态的Wifi,以下情况返回false:
* 1. 设备wifi开关关掉;
* 2. 已经打开飞行模式;
* 3. 设备所在区域没有信号覆盖;
* 4. 设备在漫游区域,且关闭了网络漫游。
*
* @param context
* @return boolean wifi为可用状态(不一定成功连接,即Connected)即返回ture
*/
public static boolean isWifiAvailable(Context context) {
NetworkInfo[] nets = getConnManager(context).getAllNetworkInfo();
if (nets != null) {
for (NetworkInfo net : nets) {
if (net.getType() == ConnectivityManager.TYPE_WIFI) { return net.isAvailable(); }
}
}
return false;
}

/**
* 判断有无可用状态的移动网络,注意关掉设备移动网络直接不影响此函数。
* 也就是即使关掉移动网络,那么移动网络也可能是可用的(彩信等服务),即返回true。
* 以下情况它是不可用的,将返回false:
* 1. 设备打开飞行模式;
* 2. 设备所在区域没有信号覆盖;
* 3. 设备在漫游区域,且关闭了网络漫游。
*
* @param context
* @return boolean
*/
public static boolean isMobileAvailable(Context context) {
NetworkInfo[] nets = getConnManager(context).getAllNetworkInfo();
if (nets != null) {
for (NetworkInfo net : nets) {
if (net.getType() == ConnectivityManager.TYPE_MOBILE) { return net.isAvailable(); }
}
}
return false;
}

/**
* 设备是否打开移动网络开关
* @param context
* @return boolean 打开移动网络返回true,反之false
*/
public static boolean isMobileEnabled(Context context) {
try {
Method getMobileDataEnabledMethod = ConnectivityManager.class.getDeclaredMethod("getMobileDataEnabled");
getMobileDataEnabledMethod.setAccessible(true);
return (Boolean) getMobileDataEnabledMethod.invoke(getConnManager(context));
} catch (Exception e) {
e.printStackTrace();
}
// 反射失败,默认开启
return true;
}

/**
* 打印当前各种网络状态
* @param context
* @return boolean
*/
public static boolean printNetworkInfo(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo in = connectivity.getActiveNetworkInfo();
Log.i(TAG, "-------------$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$-------------");
Log.i(TAG, "getActiveNetworkInfo: " + in);
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
// if (info[i].getType() == ConnectivityManager.TYPE_WIFI) {
Log.i(TAG, "NetworkInfo[" + i + "]isAvailable : " + info[i].isAvailable());
Log.i(TAG, "NetworkInfo[" + i + "]isConnected : " + info[i].isConnected());
Log.i(TAG, "NetworkInfo[" + i + "]isConnectedOrConnecting : " + info[i].isConnectedOrConnecting());
Log.i(TAG, "NetworkInfo[" + i + "]: " + info[i]);
// }
}
Log.i(TAG, "\n");
} else {
Log.i(TAG, "getAllNetworkInfo is null");
}
}
return false;
}

}
Loading

0 comments on commit 6f681cf

Please sign in to comment.