AppUtils

import java.io.File;
import java.io.FileOutputStream;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.ThumbnailUtils;
import android.os.Environment;
import android.provider.Settings.Secure;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;


public class AppUtils {
private final static String filePath = "inspect/image";


/*
* 隐藏软键盘
*/
public static void hideInputWindow(Context context, View view) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}


/*
* 显示软键盘
*/
public static void showInputWindow(Context context, View view) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view, 0);
}


/*
* 获取手机IMSI
*/
public static String getIMSI(Context context) {
TelephonyManager telManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String imsi = telManager.getSubscriberId();
try {
imsi = ((TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
} catch (Exception e) {
System.out.println("获取IMSI码失败");
imsi = "获取IMSI码失败";
}
return imsi;
}
/**
* 获取设备IMEI

* @param context
* @return
*/
protected static String getImei(Context context) {
String mImei = "NULL";
try {
mImei = ((TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
} catch (Exception e) {
System.out.println("获取IMEI码失败");
mImei = "获取IMEI码失败";
}
return mImei; 
}
/*
* 获取手机唯一识别码
*/
public static String getAndroidId(Context context) {
String android_id = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
return android_id;
}


/*
* 获取手机号码
*/
public static String getLine1Number(Context context) {
String mNumber = "NULL";
try {
mNumber = ((TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE)).getLine1Number();
} catch (Exception e) {
System.out.println("获取手机号失败");
mNumber = "获取设备的手机号失败";
}


if (mNumber.length()<1) {
mNumber = "无法获取设备的手机号";


}
return mNumber; 
}
/*
* 获取运营商名称
*/
public static String getNetworkOperatorName(Context context) {
String mNetworkOperatorName = "NULL";
try {
mNetworkOperatorName = ((TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkOperatorName();
} catch (Exception e) {
System.out.println("获取运营商名称失败");
mNetworkOperatorName = "获取运营商名称失败";


}
return mNetworkOperatorName; 
}
/*
* 获取sim卡序列号
*/
public static String getSimSerialNumber(Context context) {
String mSimSerialNumber = "NULL";
try {
mSimSerialNumber = ((TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE)).getSimSerialNumber();
} catch (Exception e) {
System.out.println("获取SIM卡序号码失败");
mSimSerialNumber = "获取SIM卡序号码失败";


}
return mSimSerialNumber; 
}
/*
* 获取运营商所在国家
*/
public static String getNetworkCountryIso(Context context) {
String mNetworkCountryIso = "NULL";
try {
mNetworkCountryIso = ((TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkCountryIso();
} catch (Exception e) {
System.out.println("获取运营商所在国家失败");
mNetworkCountryIso = "获取运营商所在国家失败";


}
return mNetworkCountryIso; 
}
/*
* 获取运营商编号
*/
public static String getNetworkOperator(Context context) {
String mNetworkOperator = "NULL";
try {
mNetworkOperator = ((TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkOperator();
} catch (Exception e) {
System.out.println("获取运营商编号失败");
mNetworkOperator = "获取运营商编号失败";


}
return mNetworkOperator; 
}






/**   
* 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) 
*   
* @param context 
*  
*/
public static void cleanInternalCache(Context context) {
deleteFilesByDirectory(context.getCacheDir());
}


/** 

* 清除本应用所有数据库(/data/data/com.xxx.xxx/databases) 
*  @param context 
*  
*/
@SuppressLint("SdCardPath")
public static void cleanDatabases(Context context) {
deleteFilesByDirectory(new File("/data/data/"
+ context.getPackageName() + "/databases"));
}


/**
* 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs) 
* @param  context

*/
@SuppressLint("SdCardPath")
public static void cleanSharedPreference(Context context) {
deleteFilesByDirectory(new File("/data/data/"
+ context.getPackageName() + "/shared_prefs"));
}


/**
*按名字清除本应用数据库 
*@param context 
*@param dbName 
*  
*/
public static void cleanDatabaseByName(Context context, String dbName) {
context.deleteDatabase(dbName);
}


/** 

*清除/data/data/com.xxx.xxx/files下的内容 
* @param context 

*/
public static void cleanFiles(Context context) {
deleteFilesByDirectory(context.getFilesDir());
}




/**
* 清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache) 
* @param  context

*/
public static void cleanExternalCache(Context context) {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
deleteFilesByDirectory(context.getExternalCacheDir());
}
}


/** 

*清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除
* @param filePath 

*/
public static void cleanCustomCache(String filePath) {
deleteFilesByDirectory(new File(filePath));
}


/** 

*清除本应用所有的数据 
*@param context 
* @param filepath 

*/
public static void cleanApplicationData(Context context, String... filepath) {
cleanInternalCache(context);
cleanExternalCache(context);
cleanDatabases(context);
cleanSharedPreference(context);
cleanFiles(context);
for (String filePath : filepath) {
cleanCustomCache(filePath);
}
}


/** 

*删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理 
* @param directory
*  
*/
private static void deleteFilesByDirectory(File directory) {
if (directory != null && directory.exists() && directory.isDirectory()) {
for (File item : directory.listFiles()) {
item.delete();
}
}
}
/*
* 获取traceInfo
*/
public static String getTraceInfo() {
StringBuffer sb = new StringBuffer();
StackTraceElement[] stacks = new Throwable().getStackTrace();
sb.append(" Class:").append(stacks[1].getFileName()).append(";Method:").append(stacks[1].getMethodName()).append(";Line:").append(stacks[1].getLineNumber());
return sb.toString();
}


private AppUtils() {
/* cannot be instantiated */
throw new UnsupportedOperationException("cannot be instantiated");


}


/**
* 获取应用程序名称
*/
public static String getAppName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
int labelRes = packageInfo.applicationInfo.labelRes;
return context.getResources().getString(labelRes);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}


/**
* [获取应用程序版本名称信息]

* @param context
* @return 当前应用的版本名称
*/
public static String getVersionName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionName;


} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}


public static void print(Context context, String text) {
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
;
}


/**
* 压缩图片上传

* @param picPath
* @return
*/
private synchronized File compressPicture(String picPath) {


int maxWidth = 640, maxHeight = 480; // 设置新图片的大小
String fileName = picPath.substring(picPath.lastIndexOf("/"));


BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap image = BitmapFactory.decodeFile(picPath, options);
double ratio = 1D;
if (maxWidth > 0 && maxHeight <= 0) {
// 限定宽度,高度不做限�?
ratio = Math.ceil(options.outWidth / maxWidth);
} else if (maxHeight > 0 && maxWidth <= 0) {
// 限定高度,不限制宽度
ratio = Math.ceil(options.outHeight / maxHeight);
} else if (maxWidth > 0 && maxHeight > 0) {
// 高度和宽度都做了限制,这时我们计算在这个限制内能容纳的最大的图片尺寸,不会使图片变形
double _widthRatio = Math.ceil(options.outWidth / maxWidth);
double _heightRatio = (double) Math.ceil(options.outHeight / maxHeight);
ratio = _widthRatio > _heightRatio ? _widthRatio : _heightRatio;
}
if (ratio > 1)
options.inSampleSize = (int) ratio;
options.inJustDecodeBounds = false;
options.inPreferredConfig = Bitmap.Config.RGB_565;
image = BitmapFactory.decodeFile(picPath, options);
// 保存入sdCard
File file = new File(filePath + fileName);
try {
FileOutputStream out = new FileOutputStream(file);
if (image.compress(Bitmap.CompressFormat.JPEG, 100, out)) {
out.flush();
out.close();
}
} catch (Exception e) {
e.printStackTrace();
return new File(picPath);
} finally {
if (image != null && !image.isRecycled()) {
image.recycle();
}
}
return file;
}


/*
* 判断服务是否运行
*/
public static boolean isServiceRunning(Context mContext, String className) {
boolean isRunning = false;
ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(30);
if (!(serviceList.size() > 0)) {
return false;
}
for (int i = 0; i < serviceList.size(); i++) {
if (serviceList.get(i).service.getClassName().equals(className) == true) {
isRunning = true;
break;
}
}
return isRunning;
}


/*
* 视频缩略图
*/
public static Bitmap getVideoThumbnail(String videoPath, int width, int height, int kind) {
Bitmap bitmap = null;
// 获取视频的缩略图
bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind);
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
return bitmap;
}


/*
* 视频截图
*/
public static Bitmap getVideoThumbnail(String videoPath, int kind) {
Bitmap bitmap = null;
// 获取视频的缩略图
bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind);
return bitmap;
}


/*
* 获取图片缩略图
*/
public static Bitmap getImageThumbnail(String imagePath, int width, int height) {
Bitmap bitmap = null;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
// 获取这个图片的宽和高,注意此处的bitmap为null
bitmap = BitmapFactory.decodeFile(imagePath, options);
options.inJustDecodeBounds = false; // 设为 false
// 计算缩放�?
int h = options.outHeight;
int w = options.outWidth;
int beWidth = w / width;
int beHeight = h / height;
int be = 1;
if (beWidth < beHeight) {
be = beWidth;
} else {
be = beHeight;
}
if (be <= 0) {
be = 1;
}
options.inSampleSize = be;
// 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false
bitmap = BitmapFactory.decodeFile(imagePath, options);
// 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
return bitmap;
}




/*
* 删除文件
*/
public static void deleteFile(String filePath) {
File f = new File(filePath);
if (f.exists()) {
f.delete();
}
}


/*
* 解决scrollview中嵌套listview只显示一行
* 使用方法再每次 刷新之前 设置数据之后调用
*/
public static void setListViewHeightBasedOnChildren(ListView listView) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}


int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
// listAdapter.getCount()返回数据项的数目
View listItem = listAdapter.getView(i, null, listView);
// 计算子项View 的宽度
listItem.measure(0, 0);
// 统计�?有子项的总高度
totalHeight += listItem.getMeasuredHeight();
}


ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// listView.getDividerHeight()获取子项间分隔符占用的高度
// params.height后得到整个ListView完整显示所要的高度
listView.setLayoutParams(params);
}


/** 
* 半角转换为全角 
*  
* @param input 
* @return 
*/  
public static String ToDBC(String input) {  
char[] c = input.toCharArray();  
for (int i = 0; i < c.length; i++) {  
if (c[i] == 12288) {  
c[i] = (char) 32;  
continue;  
}  
if (c[i] > 65280 && c[i] < 65375)  
c[i] = (char) (c[i] - 65248);  
}  
return new String(c);  
}  




/***

* 删除所有指定目录下的文件
* @param root  文件根目录
*/


public static void deleteAllFiles(File root) {  
File files[] = root.listFiles();  
if (files != null)  
for (File f : files) {  
if (f.isDirectory()) { // 判断是否为文件夹  
deleteAllFiles(f);  
try {  
f.delete();  
} catch (Exception e) {  
}  
} else {  
if (f.exists()) { // 判断是否存在  
deleteAllFiles(f);  
try {  
f.delete();  
} catch (Exception e) {  
}  
}  
}  


}  
}  


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值