『壹』 android中如何獲得外置sd卡的路徑和手機自身內存的路徑
你問的編碼?
原文:http://blog.163.com/hero_213/blog/static/39891214201162123236660/
轉載非原創。
該代碼片段可以讓我們獲取internal和external的存儲空間大小。
import java.io.File;
import android.os.Environment;
import android.os.StatFs;
public class StorageUtil {
private static final int ERROR = -1;
/**
* SDCARD是否存
*/
public static boolean externalMemoryAvailable() {
return android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED);
}
/**
* 獲取手機內部剩餘存儲空間
* @return
*/
public static long () {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
/**
* 獲取手機內部總的存儲空間
* @return
*/
public static long getTotalInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
/**
* 獲取SDCARD剩餘存儲空間
* @return
*/
public static long () {
if (externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
} else {
return ERROR;
}
}
/**
* 獲取SDCARD總的存儲空間
* @return
*/
public static long getTotalExternalMemorySize() {
if (externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
} else {
return ERROR;
}
}
}
1.硬體上的 block size, 應該是"sector size",linux的扇區大小是512byte
2.有文件系統的分區的block size, 是"block size",大小不一,可以用工具查看
3.沒有文件系統的分區的block size,也叫「block size」,大小指的是1024 byte
4.Kernel buffer cache 的block size, 就是"block size",大部分PC是1024
5.磁碟分區的"cylinder size",用fdisk 可以查看。
我們這里的block size是第二種情況,一般SD卡都是fat32的文件系統,block size是4096.
這樣就可以知道手機的內部存儲空間和sd卡存儲空間的總大小和可用大小了。
『貳』 在android怎麼獲取外置的sd卡容量
/**
* 獲得SD卡總大小
*
* @return
*/
private String getSDTotalSize() {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return Formatter.formatFileSize(MainActivity.this, blockSize * totalBlocks);
}
/**
* 獲得sd卡剩餘容量,即可用大小
*
* @return
*/
private String getSDAvailableSize() {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return Formatter.formatFileSize(MainActivity.this, blockSize * availableBlocks);
}
/**
* 獲得機身內存總大小
*
* @return
*/
private String getRomTotalSize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return Formatter.formatFileSize(MainActivity.this, blockSize * totalBlocks);
}
/**
* 獲得機身可用內存
*
* @return
*/
private String getRomAvailableSize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return Formatter.formatFileSize(MainActivity.this, blockSize * availableBlocks);
}
『叄』 獲取android手機的自帶存儲路徑和sdcard存儲路徑
android手機獲取自帶存儲路徑和sd卡存儲路徑的方式是:
調用Environment.getExternalStorageDirectory,返回的存儲目錄並不是系統內置的SD卡目錄。
1、手機將eMC存儲掛載到 /mnt/external_sd 、/mnt/sdcard2 等節點,而將外置的SD卡掛載到 Environment.getExternalStorgeDirectory這個結點。
Android在正式發行之前,最開始擁有兩個內部測試版本,並且以著名的機器人名稱來對其進行命名,它們分別是:阿童木(AndroidBeta),發條機器人(Android 1.0)。後來由於涉及到版權問題,谷歌將其命名規則變更為用甜點作為它們系統版本的代號的命名方法。
Android的系統架構和其操作系統一樣,採用了分層的架構。從架構圖看,Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux內核層。
『肆』 android 判斷手機中是否有SD卡,USB.靜態判斷,androidsd
Android 判斷SD卡是否存在及容量查詢的簡單方法如下:
要在AndroidManifest.xml中增加SD卡訪問許可權
<!-- 在SDCard中創建與刪除文件許可權 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard寫入數據許可權 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
調用java代碼
private boolean ExistSDCard() {
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED)) {
return true;
} else
return false;
} 返回true 表示可用,false表示不可用
3.查看SD卡的剩餘空間
public long getSDFreeSize(){
//取得SD卡文件路徑
File path = Environment.getExternalStorageDirectory();
StatFs sf = new StatFs(path.getPath());
//獲取單個數據塊的大小(Byte)
long blockSize = sf.getBlockSize();
//空閑的數據塊的數量
long freeBlocks = sf.getAvailableBlocks();
//返回SD卡空閑大小
//return freeBlocks * blockSize; //單位Byte
//return (freeBlocks * blockSize)/1024; //單位KB
return (freeBlocks * blockSize)/1024 /1024; //單位MB
}
4.查看SD卡總容量
public long getSDAllSize(){
//取得SD卡文件路徑
File path = Environment.getExternalStorageDirectory();
StatFs sf = new StatFs(path.getPath());
//獲取單個數據塊的大小(Byte)
long blockSize = sf.getBlockSize();
//獲取所有數據塊數
long allBlocks = sf.getBlockCount();
//返回SD卡大小
//return allBlocks * blockSize; //單位Byte
//return (allBlocks * blockSize)/1024; //單位KB
return (allBlocks * blockSize)/1024/1024; //單位MB
}
『伍』 android手機系統存儲,如何得到SD卡和內部存
若將手機中的文件與外置SD卡互相轉移,請操作:
1.若將話機中的多媒體文件移動到SD卡中:我的文件-設備存儲-查找需要移動的文件夾-更多-編輯-選擇需要移動的文件-移動至,返回到external_sd-點擊移動到此處即可。反之亦然。
2.部分手機支持將軟體移動到SD卡中,操作:設置-應用程序-應用程序管理器-打開某個軟體-存儲-選擇已使用的存儲空間-更改-選擇SD卡(或設置-更多-應用程序管理器-選中某個程序-移動到SD卡)。
溫馨提示:不是所有的程序均可移至到SD卡,具體根據所下載的軟體決定。
『陸』 android 怎麼讀取手機sd卡空間大小
首先需要大家了解一下關於SDCard的基礎知識。
SDCard文件系統的信息有:存儲塊大小,總的存儲塊數量,可用存儲塊數量
存儲設備(這里特指SDCard)會被分為若干個區塊,每個區塊都有一個最小的單位。例如:Windows操作系統的區塊最小單位就是4個位元組的。也就是說,如果你的文件不足4位元組,也會佔用4位元組的硬碟空間。
下面還需要理解兩條計算公式
每個區塊的大小 * 區塊總數 = 存儲設備的總大小
每個區塊的大小 * 可用區塊的數量 = 存儲設備可用大小
下面開始編程:
首先創建安卓項目,在主activity中添加以下代碼(代碼中有詳細注釋):
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 得到文件系統的信息:存儲塊大小,總的存儲塊數量,可用存儲塊數量
// 獲取sd卡空間
// 存儲設備會被分為若干個區塊
// 每個區塊的大小 * 區塊總數 = 存儲設備的總大小
// 每個區塊的大小 * 可用區塊的數量 = 存儲設備可用大小
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize;
long totalBlocks;
long availableBlocks;
// 由於API18(Android4.3)以後getBlockSize過時並且改為了getBlockSizeLong
// 因此這里需要根據版本號來使用那一套API
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2)
{
blockSize = stat.getBlockSizeLong();
totalBlocks = stat.getBlockCountLong();
availableBlocks = stat.getAvailableBlocksLong();
}
else
{
blockSize = stat.getBlockSize();
totalBlocks = stat.getBlockCount();
availableBlocks = stat.getAvailableBlocks();
}
// 利用formatSize函數把位元組轉換為用戶等看懂的大小數值單位
TextView tv_total = (TextView) findViewById(R.id.tv_total);
TextView tv_available = (TextView) findViewById(R.id.tv_available);
String totalText = formatSize(blockSize * totalBlocks);
String availableText = formatSize(blockSize * availableBlocks);
tv_total.setText("SDCard總大小:\n" + totalText);
tv_available.setText("SDCard可用空間大小:\n" + availableText);
}
//封裝Formatter.formatFileSize方法,具體可以參考安卓的API
private String formatSize(long size)
{
return Formatter.formatFileSize(this, size);
}
『柒』 安卓獲取剩餘空間需要同步么
需要
SD卡作為手機的擴展存儲設備,在手機中充當硬碟角色,可以讓我們手機存放更多的數據以及多媒體等大體積文件。android下的StatFs類主要用來獲取文件系統的狀態,能夠獲取sd卡的大小和剩餘空間,獲取系統內部空間也就是系統的大小和剩餘空間等等。
磁碟空間管理的主要目的是了解磁碟存儲空間的使用情況,包括系統當前已經使用的空間、可用的空閑空間、現有的文件數量、空閑的信息節點。
『捌』 Android開發怎麼獲取外置SD卡
Android手機上的外置SD卡,起初的時候,即在Android出世的前幾年,那時手機的存儲是十分有限的,不像現在到處可見16G、32G和64G的存儲,因而那時候的手機有的廠商允許插入外置的SD卡,此時這張卡仍處於手機的擴展部分。後來,隨著手機的發展以及存儲能力的增加,這張外置SD卡,逐漸成為了手機的一部分,不再允許可挺拔了,當然現在依然有的手機允許對存儲進行拓展,比如三星等。
那張拓展的存儲卡,現在叫做TF卡,且不是所有的手機都支持它,但是有時候有些奇葩需求偏要優先存儲在TF卡裡面,這叫不得不要求開發人員去檢查這張卡是否存在、是否可用。又因為這是手機廠商可拓展、可自定義的部分,所有不同廠商生產的手機,以及同一廠商生產的不同型號的手機,TF卡的位置都相差很大,並沒有一個統一的名稱或位置。因而這是比較困難的一部分,但是還好Android是開源的,我們可以通過運行時來判斷手機是否有TF卡,以及TF卡是否可用。
『玖』 安卓手機怎樣查看擴容sd卡的真實容量
一,從外觀上識別。擴容TF卡原來卡上的標示會被刮掉再噴上別的,表面比較粗糙,用指甲很容易刮掉上面的字。
二,存文件識別。把一個大小接近你測試的TF標示最大容量的壓縮文件(在電腦上能正常解壓的)或影音文件(在電腦上能正常播放的)拷進你要測試的TF卡內,再從卡里拷到電腦上。如果能正常解壓活播放,那測試卡不是擴容卡。如果提示文件損壞不能解壓或播放,那測試卡便是擴容卡了。
三,軟體測試。MyDiskTest是一款集5大功能於一身的U盤擴容檢測工具,有擴容檢測、壞塊掃描、速度測試、老化測試、壞塊屏蔽的功能。可以方便的檢測出存儲產品是否經過擴充容量。
『拾』 Android手機支持的SD卡的最大容量是根據什麼決定的
有以下幾種情況 1.手機限制的最大SD卡容量是4G/8G之類的,那麼有可能不是硬體限制,因為硬體限制一般不會卡在4G/8G/16G這種尺寸上。 2. 手機限制的最大SD卡容量是32G,那麼很有可能是因為手機本身硬體只支持SD2.0,那麼這種情況就無能為力了。 3.手機限制的最大SD卡容量是64G/128G/256G這些,那麼可能也只是軟體上的限制。 綜上所訴,限制可能是軟體也可能是硬體,對於軟體的限制,可以通過root等手段把分區格式化成ext、ntfs來解決,但如果是硬體限制,那就毫無辦法了。