package com.yamin.reader.utils;
import java.io.File;
import java.text.DecimalFormat;
import org.geometerplus.fbreader.book.BookUtil;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.core.image.ZLImage;
import org.geometerplus.zlibrary.core.image.ZLLoadableImage;
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData;
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageManager;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.DisplayMetrics;
import com.yamin.reader.R;
public class ToolUtils {
public static boolean isWifiConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWiFiNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWiFiNetworkInfo != null) {
return mWiFiNetworkInfo.isAvailable();
}
}
return false;
}
public static boolean isMobileConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mMobileNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mMobileNetworkInfo != null) {
return mMobileNetworkInfo.isAvailable();
}
}
return false;
}
public static int getStatusHeight(Activity activity){
//获取状态栏高度
Rect frame = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
return statusBarHeight;
}
// exchange file size
public static String FormetFileSize(long fileS) {
DecimalFormat df = new DecimalFormat("#.00");
String fileSizeString = "";
if (fileS < 1024) {
fileSizeString = df.format((double) fileS) + "B";
} else if (fileS < 1048576) {
fileSizeString = df.format((double) fileS / 1024) + "K";
} else if (fileS < 1073741824) {
fileSizeString = df.format((double) fileS / 1048576) + "M";
} else {
fileSizeString = df.format((double) fileS / 1073741824) + "G";
}
return fileSizeString;
}
public static void shareWithOther(Context context,String msg){
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "分享");
intent.putExtra(Intent.EXTRA_TEXT, msg);
context.startActivity(Intent.createChooser(intent, "分享软件"));
}
public static boolean fileIsExists(String filePath){
File f=new File(filePath);
if(!f.exists()){
return false;
}
return true;
}
public static boolean checkEnd(String fileName, String[] endType) {
if (fileName != null && endType != null) {
for (String end : endType) {
if (fileName.endsWith(end))
return true;
}
}
return false;
}
public static Drawable getIcon(Context context,String filename){
if (checkEnd(filename, context.getResources().getStringArray(R.array.epubFile))) {
return context.getResources().getDrawable(R.drawable.file_epub);
} else if (checkEnd(filename,
context.getResources().getStringArray(R.array.webFile))) {
return context.getResources().getDrawable(R.drawable.file_html);
} else if (checkEnd(filename,
context.getResources().getStringArray(R.array.txtFile))) {
return context.getResources().getDrawable(R.drawable.file_txt);
} else if (checkEnd(filename,
context.getResources().getStringArray(R.array.mobiFile))) {
return context.getResources().getDrawable(R.drawable.file_mobi);
}
else if (checkEnd(filename,
context.getResources().getStringArray(R.array.oebFile))) {
return context.getResources().getDrawable(R.drawable.file_oeb);
}
else {
return context.getResources().getDrawable(R.drawable.file_icon_default);
}
}
public static String myPercent(int y,int z)
{
String baifenbi="";//接受百分比的值
double baiy=y*1.0;
double baiz=z*1.0;
double fen=baiy/baiz;
//NumberFormat nf = NumberFormat.getPercentInstance(); 注释掉的也是一种方法
//nf.setMinimumFractionDigits( 2 ); 保留到小数点后几位
DecimalFormat df1 = new DecimalFormat("##.00%"); //##.00% 百分比格式,后面不足2位的用0补齐
//baifenbi=nf.format(fen);
baifenbi= df1.format(fen);
return baifenbi;
}
public static boolean isValidFileOrDir(File file) {
if (file.isDirectory()) {
return false;
} else {
String fileName = file.getName().toLowerCase();
if (fileName.endsWith(".txt") || fileName.endsWith(".html")
|| fileName.endsWith(".mobi") || fileName.endsWith(".oeb")
|| fileName.endsWith(".epub") || fileName.endsWith(".fb2")) {
return true;
}
}
return false;
}
public static boolean isValidZFileOrDir(ZLFile file) {
if (file.isDirectory()) {
return false;
} else {
String fileName = file.getShortName().toLowerCase();
if (fileName.endsWith(".txt") || fileName.endsWith(".html")
|| fileName.endsWith(".mobi") || fileName.endsWith(".oeb")
|| fileName.endsWith(".epub") || fileName.endsWith(".fb2")) {
return true;
}
}
return false;
}
public static String returnSuffix(String fileName) {
if (fileName.lastIndexOf(".") > 0) {
String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
return fileSuffix;
}
return null;
}
public static String returnName(String fileName) {
if (fileName.indexOf(".") > 0) {
String name = fileName.substring(fileName.indexOf("."));
return name;
}
return null;
}
public static Bitmap getCover(Activity activity,org.geometerplus.fbreader.book.Book book){
final DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
final int maxHeight = metrics.heightPixels * 2 / 6;
final int maxWidth = maxHeight * 2 / 6;
final ZLImage image = BookUtil.getCover(book);
if (image == null) {
return null;
}
if (image instanceof ZLLoadableImage) {
final ZLLoadableImage loadableImage = (ZLLoadableImage)image;
if (!loadableImage.isSynchronized()) {
loadableImage.synchronize();
}
}
final ZLAndroidImageData data =
((ZLAndroidImageManager)ZLAndroidImageManager.Instance()).getImageData(image);
if (data == null) {
return null;
}
final Bitmap coverBitmap = data.getBitmap(2 * maxWidth, 2 * maxHeight);
if (coverBitmap == null) {
return null;
}
return coverBitmap;
}
}