package com.hua.goddess.global;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.location.Location;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import android.telephony.TelephonyManager;
import android.util.DisplayMetrics;
/**
* 获取设备信息
* @author Evil
*
*/
public class DeviceInfo {
/**
* 获取当前网络状态
* @return NetworkInfo
*/
public static NetworkInfo getCurrentNetStatus(Context ctx) {
ConnectivityManager manager = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
return manager.getActiveNetworkInfo();
}
/**
* 获取网络连接状态
* @param ctx
* @return true:有网 false:没网
*/
public static boolean isNetworkAvailable(Context ctx){
NetworkInfo nki = getCurrentNetStatus(ctx);
if(nki!=null)
return nki.isAvailable();
else
return false;
}
/**
* 获取可用存储空间大小
* 若存在SD卡则返回SD卡剩余控件大小
* 否则返回手机内存剩余空间大小
* @return
*/
public static long getAvailableStorageSpace(){
long externalSpace = getExternalStorageSpace();
if(externalSpace==-1L){
return getInternalStorageSpace();
}
return externalSpace;
}
/**
* 获取SD卡可用空间
* @return availableSDCardSpace 可用空间(MB)。-1L:没有SD卡
*/
public static long getExternalStorageSpace(){
long availableSDCardSpace = -1L;
//存在SD卡
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
StatFs sf = new StatFs(Environment.getExternalStorageDirectory().getPath());
long blockSize = sf.getBlockSize();//块大小,单位byte
long availCount = sf.getAvailableBlocks();//可用块数量
// long blockCount = sf.getBlockCount();//块总数量
// Log.d("", "block大小:"+ blockSize+",block数目:"+ blockCount+",总大小:"+blockSize*blockCount/1024+"KB");
// Log.d("", "可用的block数目::"+ availCount+",剩余空间:"+ availCount*blockSize/1024+"KB");
availableSDCardSpace = availCount*blockSize/1024/1024;//可用SD卡空间,单位MB
}
return availableSDCardSpace;
}
/**
* 获取机器内部可用空间
* @return availableSDCardSpace 可用空间(MB)。-1L:没有SD卡
*/
public static long getInternalStorageSpace(){
long availableInternalSpace = -1L;
StatFs sf = new StatFs(Environment.getDataDirectory().getPath());
long blockSize = sf.getBlockSize();//块大小,单位byte
long availCount = sf.getAvailableBlocks();//可用块数量
// long blockCount = sf.getBlockCount();//块总数量
// Log.d("", "block大小:"+ blockSize+",block数目:"+ blockCount+",总大小:"+blockSize*blockCount/1024+"KB");
// Log.d("", "可用的block数目::"+ availCount+",剩余空间:"+ availCount*blockSize/1024+"KB");
availableInternalSpace = availCount*blockSize/1024/1024;//可用SD卡空间,单位MB
return availableInternalSpace;
}
/**
* 获取SD卡总空间
* @return availableSDCardSpace 总空间(MB)。-1L:没有SD卡
*/
public static long getExternalStorageTotalSpace(){
long availableSDCardSpace = -1L;
//存在SD卡
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
StatFs sf = new StatFs(Environment.getExternalStorageDirectory().getPath());
long blockSize = sf.getBlockSize();//块大小,单位byte
// long availCount = sf.getAvailableBlocks();//可用块数量
long blockCount = sf.getBlockCount();//块总数量
// Log.d("", "block大小:"+ blockSize+",block数目:"+ blockCount+",总大小:"+blockSize*blockCount/1024+"KB");
// Log.d("", "可用的block数目::"+ availCount+",剩余空间:"+ availCount*blockSize/1024+"KB");
availableSDCardSpace = blockCount*blockSize/1024/1024;//总SD卡空间,单位MB
}
return availableSDCardSpace;
}
/**
* 下载次数文字
* @param downloadTime
* @return
*/
public static String getDownloadTimesText(String downloadTime){
int dlt = 1000;
try {
dlt = Integer.parseInt(downloadTime);
} catch (NumberFormatException e) {
}
int t = 1;
for(;dlt>=10;t=t*10){
dlt = dlt/10;
}
int ldlt = dlt/5;
switch(ldlt){
case 0:
return (1*t)+"-"+(5*t);
case 1:
return (5*t)+"-"+(10*t);
default:
return (1*t)+"-"+(5*t);
}
}
/**
* 获取mac 地址
* @return
*/
public static String getLocalMacAddress(Context ctx) {
WifiManager wifi = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
return info.getMacAddress();
}
/**
* 获得设备型号
*
* @return
*/
public static String getDeviceModel() {
return Build.MODEL;
}
/**
* 获得国际移动设备身份码
*
* @param context
* @return
*/
public static String getIMEI(Context context) {
return ((TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
}
/**
* 获得国际移动用户识别码
*
* @param context
* @return
*/
public static String getIMSI(Context context) {
return ((TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE)).getSubscriberId();
}
/**
* 获得设备屏幕矩形区域范围
*
* @param context
* @return
*/
public static Rect getScreenRect(Activity activity) {
// 取出平屏幕的宽和高
DisplayMetrics metric = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
return new Rect(0, 0, metric.widthPixels, metric.heightPixels);
}
/**
* 获得设备屏幕密度
*/
public static float getScreenDensity(Context context) {
DisplayMetrics metrics = context.getApplicationContext().getResources()
.getDisplayMetrics();
return metrics.density;
}
/**
* 获得系统版本
*/
public static String getSDKVersion() {
return android.os.Build.VERSION.SDK;
}
public static int getSDKVersionInt() {
return android.os.Build.VERSION.SDK_INT;
}
public static String getSystemVersion(){
return android.os.Build.VERSION.RELEASE;
}
//Get the Location by GPS or WIFI
public static Location getLocation(Context context) {
try {
LocationManager locMan = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
Location location = locMan
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location == null) {
location = locMan
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
return location;
} catch (Exception e) {
}
return null;
}
}