android中有哪些utils的作用,AndroidUtils

多年开发Android积攒下来好多常用的工具方法,保存在随笔中,持续更新。

TimeUtil

/**

* 获取距当前时刻的时间戳

*

* @param createTime

* @return

*/

public static String getTimestamp(long createTime) {

long currrentMillis = System.currentTimeMillis();

// if (createTime < 0 || currrentMillis < createTime) {

// return null;

// }

StringBuffer sb =new StringBuffer();

Date date =new Date(createTime);

Calendar now = Calendar.getInstance();

SimpleDateFormat sdf_hms =new SimpleDateFormat("HH:mm");

SimpleDateFormat sdf_full =new SimpleDateFormat("yyyy-MM-dd HH:mm");

long standardMillis =1000 * (now.get(Calendar.HOUR_OF_DAY) *3600 + now.get(Calendar.MINUTE) *60 + now.get(Calendar.SECOND));

long diffMillis = currrentMillis - createTime;

if (diffMillis <60 *1000) {

sb.append("刚刚");

}else if (diffMillis <3600 *1000) {

sb.append(diffMillis /60000 +"分钟前");

}else if (diffMillis < standardMillis) {

sb.append("今天 " + sdf_hms.format(date));

}else if (diffMillis < standardMillis +MILLISECOND_OF_DAY) {

sb.append("昨天 " + sdf_hms.format(date));

}else {

sb.append(sdf_full.format(date));

}

return sb.toString();

}

//判断选择的日期是否是今天

public static boolean isToday(long time) {

return isThisTime(time,"yyyy-MM-dd");

}

//判断选择的日期是否是本月

public static boolean isThisMonth(long time) {

return isThisTime(time,"yyyy-MM");

}

private static boolean isThisTime(long time, String pattern) {

Date date =new Date(time);

SimpleDateFormat sdf =new SimpleDateFormat(pattern);

String param = sdf.format(date);//参数时间

String now = sdf.format(new Date());//当前时间

if (param.equals(now)) {

return true;

}

return false;

}

//判断选择的日期是否是本周

public static boolean isThisWeek(long time) {

Calendar calendar = Calendar.getInstance();

int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);

calendar.setTime(new Date(time));

int paramWeek = calendar.get(Calendar.WEEK_OF_YEAR);

if (paramWeek == currentWeek) {

return true;

}

return false;

}

/**

* 将long时间格式字符串转换为字符串 yyyy-MM-dd HH:mm MM月dd日 yyyy-MM-dd

*

* @return

*/

public static String timeLong2String(long data) {

Date date =new Date(data);

SimpleDateFormat formatter =new SimpleDateFormat("yyyy-MM-dd HH:mm");

// SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日");

// SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

return formatter.format(date);

}

ScreenUtil

public static int px2sp(Context context,float pxValue) {

final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;

return (int) (pxValue / fontScale +0.5f);

}

public static int dp2px(Context context,int dp) {

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();

return (int) ((dp * displayMetrics.density) +0.5);

}

public static int px2dp(Context context,float pxValue) {

final float scale = context.getResources().getDisplayMetrics().density;

return (int) (pxValue / scale +0.5f);

}

/**

* 获取屏幕宽度

*/

public static int getScreenWidth(Context context) {

DisplayMetrics dm = context.getResources().getDisplayMetrics();

return dm.widthPixels;

}

/**

* 获取屏幕高度

*/

public static int getScreenHeight(Context context) {

DisplayMetrics dm = context.getResources().getDisplayMetrics();

return dm.heightPixels;

}

/**

* 获取状态栏高度

*/

public static int getStatusBarHeight(Context context) {

// 一般是25dp

int height =dp2px(context,20);

//获取status_bar_height资源的ID

int resourceId = context.getResources().getIdentifier("status_bar_height","dimen","android");

if (resourceId >0) {

height = context.getResources().getDimensionPixelSize(resourceId);

LogUtil.i("real statusBar height:" + height);

}

return height;

}

