diff --git a/app/src/main/java/com/tt/activity/JMainActivity.java b/app/src/main/java/com/tt/activity/JMainActivity.java index cf01cd7..c11db90 100644 --- a/app/src/main/java/com/tt/activity/JMainActivity.java +++ b/app/src/main/java/com/tt/activity/JMainActivity.java @@ -1,7 +1,11 @@ package com.tt.activity; +import android.view.KeyEvent; +import android.widget.Toast; + import com.tt.base.BaseActivity; import com.tt.ttutils.R; +import com.tt.ttutils.java.ToastUtil; public class JMainActivity extends BaseActivity { @@ -19,4 +23,33 @@ public class JMainActivity extends BaseActivity { protected void initData() { } + + // 用来计算返回键的点击间隔时间 + private long exitTime = 0; + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK + && event.getAction() == KeyEvent.ACTION_DOWN) { + if ((System.currentTimeMillis() - exitTime) > 1000) { + //弹出提示,可以有多种方式 + Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); + exitTime = System.currentTimeMillis(); + } else { + finish(); + } + return true; + } + + return super.onKeyDown(keyCode, event); + } + private long mPreClickTime=0; + + private void lazyExit() { + if (System.currentTimeMillis() - mPreClickTime > 1000) { + ToastUtil.show("再按一次,退出"); + mPreClickTime = System.currentTimeMillis(); + } else { + finish(); + } + } } diff --git a/app/src/main/java/com/tt/ttutils/java/DevicesUtils.java b/app/src/main/java/com/tt/ttutils/java/DevicesUtils.java index fbf0120..d4edf94 100644 --- a/app/src/main/java/com/tt/ttutils/java/DevicesUtils.java +++ b/app/src/main/java/com/tt/ttutils/java/DevicesUtils.java @@ -1,8 +1,18 @@ package com.tt.ttutils.java; import android.annotation.SuppressLint; +import android.content.Context; import android.os.Build; +import android.provider.Settings; +import android.telephony.TelephonyManager; +import android.util.DisplayMetrics; import android.util.Log; +import android.view.WindowManager; + +import androidx.annotation.RequiresApi; + +import org.json.JSONException; +import org.json.JSONObject; import java.lang.reflect.Method; @@ -40,6 +50,85 @@ public class DevicesUtils { } return serial; } + @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) + public static String getAndroiodScreenProperty(Context context) { + WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + DisplayMetrics dm = new DisplayMetrics(); + wm.getDefaultDisplay().getRealMetrics(dm); + int width = dm.widthPixels; // 屏幕宽度(像素) + int height = dm.heightPixels; // 屏幕高度(像素) + float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5) + int densityDpi = dm.densityDpi; // 屏幕密度dpi(120 / 160 / 240) + // 屏幕宽度算法:屏幕宽度(像素)/屏幕密度 + int screenWidth = (int) (width / density); // 屏幕宽度(dp) + int screenHeight = (int) (height / density);// 屏幕高度(dp) + Log.e("h_bl", "屏幕宽度(像素):" + width); + Log.e("h_bl", "屏幕高度(像素):" + height); + Log.e("h_bl", "屏幕密度(0.75 / 1.0 / 1.5):" + density); + Log.e("h_bl", "屏幕密度dpi(120 / 160 / 240):" + densityDpi); + Log.e("h_bl", "屏幕宽度(dp):" + screenWidth); + Log.e("h_bl", "屏幕高度(dp):" + screenHeight); + return screenWidth+"×"+screenHeight; + } + + public static String getIMEI(Context context) { + String IMEI = "unknow"; + String IMEI1, IMEI2, IMEI3; + //获取手机设备号 + TelephonyManager TelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + //8.0及以后版本获取 +// if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP) { +// IMEI1 = TelephonyMgr.getDeviceId(); +// } else + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { +// try { +// Method method = TelephonyMgr.getClass().getMethod("getImei"); +// IMEI2 = (String) method.invoke(TelephonyMgr); +// } catch (Exception e) { +// e.printStackTrace(); +// Log.e("getIMEI", e.getMessage()); +// } +// } else {//9.0到10.0获取 + IMEI = Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); + } + Log.e("IMEI:", "IMEI: " + IMEI); + return IMEI.toUpperCase(); + } + public static String getProperty(String key, String defaultValue) { + String value = defaultValue; + try { + Class c = Class.forName("android.os.SystemProperties"); + Method get = c.getMethod("get", String.class, String.class); + value = (String) (get.invoke(c, key, "unknown")); + } catch (Exception e) { + e.printStackTrace(); + } finally { + return value; + } + } + + @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) + public static String getMachine(Context context) { + String device = Build.MODEL;//机型 + String imei = getIMEI(context); + String system_version = Build.VERSION.RELEASE; + String firmware_version =getProperty("ro.build.display.id", "获取失败") ; + String rom = getProperty("ro.custom.build.version", "获取失败"); + String screen_rate=getAndroiodScreenProperty(context); + JSONObject jsonObject = new JSONObject(); + try { + jsonObject.put("device",device); + jsonObject.put("imei",imei); + jsonObject.put("system_version",system_version); + jsonObject.put("firmware_version",firmware_version); + jsonObject.put("rom",rom); + jsonObject.put("screen_rate",screen_rate); + } catch (JSONException e) { + e.printStackTrace(); + } + return jsonObject.toString(); + } + } diff --git a/app/src/main/java/com/tt/ttutils/kt/ToastUtil.kt b/app/src/main/java/com/tt/ttutils/kt/ToastUtil.kt index b654ca0..809044b 100644 --- a/app/src/main/java/com/tt/ttutils/kt/ToastUtil.kt +++ b/app/src/main/java/com/tt/ttutils/kt/ToastUtil.kt @@ -1,7 +1,17 @@ package com.tt.ttutils.kt -import java.util.logging.Handler +import android.content.Context +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.widget.Toast + class ToastUtil { + private val mhandler: Handler = object : Handler(Looper.getMainLooper()) {} + + fun init(context: Context) { + + } } \ No newline at end of file diff --git a/app/src/zip/AndroidCirCleView(jb51.net).rar b/app/src/zip/AndroidCirCleView(jb51.net).rar new file mode 100644 index 0000000..a3f3693 Binary files /dev/null and b/app/src/zip/AndroidCirCleView(jb51.net).rar differ