package com.liuguilin.lovewallpaper.entity; /* * 项目名: LoveWallpaper * 包名: com.liuguilin.lovewallpaper.entity * 文件名: Constants * 创建者: LGL * 创建时间: 2017/1/9 17:16 * 描述: 常量类 */ import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Environment; import android.os.StatFs; import android.support.v7.app.AlertDialog; import android.telephony.TelephonyManager; import android.text.format.Formatter; import android.view.Gravity; import com.liuguilin.lovewallpaper.R; import com.liuguilin.lovewallpaper.activity.WebViewActivity; import com.liuguilin.lovewallpaper.utils.L; import com.liuguilin.lovewallpaper.view.CustomDialog; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; public class Constants { //返回码 public static final int REQUEST_CODE = 101; //第一次启动 public static final int HANDLER_FIRST_START = 1000; //无限轮播 public static final int HANDLER_AUTO_SHUFFLING = 1001; //下拉刷新 public static final int HANDLER_REFRESH = 1002; //停止动画 public static final int HANDLER_STOP_ANIMATION = 1003; public static final String WALLPAPER_BASE_URL = "http://open.lovebizhi.com/"; public static final String WEATHER_BASE_URL = "https://api.thinkpage.cn/"; //视频地址 public static final String IMOOC_VIDEO_URL = "http://szv1.mukewang.com/5876eb5be520e572618b458b/H.mp4"; //图片地址 public static final String IMOOC_IMAGE_URL = "http://szimg.mukewang.com/5876eedd0001d20909000500.jpg"; //QQ下载地址 public static final String URL_DOWNLOAD_QQ = "http://app.sina.cn/appdetail.php?appID=100928"; //微博下载地址 public static final String URL_DOWNLOAD_SINA = "http://app.sina.cn/appdetail.php?appID=84560"; //微信下载地址 public static final String URL_DOWNLOAD_WECHAT = "http://app.sina.cn/appdetail.php?appID=93134"; //Blog public static final String BLOG = "http://blog.csdn.net/qq_26787115"; //Github public static final String GITHUB = "https://github.com/LiuGuiLinAndroid"; //项目 Github public static final String LOVE_WALLPAPER_GITHUB = "https://github.com/LiuGuiLinAndroid/LoveWallpaper"; //心知天气key public static final String THINKPAPE_KEY = "cjfbaiq6lln0oqk1"; public static String shareText = "我在Github上找到一款非常棒的软件:" + Constants.LOVE_WALLPAPER_GITHUB; //生活指数图片 public static final int WEATHER_LIFE_ICON[] = {R.drawable.icon_car_washing, R.drawable.icon_dressing , R.drawable.icon_flu, R.drawable.icon_sport, R.drawable.icon_travel, R.drawable.icon_uv}; //设置图标 public static final int SETTING_ICON[] = {R.drawable.icon_setting_msg, R.drawable.icon_clear , R.drawable.icon_version, R.drawable.icon_git, R.drawable.icon_about}; //城市字母 //天气图标 public static final int WEATHER_ICON[] = {R.drawable.w0, R.drawable.w1, R.drawable.w2, R.drawable.w3, R.drawable.w4 , R.drawable.w5, R.drawable.w6, R.drawable.w7, R.drawable.w8, R.drawable.w9 , R.drawable.w10, R.drawable.w11, R.drawable.w12, R.drawable.w13, R.drawable.w14 , R.drawable.w15, R.drawable.w16, R.drawable.w17, R.drawable.w18, R.drawable.w19 , R.drawable.w20, R.drawable.w21, R.drawable.w22, R.drawable.w23, R.drawable.w24 , R.drawable.w25, R.drawable.w26, R.drawable.w27, R.drawable.w28, R.drawable.w29 , R.drawable.w30, R.drawable.w31, R.drawable.w32, R.drawable.w33, R.drawable.w34 , R.drawable.w35, R.drawable.w36, R.drawable.w37, R.drawable.w38, R.drawable.w99}; //封装dialog public static CustomDialog showDialog(Context mContext, int layout) { //初始化提示框 CustomDialog dialog = new CustomDialog(mContext, 0, 0, layout, R.style.Theme_dialog, Gravity.CENTER, R.style.pop_anim_style); return dialog; } //获取版本号 public static String getAppVersion(Context mContext) { String version = ""; PackageManager pm = mContext.getPackageManager(); try { PackageInfo info = pm.getPackageInfo(mContext.getPackageName(), 0); version = info.versionName; return version; } catch (PackageManager.NameNotFoundException e) { version = "获取失败"; } return version; } //跳转网页 public static void startWebView(Context mContext, String title, String url) { Intent intent2 = new Intent(mContext, WebViewActivity.class); intent2.putExtra("title", title); intent2.putExtra("url", url); mContext.startActivity(intent2); } //获取手机IP public static String getPhoneIp(Context mContext) { // 获取wifi服务 WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); // 判断wifi是否开启 if (!wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(true); } WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); String ip = intToIp(ipAddress); return ip; } //地址算法 private static String intToIp(int i) { return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + (i >> 24 & 0xFF); } //获取MAC地址 public static String getMacAddress(Context mContext) { WifiManager wifi = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress(); } //获取内存卡可用内存 public static String getSdAvailableMemory() { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File path = Environment.getExternalStorageDirectory(); StatFs statfs = new StatFs(path.getPath()); // 获取block的SIZE long blocSize = statfs.getBlockSize(); // 获取BLOCK数量 long totalBlocks = statfs.getBlockCount(); // 空闲的Block的数量 long availaBlock = statfs.getAvailableBlocks(); // 计算总空间大小和空闲的空间大小 long availableSize = blocSize * availaBlock; long allSize = blocSize * totalBlocks; return "可用:" + availableSize / 1024 / 1024 / 1024 + "GB" + " 总共:" + allSize / 1024 / 1024 / 1024 + "GB"; } else { return "SD卡不可用"; } } //获取当前网络状态 public static String getNetworkState(Context mContext) { ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo == null || !networkInfo.isConnected()) { return "无网络连接"; } else { return "网络正常"; } } //获得可用内存 public static String getAvailMemory(Context mContext) { ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); am.getMemoryInfo(mi); // mi.availMem; 当前系统的可用内存 return Formatter.formatFileSize(mContext, mi.availMem); } //获取总内存 public static String getTotalMemory(Context mContext) { // 系统内存信息文件 String str1 = "/proc/meminfo"; String str2; String[] arrayOfString; long initial_memory = 0; try { FileReader localFileReader = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192); // 读取meminfo第一行,系统总内存大小 str2 = localBufferedReader.readLine(); arrayOfString = str2.split("\\s+"); // 获得系统总内存,单位是KB,乘以1024转换为Byte initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024; localBufferedReader.close(); } catch (IOException e) { L.e("error:" + e.toString()); } // Byte转换为KB或者MB,内存大小规格化 return Formatter.formatFileSize(mContext, initial_memory); } // 1-cpu型号 2-cpu频率 public static String[] cpuInfo = {"", ""}; //获取CPU属性 public static void getCpuInfo() { String str1 = "/proc/cpuinfo"; String str2 = ""; String[] arrayOfString; try { FileReader fr = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader(fr, 8192); str2 = localBufferedReader.readLine(); arrayOfString = str2.split("\\s+"); for (int i = 2; i < arrayOfString.length; i++) { cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " "; } str2 = localBufferedReader.readLine(); arrayOfString = str2.split("\\s+"); cpuInfo[1] += arrayOfString[2]; localBufferedReader.close(); } catch (IOException e) { L.i("error:" + e.toString()); } } //获取IMEI public static String getImei(Context mContext) { TelephonyManager mTelephonyMgr = (TelephonyManager) mContext. getSystemService(Context.TELEPHONY_SERVICE); String imei = mTelephonyMgr.getDeviceId(); return imei; } //系统分享 public static void intentSystemShare(Context mContext, String text) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, text); mContext.startActivity(intent); } //跳转QQ 可指定好友 public static void intentStartQQ(final Context mContext, String text) { if (isInstall(mContext, "com.tencent.mobileqq")) { String url = "mqqwpa://im/chat?chat_type=wpa&uin=100000&version=1"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, text); mContext.startActivity(intent); } else { showNoInstallDialog(mContext, mContext.getString(R.string.is_install_qq), URL_DOWNLOAD_QQ); } } //跳转微博 可分享图片等 public static void intentStartSina(final Context mContext, String text) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); PackageManager pm = mContext.getPackageManager(); List<ResolveInfo> matches = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); String packageName = "com.sina.weibo"; ResolveInfo info = null; for (ResolveInfo each : matches) { String pkgName = each.activityInfo.applicationInfo.packageName; if (packageName.equals(pkgName)) { info = each; break; } } if (info == null) { showNoInstallDialog(mContext, mContext.getString(R.string.is_install_sina), URL_DOWNLOAD_SINA); } else { intent.setClassName(packageName, info.activityInfo.name); intent.putExtra(Intent.EXTRA_TEXT, text); mContext.startActivity(intent); } } //跳转到微信 public static void intentStartWechat(Context mContext, String text) { if (isInstall(mContext, "com.tencent.mm")) { Intent intent = new Intent(); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, text); intent.setComponent(new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI")); intent.setAction(Intent.ACTION_VIEW); mContext.startActivity(intent); } else { showNoInstallDialog(mContext, mContext.getString(R.string.is_install_wechat), URL_DOWNLOAD_WECHAT); } } //判断程序是否安装 public static boolean isInstall(Context mContext, String packageName) { Intent intent = new Intent(Intent.ACTION_SEND); PackageManager pm = mContext.getPackageManager(); List<ResolveInfo> matches = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); ResolveInfo info = null; for (ResolveInfo each : matches) { String pkgName = each.activityInfo.applicationInfo.packageName; if (packageName.equals(pkgName)) { info = each; break; } } if (info == null) { return false; } else { return true; } } //提示未安装 public static void showNoInstallDialog(final Context mContext, String message, final String url) { new AlertDialog.Builder(mContext) .setMessage(message) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); mContext.startActivity(intent); dialog.dismiss(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).show(); } //读取assets文件 public static String getFromAssets(Context mContext, String fileName) { try { InputStreamReader inputReader = new InputStreamReader(mContext.getResources().getAssets().open(fileName)); BufferedReader bufReader = new BufferedReader(inputReader); String line = ""; String Result = ""; while ((line = bufReader.readLine()) != null) Result += line; return Result; } catch (Exception e) { return ""; } } /**************** * 发起添加群流程。群号:通往Android的神奇之旅(555974449) 的 key 为: WKsVihQjloOtstvRIXUWxU2M4QRKUwO0 * 调用 joinQQGroup(WKsVihQjloOtstvRIXUWxU2M4QRKUwO0) 即可发起手Q客户端申请加群 通往Android的神奇之旅(555974449) * * @param key 由官网生成的key * @return 返回true表示呼起手Q成功,返回fals表示呼起失败 ******************/ public static void joinQQGroup(Context mContext, String key) { Intent intent = new Intent(); intent.setData(Uri.parse("mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26k%3D" + key)); // 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面 // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) try { mContext.startActivity(intent); } catch (Exception e) { // 未安装手Q或安装的版本不支持 showNoInstallDialog(mContext, mContext.getString(R.string.is_install_qq), URL_DOWNLOAD_QQ); } } }