/**

* 虚拟操作拦(home等)是否显示

*/

public static boolean isNavigationBarShow(Activity activity) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {

Display display = activity.getWindowManager().getDefaultDisplay();

Point size =new Point();

Point realSize =new Point();

display.getSize(size);

display.getRealSize(realSize);

return realSize.y != size.y;

}else {

boolean menu = ViewConfiguration.get(activity).hasPermanentMenuKey();

boolean back = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);

if (menu || back) {

return false;

}else {

return true;

}

}

}

/**

* 获取虚拟操作拦(home等)高度

*/

public static int getNavigationBarHeight(Activity activity) {

if (!isNavigationBarShow(activity))

return 0;

int height =0;

Resources resources = activity.getResources();

//获取NavigationBar的高度

int resourceId = resources.getIdentifier("navigation_bar_height","dimen","android");

if (resourceId >0)

height = resources.getDimensionPixelSize(resourceId);

return height;

}

NetWorkUtil

/**

* 没有网络

*/

public static final int NETWORKTYPE_INVALID =0;

/**

* wap网络

*/

public static final int NETWORKTYPE_WAP =1;

/**

* 2G网络

*/

public static final int NETWORKTYPE_2G =2;

/**

* 3G和3G以上网络,或统称为快速网络

*/

public static final int NETWORKTYPE_3G =3;

/**

* wifi网络

*/

public static final int NETWORKTYPE_WIFI =4;

private static boolean isFastMobileNetwork(Context context) {

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

switch (telephonyManager.getNetworkType()) {

case TelephonyManager.NETWORK_TYPE_1xRTT:

return false;// ~ 50-100 kbps

case TelephonyManager.NETWORK_TYPE_CDMA:

return false;// ~ 14-64 kbps

case TelephonyManager.NETWORK_TYPE_EDGE:

return false;// ~ 50-100 kbps

case TelephonyManager.NETWORK_TYPE_EVDO_0:

return true;// ~ 400-1000 kbps

case TelephonyManager.NETWORK_TYPE_EVDO_A:

return true;// ~ 600-1400 kbps

case TelephonyManager.NETWORK_TYPE_GPRS:

return false;// ~ 100 kbps

case TelephonyManager.NETWORK_TYPE_HSDPA:

return true;// ~ 2-14 Mbps

case TelephonyManager.NETWORK_TYPE_HSPA:

return true;// ~ 700-1700 kbps

case TelephonyManager.NETWORK_TYPE_HSUPA:

return true;// ~ 1-23 Mbps

case TelephonyManager.NETWORK_TYPE_UMTS:

return true;// ~ 400-7000 kbps

case TelephonyManager.NETWORK_TYPE_EHRPD:

return true;// ~ 1-2 Mbps

case TelephonyManager.NETWORK_TYPE_EVDO_B:

return true;// ~ 5 Mbps

case TelephonyManager.NETWORK_TYPE_HSPAP:

return true;// ~ 10-20 Mbps

case TelephonyManager.NETWORK_TYPE_IDEN:

return false;// ~25 kbps

case TelephonyManager.NETWORK_TYPE_LTE:

return true;// ~ 10+ Mbps

case TelephonyManager.NETWORK_TYPE_UNKNOWN:

return false;

default:

return false;

}

}

/**

* 获取网络状态,wifi,wap,2g,3g.

*

* @param context 上下文

* @return int 网络状态

*/

public static int getNetWorkType(Context context) {

ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo networkInfo = manager.getActiveNetworkInfo();

if (networkInfo !=null && networkInfo.isConnected()) {

String type = networkInfo.getTypeName();

if (type.equalsIgnoreCase("WIFI")) {

return NETWORKTYPE_WIFI;

}else if (type.equalsIgnoreCase("MOBILE")) {

String proxyHost = android.net.Proxy.getDefaultHost();

return TextUtils.isEmpty(proxyHost)

? (isFastMobileNetwork(context) ?NETWORKTYPE_3G :NETWORKTYPE_2G)

:NETWORKTYPE_WAP;

}

}else {

return NETWORKTYPE_INVALID;

}

return NETWORKTYPE_INVALID;

}

