package com.streamlet.common.util;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.os.Build;
import android.os.Environment;
import android.telephony.TelephonyManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import com.streamlet.base.AppApplication;
import java.io.File;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* 手机基本信息
*
* @author linyg
*/
public class PhoneUtil {
private TelephonyManager telephonyManager;
private Context context;
static PhoneUtil phoneinfo;
private Map<String, Object> infoMap;
private PhoneUtil(Context context) {
telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
this.context = context;
infoMap = new HashMap<String, Object>();
}
public static PhoneUtil getInstance(Context context) {
if (phoneinfo == null) {
phoneinfo = new PhoneUtil(context);
}
return phoneinfo;
}
/**
* 手机型号
*
* @return
* @time 2011-6-1 下午03:20:14
* @author:linyg
*/
public String getModel() {
String model = "";
if (infoMap.containsKey("get_model")) {
model = (String) infoMap.get("get_model");
} else {
model = Build.MODEL;
infoMap.put("get_model", model);
}
return model;
}
/**
* 获取设备唯一码
*
* @param
* @return
*/
public String getIMEI() {
boolean invalidDeviceID = false;
// 获取imei号
String deviceID = telephonyManager.getDeviceId();
LogUtil.i("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", deviceID);
if (deviceID == null) {
invalidDeviceID = true;
} else if (deviceID.length() == 0 || deviceID.startsWith("000000") || deviceID.equals("0") || deviceID.startsWith("111111")
|| deviceID.startsWith("222222") || deviceID.startsWith("333333") || deviceID.startsWith("333333")
|| deviceID.startsWith("444444") || deviceID.startsWith("555555") || deviceID.startsWith("666666")
|| deviceID.startsWith("777777") || deviceID.startsWith("888888") || deviceID.startsWith("999999")
|| deviceID.startsWith("123456") || deviceID.startsWith("abcdef") || deviceID.equals("unknown")) {
invalidDeviceID = true;
}
// 如果未获取到 2.2以上的系统才能使用
if (invalidDeviceID && Integer.parseInt(Build.VERSION.SDK) >= 9) {
try {
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class, String.class);
deviceID = (String) (get.invoke(c, "ro.serialno", "unknown"));
} catch (Exception e) {
}
LogUtil.i("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", deviceID);
if (deviceID == null) {
invalidDeviceID = true;
} else if (deviceID.length() == 0 || deviceID.startsWith("000000") || deviceID.equals("0") || deviceID.startsWith("111111")
|| deviceID.startsWith("222222") || deviceID.startsWith("333333") || deviceID.startsWith("333333")
|| deviceID.startsWith("444444") || deviceID.startsWith("555555") || deviceID.startsWith("666666")
|| deviceID.startsWith("777777") || deviceID.startsWith("888888") || deviceID.startsWith("999999")
|| deviceID.startsWith("123456") || deviceID.startsWith("abcdef") || deviceID.equals("unknown")) {
invalidDeviceID = true;
} else {
invalidDeviceID = false;
}
}
// 以上都无法获取到,则从sharepreference和SD卡
if (invalidDeviceID) {
String spDeviceId = SharedPreferenceUtil.getInstance(context).getString(SharedPreferenceUtil.IMEI);
if (spDeviceId != null && !spDeviceId.equals("")) {
deviceID = spDeviceId;
}
if (deviceID == null) {
invalidDeviceID = true;
} else if (deviceID.length() == 0 || deviceID.startsWith("000000") || deviceID.equals("0") || deviceID.startsWith("111111")
|| deviceID.startsWith("222222") || deviceID.startsWith("333333") || deviceID.startsWith("333333")
|| deviceID.startsWith("444444") || deviceID.startsWith("555555") || deviceID.startsWith("666666")
|| deviceID.startsWith("777777") || deviceID.startsWith("888888") || deviceID.startsWith("999999")
|| deviceID.startsWith("123456") || deviceID.startsWith("abcdef") || deviceID.equals("unknown")) {
invalidDeviceID = true;
} else {
invalidDeviceID = false;
}
}
// 自动生成,并将保存在本地
if (invalidDeviceID) {
deviceID = UUID.randomUUID().toString();
}
if (!StringUtils.isEmpty(deviceID)) {
SharedPreferenceUtil.getInstance(context).putString(SharedPreferenceUtil.IMEI, deviceID);
}
LogUtil.i("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", deviceID);
return deviceID;
}
/**手机号读取*/
public String getNativePhoneNumber() {
telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String nativePhoneNumber=null;
nativePhoneNumber=telephonyManager.getLine1Number();
return nativePhoneNumber;
}
/**
* 获取是否debug模式
*
* @return
*/
public static boolean isApkDebugable() {
try {
ApplicationInfo info = AppApplication.getInstance().getApplicationInfo();
return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
} catch (Exception e) {
}
return false;
}
/**
* 获取sd卡路径
*
* @return
*/
public static String getSDPath() {
String sdDir = "";
boolean sdCardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory() + "/dbgs/";// 获取跟目录
} else {
sdDir = "/data/data/dbgs/";
}
File file = new File(sdDir);
if (!file.exists()) {
file.mkdir();
}
return sdDir;
}
/**
* 打卡手机软键盘
*/
public static void openSoftkeyboard(Context context, EditText editText) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
editText.setFocusableInTouchMode(true);
editText.requestFocus();
}
/* *//**关闭软键盘*//*
public static void keyBoardCancle(BaseActivity context) {
View view = context.getWindow().peekDecorView();
if (view != null) {
InputMethodManager inputmanger = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputmanger.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
*//**
* 监听软件盘的打开关闭状态
*//*
public static void openOrCloseSoftboard(final EditText editText, final RelativeLayout mainLayout) {
editText.setInputType(InputType.TYPE_CLASS_TEXT);
editText.setFocusableInTouchMode(true);
editText.requestFocus();
InputMethodManager inputManager = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText, 0);
mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = mainLayout.getRootView().getHeight() - mainLayout.getHeight();
if (heightDiff > 100) { // 说明键盘是弹出状态
//ToastUtil.show(getApplicationContext(), "弹出", 2000);
} else {
editText.setInputType(InputType.TYPE_NULL);
editText.setFocusableInTouchMode(false);
//ToastUtil.show(getApplicationContext(), "隐藏", 2000);
}
}
});
}*/
/**
* 获取手机屏幕分辨率
* */
public static float getDensity(Context context) {
return context.getResources().getDisplayMetrics().density;
}
}