Files
MoGoEagleEye/foudations/mogo-utils/src/main/java/com/mogo/utils/CheckUtils.java
2019-12-23 15:08:04 +08:00

200 lines
5.7 KiB
Java

package com.mogo.utils;
import android.content.Context;
import android.graphics.Rect;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
import androidx.annotation.Nullable;
import java.util.Collection;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CheckUtils {
/**
* 检查任意Object是否为空
* <hr>
* shallow check : 不会检查容器内部的元素是否为空
*/
public static boolean isEmpty( Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof Collection<?> ) {
// 检查各种Collection是否为空(List,Queue,Set)
return (( Collection<?> ) obj).isEmpty();
} else if (obj instanceof Map<?, ?> ) {
// 检查各种Map
return (( Map<?, ?> ) obj).isEmpty();
} else if (obj instanceof CharSequence ) {
// 检查各种CharSequence
return (( CharSequence ) obj).length() == 0;
} else if (obj.getClass().isArray()) {
// 检查各种base array
// return Array.getLength(obj) == 0;
if (obj instanceof Object[]) {
return (( Object[]) obj).length == 0;
} else if (obj instanceof int[]) {
return ((int[]) obj).length == 0;
} else if (obj instanceof long[]) {
return ((long[]) obj).length == 0;
} else if (obj instanceof short[]) {
return ((short[]) obj).length == 0;
} else if (obj instanceof double[]) {
return ((double[]) obj).length == 0;
} else if (obj instanceof float[]) {
return ((float[]) obj).length == 0;
} else if (obj instanceof boolean[]) {
return ((boolean[]) obj).length == 0;
} else if (obj instanceof char[]) {
return ((char[]) obj).length == 0;
} else if (obj instanceof byte[]) {
return ((byte[]) obj).length == 0;
}
}
return false;
}
public static boolean isExist( Object obj) {
return !isEmpty(obj);
}
public static boolean isContainsEmpty( Object... objs) {
if (isEmpty(objs)) {
return true;
}
for ( Object obj : objs) {
if (isEmpty(obj)) {
return true;
}
}
return false;
}
/**
* 是否为奇数
*/
public static boolean isOdd(int i) {
return i % 2 != 0;
}
/**
* 是否为偶数
*/
public static boolean isEven(int i) {
return i % 2 == 0;
}
/**
* 检查枚举组中是否包含指定枚举
*/
public static boolean isContainsEnum( @Nullable Enum<?>[] group, Enum<?> child) {
if (isEmpty(group)) {
return false;
}
for ( Enum<?> enums : group) {
if (enums == child) {
return true;
}
}
return false;
}
/**
* 快速点击事件
*/
private static long lastClickTime;
public static boolean isFastDoubleClick() {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
long delayTime = 500L;
if (0L < timeD && timeD < delayTime) {
return true;
} else {
lastClickTime = time;
return false;
}
}
/**
* 网络是否可用
*/
public static boolean isNetworkConnected( Context context) {
if ( context == null ) {
return false;
}
ConnectivityManager cm = ( ConnectivityManager ) context.getSystemService( Context.CONNECTIVITY_SERVICE);
NetworkInfo network = null;
if (cm != null) {
network = cm.getActiveNetworkInfo();
}
return network != null && network.isAvailable() && network.isConnected();
}
/**
* 检查gps开关是否已打开
*/
public static boolean isGpsOpenStatus( Context context) {
if ( context == null ) {
return false;
}
String gps = Settings.System.getString(context.getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED);
return !( TextUtils.isEmpty(gps) || !gps.contains("gps"));
}
/**
* 检查是否模拟位置
*/
public static boolean isOPenMockLocation( Context context) {
if ( context == null ) {
return false;
}
return Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0;
}
/**当前点击点是否在视图中*/
public static boolean isInsideView( MotionEvent event, View view) {
if (view != null && event != null) {
float eventX = event.getRawX();
float eventY = event.getRawY();
int[] contentArray = new int[2];
Rect contentRect = new Rect();
view.getLocationOnScreen(contentArray);
view.getDrawingRect(contentRect);
contentRect.offsetTo(contentArray[0], contentArray[1]);
return contentRect.contains((int) eventX, (int) eventY);
}
return false;
}
/**
* 判断扫描内容是否为url格式
*/
public static boolean isUrl( String url) {
if ( TextUtils.isEmpty(url)) {
return false;
}
String regex = "http(s)?://.*";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(url);
return m.matches();
}
}