public static boolean isNetWorkConnect(Context context) {

return getNetWorkType(context) !=0;

}

DeviceUtil

/**

* 获取deviceid

*

* @return

*/

public static String getDeviceId() {

String deviceId =getDeviceIdLocally();

if (TextUtils.isEmpty(deviceId)) {

try {

AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(CCApplication.getInstance());

if (idInfo ==null) {

String uuid =getUUId();

storeDeviceId(uuid);

return uuid;

}else {

String advertId = idInfo.getId();

if (TextUtils.isEmpty(advertId)) {

return getUUId();

}else {

storeDeviceId(advertId);

SharedPrefUtils.getInstance().putString(AppConstant.SharedPreferenceKey.KEYCHAIN_ID, MD5Util.md5Encode(advertId));

return advertId;

}

}

}catch (Exception e) {

return getUUId();

}

}else {

return deviceId;

}

}

public static String getUUId() {

String uuId = UUID.randomUUID().toString();

SharedPrefUtils.getInstance().putString(AppConstant.SharedPreferenceKey.DEVICE_ID, uuId);

SharedPrefUtils.getInstance().putString(AppConstant.SharedPreferenceKey.KEYCHAIN_ID, MD5Util.md5Encode(uuId));

return uuId;

}

private static String getDeviceIdLocally() {

final String fileName ="HMSN.ini";

File file =null;

if (isSDCardAvailable()) {

file =new File(Environment.getExternalStorageDirectory(), fileName);

if (!file.exists()) {

file =null;

}

}

boolean internally =false;

if (file ==null) {

file =new File(CCApplication.getInstance().getFilesDir(), fileName);

internally =true;

}

if (file ==null || !file.exists()) {

String deviceId = SharedPrefUtils.getInstance().getString(AppConstant.SharedPreferenceKey.DEVICE_ID);

if (!TextUtils.isEmpty(deviceId)) {

storeDeviceId(deviceId);

return deviceId;

}

return null;

}

InputStream ins =null;

try {

ins =new FileInputStream(file);

Properties properties =new Properties();

properties.load(ins);

String deviceId = properties.getProperty(AppConstant.SharedPreferenceKey.DEVICE_ID);

if (!TextUtils.isEmpty(deviceId) && !internally &&isSDCardAvailable()) {

storeDeviceId(deviceId);

}

return deviceId;

}catch (Exception e) {

e.printStackTrace();

return null;

}finally {

if (ins !=null) {

try {

ins.close();

}catch (IOException e) {

e.printStackTrace();

}

}

}

}

private static void storeDeviceId(String deviceId) {

SharedPrefUtils.getInstance().putString(AppConstant.SharedPreferenceKey.DEVICE_ID, deviceId);

File file =new File(isSDCardAvailable() ? Environment.getExternalStorageDirectory() : CCApplication.getInstance().getFilesDir(),"HMSN.ini");

OutputStream outs =null;

try {

outs =new FileOutputStream(file);

Properties properties =new Properties();

properties.setProperty(AppConstant.SharedPreferenceKey.DEVICE_ID, deviceId);

properties.store(outs,null);

}catch (Exception e) {

e.printStackTrace();

}finally {

if (outs !=null) {

try {

outs.close();

}catch (IOException e) {

e.printStackTrace();

}

}

}

}

public static boolean isSDCardAvailable() {

return (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()));

}

/**

* 获取本地语言

* @return

*/

public static String getDeviceLanguage() {

return Locale.getDefault().getLanguage();

}

