package com.example.ndh.floatingball.util;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.SystemClock;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.telephony.TelephonyManager;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;
import com.example.ndh.floatingball.sdk.lockscreen.MyAdmin;
import com.example.ndh.floatingball.sdk.screenshot.ScreenShotActivity;
import android.util.Log;
import android.widget.Toast;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
/**
* Created by ndh on 16/12/20.
*/
public class Utils {
/**
* 获取屏幕尺寸
*
* @param context
* @return
*/
public static Point getScreenSize(Context context) {
WindowManager mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point p = new Point();
mWindowManager.getDefaultDisplay().getSize(p);
return p;
}
public static int pix2dp(Context context, int px) {
int dp;
final float scale = context.getResources().getDisplayMetrics().density;
dp = (int) (px / scale + 0.5f);
return dp;
}
public static int dp2pix(Context context, int dp) {
int px;
final float scale = context.getResources().getDisplayMetrics().density;
px = (int) (dp * scale + 0.5f);
return px;
}
public static boolean isServiceWork(Context mContext, String serviceName) {
boolean isWork = false;
ActivityManager myAM = (ActivityManager) mContext
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> myList = myAM.getRunningServices(100);
if (myList.size() <= 0) {
return false;
}
for (int i = 0; i < myList.size(); i++) {
String mName = myList.get(i).service.getClassName().toString();
if (mName.equals(serviceName)) {
isWork = true;
break;
}
}
return isWork;
}
public static synchronized String getStringBySP(Context context, String name, String defaultValue) {
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
return sp.getString(name, defaultValue);
}
public static synchronized void putStringBySP(Context context, String name, String value) {
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString(name, value).commit();
}
public static boolean canDrawOverlays(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(context.getApplicationContext())) {
return false;
} else {
return true;
}
}
public static boolean isActive(Context context) {
DevicePolicyManager policyManager;
ComponentName componentName;
policyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(context.getApplicationContext(), MyAdmin.class);
// policyManager.clearDeviceOwnerApp(context.getPackageName());
return policyManager.isAdminActive(componentName);
}
public static void unActive(Context context) {
DevicePolicyManager policyManager;
policyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
policyManager.clearDeviceOwnerApp(context.getPackageName());
}
public static void startActivePage(Activity context) {
// 启动设备管理(隐式Intent) - 在AndroidManifest.xml中设定相应过滤器
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
DevicePolicyManager policyManager;
ComponentName componentName;
policyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(context.getApplicationContext(), MyAdmin.class);
//权限列表
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
//描述(additional explanation)
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "------ 其他描述 ------");
context.startActivityForResult(intent, 0);
}
public static void startOverlayGrante(Context context) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + context.getApplicationContext().getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
public static String showPhoneNum(Context context) {
TelephonyManager phoneMgr = (TelephonyManager) context.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
// String strPhoneNum = phoneMgr.getLine1Number();
// return strPhoneNum;
return "";
}
static long[] mHint;
/**
* 真正调用的时候还是把方法 构造到activit等里面,避免内存泄漏
*
* @param times
* @param view
*/
public static void threeTimesClick(int times, final View view) {
mHint = new long[times];
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.arraycopy(mHint, 1, mHint, 0, mHint.length - 1);
mHint[mHint.length - 1] = SystemClock.uptimeMillis();
if (mHint[0] >= SystemClock.uptimeMillis() - 500) {
//500 毫秒点击了3次
Toast.makeText(view.getContext().getApplicationContext(), "3击事件", Toast.LENGTH_SHORT).show();
}
}
});
}
public static void removeAdmin(Context context) {
DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName cn = new ComponentName(context, MyAdmin.class);//组件名字
dpm.removeActiveAdmin(cn);//移除操作
}
public static DisplayMetrics getScreenInfo(Activity context) {
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
// screenWidth = dm.widthPixels;
// screenHeight = dm.heightPixels;
// densityDpi = dm.densityDpi;
// scale = dm.density;
// fontScale = dm.scaledDensity;
return dm;
}
public static void saveBitmap(Bitmap mBitmap, String bitName) {
File f = new File("/sdcard/Note/" + bitName + ".jpg");
FileOutputStream fOut = null;
try {
fOut = new FileOutputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
try {
fOut.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void installPackage(Context context,String packagePath){
String str = "/CanavaCancel.apk";
String fileName = Environment.getExternalStorageDirectory() + str;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
context.startActivity(intent);
}
public static void unInstallPackage(Context context,String packageName){
Uri packageURI = Uri.parse("package:"+packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
uninstallIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(uninstallIntent);
}
}