导航:首页 > 操作系统 > android获取sd卡大小

android获取sd卡大小

发布时间:2022-05-11 04:51:13

‘壹’ 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这个结点。

(3)android获取sd卡大小扩展阅读:

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来解决,但如果是硬件限制,那就毫无办法了。

阅读全文

与android获取sd卡大小相关的资料

热点内容
单片机控制的大一点的车 浏览:636
程序员中的荣誉 浏览:270
java的封装性 浏览:385
命令提示符垃圾清理 浏览:803
javachar1 浏览:1001
lcd单片机投影仪用久了会发黄 浏览:751
王者荣耀游戏内进攻主宰命令 浏览:215
周立功单片机发展有限公司 浏览:612
iphone未成年怎么付款app 浏览:988
苹果app是英文怎么改 浏览:837
51单片机485通信 浏览:270
符咒全书pdf 浏览:565
海底捞app签到怎么弄不成了 浏览:862
安卓php服务器搭建 浏览:259
京东直营网挣用什么APP 浏览:825
杰克豆车机怎么安装app 浏览:32
app查余额怎么有两个金额 浏览:305
小程序仿今日头条源码 浏览:277
框架源码研读 浏览:447
仙侣奇缘3如何架设服务器 浏览:954