編輯:關於android開發
ublic class MemorySpaceCheck {
/**
* 計算剩余空間
* @param path
* @return
*/
public static String getAvailableSize(String path)
{
StatFs fileStats = new StatFs(path);
fileStats.restat(path);
return String.valueOf(fileStats.getAvailableBlocks() * fileStats.getBlockSize()); // 注意與fileStats.getFreeBlocks()的區別
// return getPrintSize((long) fileStats.getFreeBlocks() * fileStats.getFreeBlocks()); // 注意與fileStats.getFreeBlocks()的區別
}
/**
* 跟上面的方法含義一樣,返回值和方法名不同
* @param path
* @return
*/
public static double getAvailableSizes(String path)
{
StatFs fileStats = new StatFs(path);
fileStats.restat(path);
return Double.valueOf(fileStats.getAvailableBlocks() * fileStats.getBlockSize()); // 注意與fileStats.getFreeBlocks()的區別
// return getPrintSize((long) fileStats.getFreeBlocks() * fileStats.getFreeBlocks()); // 注意與fileStats.getFreeBlocks()的區別
}
/**
* 計算總空間
* @param path
* @return
*/
public static String getTotalSize(String path)
{
StatFs fileStats = new StatFs(path);
fileStats.restat(path);
return String.valueOf(fileStats.getBlockCount() * fileStats.getBlockSize());
}
/**
* 計算SD卡的剩余空間
* @return 剩余空間
*/
public static String getSDAvailableSize()
{
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
return getAvailableSize(Environment.getExternalStorageDirectory().toString());
}
return null;
}
/**
* 計算系統的剩余空間
* @return 剩余空間
*/
public static String getSystemAvailableSize()
{
// context.getFilesDir().getAbsolutePath();
return getAvailableSize("/data");
}
/**
* 是否有足夠的空間
* @param filePath 文件路徑,不是目錄的路徑
* @return
*/
public static boolean hasEnoughMemory(String filePath)
{
File file = new File(filePath);
long length = file.length();
if (filePath.startsWith("/sdcard") || filePath.startsWith("/mnt/sdcard"))
{
return Integer.parseInt(getSDAvailableSize()) > length;
}
else
{
return Integer.parseInt(getSystemAvailableSize()) > length;
}
}
/**
* 獲取SD卡的總空間
* @return
*/
public static String getSDTotalSize()
{
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
return getTotalSize(Environment.getExternalStorageDirectory().toString());
}
return null;
}
/**
* 獲取系統可讀寫的總空間
* @return
*/
public static String getSysTotalSize()
{
return getTotalSize("/data");
}
/**
* 格式化單位
* 轉換為B,GB等等
* @param size
* @return
*/
public static String getFormatSize(double size) {
double kiloByte = size / 1024;
if (kiloByte < 1) {
return size + "Byte";
}
double megaByte = kiloByte / 1024;
if (megaByte < 1) {
BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));
return result1.setScale(1, BigDecimal.ROUND_HALF_UP)
.toPlainString() + "KB";
}
double gigaByte = megaByte / 1024;
if (gigaByte < 1) {
BigDecimal result2 = new BigDecimal(Double.toString(megaByte));
return result2.setScale(1, BigDecimal.ROUND_HALF_UP)
.toPlainString() + "MB";
}
double teraBytes = gigaByte / 1024;
if (teraBytes < 1) {
BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));
return result3.setScale(1, BigDecimal.ROUND_HALF_UP)
.toPlainString() + "GB";
}
BigDecimal result4 = new BigDecimal(teraBytes);
return result4.setScale(1, BigDecimal.ROUND_HALF_UP).toPlainString()
+ "TB";
}
Android 斷點續傳,android斷點續傳斷點續傳指的是在下載或上傳時,將下載或上傳任務(一個文件或一個壓縮包)人為的劃分為幾個部分,每一個部分采用一個線程進行上傳
《app研發錄》第一章 重構,夜未眠筆記,ipd重構產品研發1.1 重新規劃android的項目結構 重新規劃android的目錄結構分兩步:
關於TCP MSS的內核設置下面是一個MSS交互的例子,在三次握手的過程中兩個主機捎帶了不同的MSS值,192.168.189.22接口的MTU值為1500,192.16
Android—基於微信開放平台v3SDK,開發微信支付填坑。,androidv3sdk接觸微信支付之前聽說過這是一個坑,,,心裡已經有了准備。。。我以為我沒准跳坑出不來