package cn.ylong.com.toefl.utils;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStream;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.UUID;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import android.annotation.SuppressLint;import android.app.Activity;import android.app.AlertDialog;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.PackageManager.NameNotFoundException;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Build;import android.os.Environment;import android.os.StatFs;import android.telephony.TelephonyManager;import android.text.Html;import android.util.Log;import android.view.Display;import android.view.View;import android.view.WindowManager;import cn.ylong.com.toefl.R;import cn.ylong.com.toefl.application.ToeflEduApplication;import cn.ylong.com.toefl.domain.ClassPager;import cn.ylong.com.toefl.utils.Constants.Characters;public class CommonUtils {/** * 获取设备的deviceid *  * @param context * @return */public static String getDeviceId(Context context) {TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);String imei = telephonyManager.getDeviceId();return imei;}/** * 验证手机号码 *  * @param mobiles * @return */public static boolean isMobileNO(String mobiles) {Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");Matcher m = p.matcher(mobiles);return m.matches();}/** * 验证密码 *  * @param mobiles * @return */public static boolean isPassword(String password) {Pattern p = Pattern.compile("^[a-zA-Z0-9]{8,18}$");Matcher m = p.matcher(password);return m.matches();}/** * 验证邮箱 *  * @param email * @return */public static boolean isEmailNo(String email) {String check = "[A-Z0-9a-z_.]+@[A-Za-z0-9]+\\.[A-Za-z]{1,4}";Pattern regex = Pattern.compile(check);Matcher matcher = regex.matcher(email);return matcher.matches();}// /**// * 错误提示对话框// */// public static void showPromptDialog(String message, Context context) {// CustomDialog.Builder customBuilder = new CustomDialog.Builder(context);// customBuilder.setTitle(R.string.prompt).setMessage(message).setPositiveButton(R.string.sure,// new DialogInterface.OnClickListener() {// public void onClick(DialogInterface dialog, int which) {// dialog.dismiss();// }// }).create().show();// }/** * 系统错误提示对话框 */public static void showSystemDialog(String message, Context context) {new AlertDialog.Builder(context).setTitle(context.getString(R.string.prompt)).setMessage(message).setPositiveButton(context.getString(R.string.sure), null).show();}/** * 判断SDCard是否存在 *  * @return */public static boolean isSDCardExist() {boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);return sdCardExist;}/** * 获得SDCard路径 *  * @return */public static String getSDPath() {File sdDir = null;if (isSDCardExist()) {sdDir = Environment.getExternalStorageDirectory();}return sdDir.toString();}/** * 获得pdf图片存放路径 *  * @param context * @return */public static String getPDFPath(Context context) {String rootPath = getSDPath() + "/Android/data/" + ToeflEduApplication.getInstance().getPackageName() + "/PDF";return rootPath;}/** * 获得TPO存放的路径 *  * @param context * @return */public static String getTPOPath(Context context) {String rootPath = getSDPath() + "/Android/data/" + ToeflEduApplication.getInstance().getPackageName() + "/TPO";return rootPath;}/** * 获得APK存放的路径 *  * @param context * @return */public static String getAPKPath(Context context) {String rootPath = getSDPath() + "/Android/data/" + ToeflEduApplication.getInstance().getPackageName();return rootPath;}/** * 获得VIDEO存放路径 *  * @param context * @return */public static String getVideoPath(Context context) {String rootPath = getSDPath() + "/Android/data/" + ToeflEduApplication.getInstance().getPackageName() + "/VIDEO";return rootPath;}/** * 获得录制语音的存放路径 *  * @param context * @return */public static String getRecordPath(Context context) {String rootPath = getSDPath() + "/Android/data/" + ToeflEduApplication.getInstance().getPackageName() + "/RECORD/";return rootPath;}/** * 获得存放数据的路径 *  * @param context * @return */public static String getDictionaryPath(Context context) {String dictionaryPath = getSDPath() + "/Android/data/" + ToeflEduApplication.getInstance().getPackageName() + "/databases";return dictionaryPath;}/** * 存放测试试卷的路径 *  * @param context * @return */public static String getTestPagerPath(Context context) {String pagerPath = getSDPath() + "/Android/data/" + ToeflEduApplication.getInstance().getPackageName() + "/testpager";return pagerPath;}/** * 存放用户信息的路径 登录,注册使用 *  * @param context * @return */public static String getLoginPath(Context context) {String pagerPath = getSDPath() + "/Android/data/" + ToeflEduApplication.getInstance().getPackageName() + "/LOGIN";return pagerPath;}/** * pagecache *  * @param context * @return */public static String getPageCache(Context context) {String pagerPath = getSDPath() + "/Android/data/" + ToeflEduApplication.getInstance().getPackageName() + "/pagercache/";return pagerPath;}/** * 判断当前网络是否可用 不可用 *  * @param context * @return */public static boolean isNetworkConnection(final Context context) {boolean flag = false;ConnectivityManager manager = (ConnectivityManager) ToeflEduApplication.getInstance().getSystemService(Context.CONNECTIVITY_SERVICE);if (manager.getActiveNetworkInfo() != null) {flag = manager.getActiveNetworkInfo().isAvailable();}return flag;}/** * 判断当前网络是否可用 不可用跳转到设置网络界面 *  * @param context * @return */public static boolean checkNetworkState(final Context context) {boolean flag = false;ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (manager.getActiveNetworkInfo() != null) {flag = manager.getActiveNetworkInfo().isAvailable();}if (!flag) {AlertDialog.Builder builder = new AlertDialog.Builder(context);builder.setTitle(context.getString(R.string.prompt));builder.setMessage(context.getString(R.string.network_is_available));builder.setPositiveButton(context.getString(R.string.setting), new android.content.DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int arg1) {Intent mIntent = new Intent("android.settings.WIRELESS_SETTINGS");context.startActivity(mIntent);dialog.dismiss();}});builder.setNegativeButton(context.getString(R.string.cancle), new android.content.DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int arg1) {dialog.dismiss();}});builder.show();}return flag;}/** * 判读网络是否为WIFI *  * @param context * @return */public static boolean checkNetworkStateIsWifi(final Context context) {ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo info = manager.getActiveNetworkInfo();if (info != null) {if (info.getType() == ConnectivityManager.TYPE_WIFI) {return true;} else {return false;}}return false;}/** * 获取和保存当前屏幕的截图 */@SuppressWarnings("deprecation")public static String getAndSaveCurrentImage(Activity activity) {WindowManager windowManager = activity.getWindowManager();Display display = windowManager.getDefaultDisplay();int w = display.getWidth();int h = display.getHeight();Bitmap Bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);View decorview = activity.getWindow().getDecorView();decorview.setDrawingCacheEnabled(true);Bmp = decorview.getDrawingCache();String SavePath = getSDPath() + "/Android/data/" + activity.getPackageName() + "/printscreen";String filepath = "";try {File path = new File(SavePath);filepath = SavePath + "/Screen_1.png";File file = new File(filepath);if (!path.exists()) {path.mkdirs();}if (!file.exists()) {file.createNewFile();}FileOutputStream fos = null;fos = new FileOutputStream(file);if (null != fos) {Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);fos.flush();fos.close();}} catch (Exception e) {e.printStackTrace();}return filepath;}// /**// * Create a video thumbnail for a video. May return null if the video is// * corrupt.// *// * @param filePath// */public static String createVideoThumbnail(Bitmap bitmap, Activity activity) {String SavePath = getSDPath() + "/Android/data/" + activity.getPackageName() + "/printscreen";String filepath = "";try {File path = new File(SavePath);filepath = SavePath + "/Screen_1.png";File file = new File(filepath);if (!path.exists()) {path.mkdirs();}if (!file.exists()) {file.createNewFile();}FileOutputStream fos = null;fos = new FileOutputStream(file);if (null != fos) {bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);fos.flush();fos.close();}} catch (Exception e) {e.printStackTrace();}return filepath;// return bitmap;}public static String createNewVideoThumbnail(Bitmap bitmap, Activity activity, String videoname) {String SavePath = getSDPath() + "/Android/data/" + activity.getPackageName() + "/printscreen";String filepath = "";try {File path = new File(SavePath);filepath = SavePath + "/" + videoname + ".png";File file = new File(filepath);if (!path.exists()) {path.mkdirs();}if (!file.exists()) {file.createNewFile();}FileOutputStream fos = null;fos = new FileOutputStream(file);if (null != fos) {bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);fos.flush();fos.close();}} catch (Exception e) {e.printStackTrace();}return filepath;// return bitmap;}/** * SDCard 总容量大小 *  * @return GB */@SuppressWarnings("deprecation")public static long getTotalSize() {File file = Environment.getExternalStorageDirectory();StatFs statFs = new StatFs(file.getPath());// 获得sdcard上 block的总数long blockCount = statFs.getBlockCount();// 获得sdcard上每个block 的大小long blockSize = statFs.getBlockSize();// 计算标准大小使用:1024,当然使用1000也可以long bookTotalSize = blockCount * blockSize / 1000 / 1000 / 1000;return bookTotalSize;}/** * 计算Sdcard的剩余大小 *  * @return GB */@SuppressWarnings("deprecation")public static long getAvailableSize() {File file = Environment.getExternalStorageDirectory();StatFs statFs = new StatFs(file.getPath());// 获得Sdcard上每个block的sizelong blockSize = statFs.getBlockSize();// 获取可供程序使用的Block数量long blockavailable = statFs.getAvailableBlocks();// 计算标准大小使用:1024,当然使用1000也可以long blockavailableTotal = blockSize * blockavailable / 1000 / 1000 / 1000;return blockavailableTotal;}/** * 时间转换为时、分、秒 *  * @param time * @return */public static String timeToString(long time) {long hour = time / 3600;long minute = time / 60 % 60;long second = time % 60;String fs = hour + "小时" + minute + "分钟" + second + "秒";return fs;}public static String timeToString2(long time) {long hour = time / 3600;long minute = time / 60 % 60;long second = time % 60;String hourString;String minuteString;String secondString;if (hour < 10) {hourString = "0" + hour;} else {hourString = hour + "";}if (minute < 10) {minuteString = "0" + minute;} else {minuteString = minute + "";}if (second < 10) {secondString = "0" + second;} else {secondString = second + "";}String fs = hourString + ":" + minuteString + ":" + secondString;return fs;}public static String timeToStringNew(String time) {String hourString = null;String minuteString = null;String secondString = null;String fs = "00:00:00";if (time != null && !"".equals(time)) {if (time.contains("时")) {String str = time.replace("小时", ":").replace("分", ":").replace("秒", "");String[] strs = str.split(":");if (strs.length == 3) {int i = Integer.parseInt(strs[0]);int x = Integer.parseInt(strs[1]);int y = Integer.parseInt(strs[2]);if (i < 10) {hourString = "0" + i;} else {hourString = i + "";}if (x < 10) {minuteString = "0" + x;} else {minuteString = x + "";}if (y < 10) {secondString = "0" + y;} else {secondString = y + "";}}fs = hourString + ":" + minuteString + ":" + secondString;return fs;} else if (time.contains("分")) {String str = time.replace("分", ":").replace("秒", "");String[] s = time.split("分");int it = Integer.parseInt(s[0]) * 60;int it2 = 0;if (s.length > 1 && s[1].contains("秒")) {String[] ss = s[1].split("秒");it2 = Integer.parseInt(ss[0]);}int z = it + it2;long zz = z;String fss = timeToString2(zz);return fss;} else {String str = time.replace("秒", "");int i = 0;if (str.equals("")) {i = 0;} else {String[] strs = str.split(":");i = Integer.parseInt(strs[0]);}if (i < 10) {hourString = "0" + i;} else {hourString = i + "";}fs = "00:" + "00" + ":" + hourString;}}return fs;}/** * 毫秒转换为分秒 *  * @param time * @return */// public static String secondChangeString(long time) {// long minutes = (time % (1000 * 60 * 60)) / (1000 * 60);// long seconds = (time % (1000 * 60)) / 1000;//// if (minutes <= 9 && seconds > 9) {// return "0" + minutes + " : " + seconds;// } else if (minutes > 9 && seconds <= 9) {// return minutes + " : 0" + seconds;// } else if (minutes > 9 && seconds > 9) {// return minutes + " : " + seconds;// } else if (minutes <= 9 && seconds <= 9) {// return "0" + minutes + " : 0" + seconds;// }// return "";// }/** * mp3 时间 *  * @param time * @return */public static String format(int time) {SimpleDateFormat formatter = new SimpleDateFormat("mm:ss");return formatter.format(time);}/** * 秒转换为时分秒 *  * @param time * @return */public static String videoLength(int time) {SimpleDateFormat formatter = new SimpleDateFormat("hh:mm:ss");return formatter.format(time);}/** * 00:00 转换为毫秒 *  * @param time * @return */public static int stringTimeToMillTime(String time) {String[] my = time.split(":");int min = Integer.parseInt(my[0]);int sec = Integer.parseInt(my[1]);int totalSec = (min * 60 + sec) * 1000;return totalSec;}/** * 加载本地图片 *  * @param url * @return */public static Bitmap getLoacalBitmap(String url) {try {FileInputStream fis = new FileInputStream(url);return BitmapFactory.decodeStream(fis); // /把流转化为Bitmap图片} catch (FileNotFoundException e) {e.printStackTrace();return null;}}/** * 获取UUID *  * @return */public static String getUUID() {String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");return uuid;}/** * 转换为A、B.... *  * @param position * @return */public synchronized static String positonChangeSgin(int position) {String answer = "";switch (position) {case Characters.POSITION_ONE:answer = Characters.CHARACTER_A;break;case Characters.POSITION_TWO:answer = Characters.CHARACTER_B;break;case Characters.POSITION_THREE:answer = Characters.CHARACTER_C;break;case Characters.POSITION_FOUR:answer = Characters.CHARACTER_D;break;case Characters.POSITION_FIVE:answer = Characters.CHARACTER_E;break;case Characters.POSITION_SIX:answer = Characters.CHARACTER_F;break;case Characters.POSITION_SEVEN:answer = Characters.CHARACTER_G;break;case Characters.POSITION_EIGHT:answer = Characters.CHARACTER_H;break;case Characters.POSITION_NINE:answer = Characters.CHARACTER_I;break;default:break;}return answer;}/** * 转换为1,2,3。。。 *  * @param sgin * @return */public synchronized static int sginChangePosition(String sgin) {int position = 0;if (sgin.equals(Characters.CHARACTER_A)) {position = Characters.POSITION_ONE;} else if (sgin.equals(Characters.CHARACTER_B)) {position = Characters.POSITION_TWO;} else if (sgin.equals(Characters.CHARACTER_C)) {position = Characters.POSITION_THREE;} else if (sgin.equals(Characters.CHARACTER_D)) {position = Characters.POSITION_FOUR;} else if (sgin.equals(Characters.CHARACTER_E)) {position = Characters.POSITION_FIVE;} else if (sgin.equals(Characters.CHARACTER_F)) {position = Characters.POSITION_SIX;} else if (sgin.equals(Characters.CHARACTER_G)) {position = Characters.POSITION_SEVEN;} else if (sgin.equals(Characters.CHARACTER_H)) {position = Characters.POSITION_EIGHT;} else if (sgin.equals(Characters.CHARACTER_I)) {position = Characters.POSITION_NINE;}return position;}/** * 毫秒转换为分 *  * @param s * @return */public static String millsceondChangeMinute(long s) {int min = (int) (s / 1000 / 60);return "" + min;}/** * 小数转换为百分比 *  * @param accuracy * @return */public static String changePercentage(float accuracy) {DecimalFormat df = new DecimalFormat("0.00%");String accuracyString = df.format(accuracy);if (accuracyString.equals("0.00%")) {accuracyString = "0%";}return accuracyString;}/** * 两个整数的百分比 *  * @param x * @param y * @return */public static String getPercent(int x, int y) {String baifenbi = "";double baiy = x * 1.0;double baiz = y * 1.0;double fen = baiy / baiz;DecimalFormat df1 = new DecimalFormat("##.00%");baifenbi = df1.format(fen);if (".00%".equals(baifenbi)) {baifenbi = "0%";}if ("100.00%".equals(baifenbi)) {baifenbi = "100%";}if (baifenbi.endsWith(".00%")) {baifenbi = baifenbi.substring(0, baifenbi.length() - 4) + "%";}return baifenbi;}/** * 拼接Video Reading的名字 *  * @param tpoName * @param passage * @param question * @return */public static String jointVideoReadingName(Context context, String tpoName, int passage, int question) {String localPath = getVideoPath(context) + "/" + tpoName + "/";return localPath + tpoName + "-R-" + "P" + passage + "-Q" + question + ".mp4";}/** * 拼接Video Listening的名字 *  * @param tpoName * @param name * @param question * @return */public static String jointVideoListeningName(Context context, String tpoName, String titleName, int question) {String localPath = getVideoPath(context) + "/" + tpoName + "/";String name = "";String passageNumber = "";if (titleName.toLowerCase().contains("conversation")) {name = "C";} else {name = "L";}passageNumber = titleName.substring(titleName.length() - 1, titleName.length());return localPath + tpoName + "-L-" + name + passageNumber + "-Q" + question + ".mp4";}/** * 拼接Video Speaking的名字 *  * @param tpoName * @param question * @param type *            1 代表解题思路 2参考答案 3习作点评 * @param comment * @return */public static String jointVideoSpeakingName(Context context, String tpoName, int question, int type, int comment) {String localPath = getVideoPath(context) + "/" + tpoName + "/";String baseName = tpoName + "-S-" + "Q" + question;if (type == 1) {return localPath + baseName + "-K" + ".mp4";} else if (type == 2) {return localPath + baseName + "-RA" + ".mp4";} else {return localPath + baseName + "-SW" + comment + "-TC.mp4";}}/** * 拼接Video Writing的名字 *  * @param tpoName * @param type * @param question * @return */public static String jointVideoWritingName(Context context, String tpoName, int type, int question) {String localPath = getVideoPath(context) + "/" + tpoName + "/";String baseName = tpoName + "-W-" + "T";if (type == 1) {return localPath + baseName + question + "-K.mp4";} else {return localPath + baseName + question + "-SW1-TC.mp4";}}/** * 获取当前应用程序的版本号 */public static String getVersion(Context context) {PackageManager pm = context.getPackageManager();try {PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), 0);return packageInfo.versionName;} catch (NameNotFoundException e) {e.printStackTrace();return "";}}/** * 判断是否快速的点击按钮 */private static long lastClickTime;public static boolean isFastDoubleClick(long waitTime) {long time = System.currentTimeMillis();long timeD = time - lastClickTime;if (0 < timeD && timeD < waitTime) {return true;}lastClickTime = time;return false;}/** * 获取资源文件的bitmap *  * @param context * @param resId * @return */public static Bitmap readBitMap(Context context, int resId) {BitmapFactory.Options opt = new BitmapFactory.Options();opt.inPreferredConfig = Bitmap.Config.RGB_565;opt.inPurgeable = true;opt.inInputShareable = true;InputStream is = context.getResources().openRawResource(resId);return BitmapFactory.decodeStream(is, null, opt);}/** * 给定的字符串排序 *  * @param context * @param sortString * @return */public static String stringSort(Context context, String sortString) {char[] a = sortString.toCharArray();Arrays.sort(a);String rst = new String(a);return rst;}// 判断当前设备是否是模拟器。如果返回TRUE,则当前是模拟器,不是返回FALSEpublic static boolean isEmulator(Context context) {try {TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);String imei = tm.getDeviceId();if (imei != null && imei.equals("000000000000000")) {return true;}return (Build.MODEL.equals("sdk")) || (Build.MODEL.equals("google_sdk"));} catch (Exception ioe) {}return false;}/** * @return Number of bytes available on External storage */@SuppressWarnings("deprecation")public static long getAvailableSpaceInBytes() {long availableSpace = -1L;StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());availableSpace = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();return availableSpace;}/** * @return Number of kilo bytes available on External storage */@SuppressWarnings("deprecation")public static long getAvailableSpaceInKB() {final long SIZE_KB = 1024L;long availableSpace = -1L;StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());availableSpace = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();return availableSpace / SIZE_KB;}/** * @return Number of Mega bytes available on External storage */@SuppressWarnings("deprecation")public static long getAvailableSpaceInMB() {final long SIZE_KB = 1024L;final long SIZE_MB = SIZE_KB * SIZE_KB;long availableSpace = -1L;StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());availableSpace = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();return availableSpace / SIZE_MB;}/** * @return Number of gega bytes available on External storage */@SuppressWarnings("deprecation")public static long getAvailableSpaceInGB() {final long SIZE_KB = 1024L;final long SIZE_GB = SIZE_KB * SIZE_KB * SIZE_KB;long availableSpace = -1L;StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());availableSpace = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();return availableSpace / SIZE_GB;}public static boolean isNumeric1(String str) {Pattern pattern = Pattern.compile("[0-9]*");return pattern.matcher(str).matches();}/** * 获取服务器图片 *  * @param imageUrl图片路径 * @return */public static String getImageUrl(String imageUrl) {if (imageUrl != null && !"".equals(imageUrl)) {if (imageUrl.contains("http:")) {return imageUrl;} else {if (imageUrl.startsWith("/")) {imageUrl = imageUrl.substring(1);}String url = YLongEduProjectClient.WEB_RESOURCES_ULR + imageUrl;return url;}} else {return "";}}/** * 阅读内容组装为html样式 */@SuppressLint("DefaultLocale")public static void pagerTextChangeHtmlString(ClassPager mReadingPager) {String resourcesURL = "";if (CommonUtils.isNetworkConnection(ToeflEduApplication.getInstance())) {if (mReadingPager.getText().contains("http://resources.ylongedu.com")) {resourcesURL = "";} else {resourcesURL = "http://resources.ylongedu.com";}}String[] jsCss = new String[] { "audioslidershow.style.css", "mootools-core-1.3.2-full-nocompat.js", "jquery-1.10.2.min.js","jquery.jplayer.js", "jquery.audioslideshow.js" };StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("" + mReadingPager.getPassgername() + "");String jsCssPath = "file:///android_asset/";for (int i = 0; i < jsCss.length; i++) {String jC = jsCss[i];if (jC.contains(".css")) {stringBuilder.append("");} else {stringBuilder.append("");}}stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("
");if (mReadingPager.getPassgername() != null && !"".equals(mReadingPager.getPassgername())) {stringBuilder.append("