public static String getSimCode() {

TelephonyManager manager = (TelephonyManager) CCApplication.getInstance().getSystemService(Context.TELEPHONY_SERVICE);

return manager.getSimCountryIso();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的关键字this_super

文章目录要点错误的理解正确的理解演示代码要点 1.在类的构造器中&#xff0c;可以使用 this() 调用本类的其它构造器&#xff0c;调用的时候根据构造器声明的参数列表传递参数值 2.super() 调用父类的无参构造器 3.super.method() 调用父类的 method() 方法 4.super.name …

Spring Hibernate教程

1.简介 在本文中&#xff0c;我们将演示如何利用最流行的ORM&#xff08;对象关系映射&#xff09;工具之一的Hibernate的功能 &#xff0c;该工具可将面向对象的域模型转换为传统的关系数据库。 Hibernate是目前最流行的Java框架之一。 由于这个原因&#xff0c;我们在Java Co…

百度地图瓦片 android,百度地图自定义瓦片图获取

nodejs代码const request require(request);const fs require(fs);const bagpipe require(bagpipe);const TileLnglatTransform require(tile-lnglat-transform);let [x1, y1] [72.26, 54.57]; // 起始点坐标(左上角)let [x2, y2] [137.31, 17.8]; // 终点坐标(右下角)le…

IntelliJ IDEA for Mac 如何自定义快捷键_设置快捷键

文章目录设置代码补全快捷键设置展开全部的快捷键折叠全部快捷键设置代码补全快捷键 代码自动补全&#xff0c;即智能提示。 打开【系统偏好设置】如下图所示&#xff1a; 在左侧的菜单栏中找到 Keymap → Main Menu → Code → Code Completion → Basic&#xff1a; 设…

android8 老手机,华为多款老旧手机获升安卓8.0,流畅度飙升!

原标题&#xff1a;华为多款老旧手机获升安卓8.0&#xff0c;流畅度飙升&#xff01;一直以来&#xff0c;在手机用户圈都有这么一个共识&#xff0c;那就是安卓手机不如iPhone流畅&#xff0c;之前安卓手机给人的印象就是容易卡顿&#xff0c;而谷歌则一直在为此事苦恼&#x…

java12关键字var_Java 10:“ var”关键字

java12关键字varJava 10使用关键字var引入了局部变量类型推断 。 这意味着无需编写&#xff1a; Map<Department, List<Employee>> map new HashMap<>(); // ... for (Entry<Department, List<Employee>> dept : map.entrySet()) {List<Emp…

IntelliJ IDEA for Mac自定义动态代码模板快捷键(Live Templates Shortcut)

文章目录查看更多的快捷键常用的代码模板自定义代码模板快捷键格式化等号文档注释代码模板快捷键应用示例声明定义引用类型变量数组的 for 循环指定循环次数的 for 循环增强 for 循环倒序 for 循环自动生成普通 for 循环语句自动生成main 方法自动生成输出语句自动生成增强for循…

android udp 设备发现,两台Android设备之间进行UDP连接(使用多播地址)~~求大神指点...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼首先 发送端&#xff1a;package com.example.multicastclient;import android.support.v7.app.ActionBarActivity;import java.io.IOException;import java.net.DatagramPacket;import java.net.InetAddress;import java.net.Mult…

java serial_Java的@Serial批注

java serialJDK可能正在使用JDK 11 &#xff1a; Serial获得另一个标准&#xff08;预定义&#xff09;注释 。 JDK-8202385 [“标记与序列相关的字段和方法的注释”]的目的是添加“某种“ SerialRelated”注释&#xff0c;以促进对序列字段和方法的声明的自动检查。” 这种想法…

IntelliJ IDEA 选中变量名,高亮显示其它地方的这个变量名,高亮颜色如何设置呢?

选中了一个变量名&#xff0c;会高亮显示位于别的地方的这个变量名&#xff0c;那么怎么修改其他地方的高亮颜色&#xff1f; 按下 Command , 打开偏好设置窗口&#xff0c;接着看下图&#xff1a;

rest和rest ful_还有更多REST技巧

rest和rest ful在以前的博客文章中&#xff0c;我介绍了一些实现REST体系结构的想法和技巧。 在这篇文章中&#xff0c;我将介绍更多的想法和技巧。 快取 缓存是原始论文的很大一部分。 见5.1.4节 策略包括验证&#xff08; 客户端检查它是否具有最新版本 &#xff09;和过期…

html实心圆点特殊符号,和平精英名称添加圆点符号的方法 和平精英圆点符号代码分享...

和平精英怎么在名字中添加圆点符号呢&#xff1f;昵称中是可以加入圆点符号的&#xff0c;很多小伙伴们都想要一个性一点的名字&#xff0c;那么就可以用到各种各样的特殊符号&#xff0c;圆点符号复制的代码小编已经分享到下面了&#xff0c;有需要这个圆点符号的玩家快带走吧…

Java包装类和基本数据类型的对照

int --> Integer byte --> Byte short --> Short long --> Long boolean --> Boolean char --> Character double --> Double float --> Float 注&#xff1a;基本类型自动转换成对应的包装类型&#xff0c;叫自动装箱&#xff1b;包装类型转换成对应…

java 8 stream_Java 8 Stream示例

java 8 stream这篇文章将帮助您了解Java 8中一些重要且经常使用的Stream操作&#xff0c;这使您使用Java编程变得容易。 让我们以传统示例为例&#xff0c;“员工和部门”。 public class Employee {private String name;private Integer age;private String city;private De…

html怎么设置图片隐藏,css3如何隐藏图片?

css3隐藏图片的方法&#xff1a;1、为图片元素设置display:none;样式来隐藏。2、使用visibility:hidden;样式隐藏图片。3、使用opacity:0;样式通过设置图片完全透明来设置图片不可见。css中可以使用下面几种样式隐藏图片&#xff1a;display:none;visibility:hidden;opacity:0;…

IntelliJ IDEA修改项目的根目录名称_修改包目录的名称_修改模块名称_修改项目名称

文章目录修改项目根目录的名称修改包目录的名称模块重命名修改了项目根目录后&#xff0c;必须删除项目和 .idea 文件&#xff0c;重新导入&#xff08;重点&#xff09;新版本的 IDEA 取消了 Import Project 入口修改项目根目录的名称 如果仅仅修改项目的名称&#xff0c;而不…

容器rocker_用Rocker制作模板

容器rocker在本文中&#xff0c;我们将快速介绍Rocker &#xff0c;这是一个静态类型化的快速Java 8模板引擎。 必需的依赖项 要开始使用Rocker&#xff0c;我们需要在项目中添加以下依赖项&#xff1a; <dependency><groupId>com.fizzed</groupId><art…

android 开源 示波器,上个老外的开源虚拟示波器

这个老贵~&#xff01;Price USD (US Dollar) $ 1595.00Network BitScope 442 ( BS442N )(原文件名:bs445n.png)(原文件名:bs440e.jpg)BS442NBS325NBS325UBS100UBS50UThe correct appearance of this website is only visible in graphical browsers that support web standard…

Java子类的成员方法可以直接调用父类的成员方法和成员变量

public class Teacher extends Employee {public static void main(String[] args) {}public void method() {super.method(); // 可以直接调父类的成员方法super.name; // 访问父类的成员变量System.out.println("子类方法执行&#xff01;");} }我的理解&#xff1…

java类似sizeof_如何用Java编写类似C的Sizeof函数

java类似sizeof如果您刚开始学习Java并且是C语言背景&#xff0c;那么您可能已经注意到Java和C编程语言之间存在一些差异&#xff0c;例如String是Java中的对象&#xff0c;而不是NULL终止的字符数组。 同样&#xff0c;Java中没有sizeof&#xff08;&#xff09;运算符。 所有…