" + mReadingPager.getPassgername() + "

");}stringBuilder.append(mReadingPager.getText());stringBuilder.append("
");stringBuilder.append("");stringBuilder.append("");stringBuilder.append("");String htmlString = stringBuilder.toString();if (!CommonUtils.isNetworkConnection(ToeflEduApplication.getInstance())) {String cacheRoot = getPageCache(ToeflEduApplication.getInstance()) + mReadingPager.getTpoName();Document document = Jsoup.parse(htmlString);Element picElement = document.getElementById("picture_name");Element audioElement = document.getElementById("audioFile");String picText = "";if (picElement != null) {picText = picElement.text();}String audioText = "";if (audioElement != null) {audioText = audioElement.text();}String part1 = "";if (picText != null && !"".equals(picText)) {part1 = picText.substring(0, picText.lastIndexOf("/"));} else if (audioText != null && !"".equals(audioText)) {part1 = audioText.substring(0, audioText.lastIndexOf("/"));}String part2 = "";if ((!"".equals(picText) && picText.toLowerCase().contains("reading"))|| (!"".equals(audioText) && audioText.toLowerCase().contains("reading"))) {part2 = cacheRoot + "/reading";} else if ((!"".equals(picText) && picText.toLowerCase().contains("listening"))|| (!"".equals(audioText) && audioText.toLowerCase().contains("listening"))) {part2 = cacheRoot + "/listening";} else if ((!"".equals(picText) && picText.toLowerCase().contains("speaking"))|| (!"".equals(audioText) && audioText.toLowerCase().contains("speaking"))) {part2 = cacheRoot + "/speaking";} else {part2 = cacheRoot + "/writing";}if (!"".equals(part1) && !"".equals(part2)) {htmlString = htmlString.replaceAll("(?i)" + part1, part2);}}mReadingPager.setHtmlString(htmlString);}/** * 判断一个字符串是否含有数字 * * @param content * @return */public static boolean hasDigit(String content) {boolean flag = false;Pattern p = Pattern.compile(".*\\d+.*");Matcher m = p.matcher(content);if (m.matches())flag = true;return flag;}/** * * @param str * @param fileType例如 * :audioFile 或 picture_name * @return */public static String accessPath(String str, String fileType) {String text = str.replaceAll("

", "").replaceAll("

", "").trim();// String questionText = text.substring(0, text.indexOf("

更多相关文章

  1. JAVA-ANDROID
  2. 福利篇:学习编程视频免费领取
  3. Android(安卓)getIdentifier()使用
  4. Android范例编程一:获取地理位置
  5. android获取屏幕尺寸、密度(判断手机屏幕类型)
  6. 2.2 窗口屏幕参数及UI样式---Display 和Style
  7. android如何获取设备的唯一设备码
  8. Android入门——利用Canvas完成绘制点、圆、直线、路径、椭圆、
  9. JS、Android、IOS 批量生成国际化字符串工具

随机推荐

  1. Spring 中的事件机制,芳芳用过都说好~
  2. Swagger 自动生成 Dubbo 服务的接口文档,
  3. 介绍 Java 中的内存泄漏
  4. 诊断 Java.lang.OutOfMemoryError(OOM)
  5. 不想用 Swagger?可以试试这个神器!
  6. 测试领域,小白问题大集合(适合未入门和入
  7. Scala 与 Java 的交互操作
  8. Swagger(丝袜哥)3.0 官方 Starter 终于出了
  9. 到底要不要考研?
  10. Java 线程面试题 Top 50