package com.yang.sdcard;
import java.io.File;
import java.text.DecimalFormat;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class SdcardActivity extends Activity {
private Button myButton, myButton2;
private TextView myTextView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myButton = (Button) findViewById(R.id.myButton);
myButton2 = (Button) findViewById(R.id.myButton2);
myTextView = (TextView) findViewById(R.id.myTextView);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String[] total = fileSize(getTotalExternalMemorySize());
String[] available = fileSize(getAvailableExternalMemorySize());
String text = "总共" + total[0] + total[1] + "\n";
text += "可用" + available[0] + available[1];
myTextView.setText(text);
}
});
myButton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String[] total = fileSize(getTotalInternalMemorySize());
String[] available = fileSize(getAvailableInternalMemorySize());
String text = "总共" + total[0] + total[1] + "\n";
text += "可用" + available[0] + available[1];
myTextView.setText(text);
}
});
}
// 这个是手机内存的总空间大小
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;
}
// 这个是手机内存的可用空间大小
public static long getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
// 这个是外部存储的总空间大小
public static long getAvailableExternalMemorySize() {
long availableExternalMemorySize = 0;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
availableExternalMemorySize = availableBlocks * blockSize;
}else if (Environment.getExternalStorageState().equals(
Environment.MEDIA_REMOVED)) {
availableExternalMemorySize = -1;
}
return availableExternalMemorySize;
}
// 这个是外部存储的总空间大小
public static long getTotalExternalMemorySize() {
long totalExternalMemorySize = 0;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
totalExternalMemorySize = totalBlocks * blockSize;
} else if (Environment.getExternalStorageState().equals(
Environment.MEDIA_REMOVED)) {
totalExternalMemorySize = -1;
}
return totalExternalMemorySize;
}
/* 返回为字符串数组[0]为大小[1]为单位KB或MB */
private String[] fileSize(long size) {
String str = "";
if (size >= 1024) {
str = "KB";
size /= 1024;
if (size >= 1024) {
str = "MB";
size /= 1024;
}
}
DecimalFormat formatter = new DecimalFormat();
/* 每3个数字用,分隔如:1,000 */
formatter.setGroupingSize(3);
String result[] = new String[2];
result[0] = formatter.format(size);
result[1] = str;
return result;
}
}
分享到:
相关推荐
标题提到的“安卓录像源码,带可预览,视频存入sdcard,亲测可用”是针对这一需求提供的一种解决方案。这个源码允许用户通过简单的开始和停止按钮来录制视频,并且支持在预览模式下查看拍摄效果,录制完成后将视频...
SDCard存储卡在 Android 手机上是可以随时插拔的,每次的动作都会引起Android系统ACTION_BROADCAST,本例子将计算出 SDCard 的剩余容量和总容量。供测试的sd卡中存了两首歌和一个30M的文件,现在检测剩余的空间正好...
在Android中,外部存储通常用于存储大文件或需要共享的数据,因为内部存储空间有限。以下是一些可能包含在`SDCardHelper`中的关键功能和知识点: 1. **权限检查**:由于Android 6.0(API级别23)引入了运行时权限,...
2. **环境检查**:在写入或读取SDCard前,需要检查设备是否支持SDCard以及是否有可用的外部存储空间。 ```java Environment.getExternalStorageState() ``` 3. **获取SDCard路径**:你可以通过`...
通过MediaCodec,Mi-SoundRecorder可以将采集到的原始音频数据高效地编码成AAC流,从而减小文件大小,节省存储空间。 在文件存储方面,Mi-SoundRecorder通常会将录制的音频文件保存在设备的外部存储目录下,如“/...
在Android开发中,SD卡(Secure Digital Card)的使用是一个重要的环节,因为它为应用程序提供了额外的存储空间。本文将深入探讨如何在Android中操作SD卡,包括读写文件、检查SD卡状态以及处理权限问题。 首先,...
一些工具类代码块的标准代码,包括但不限于: 删除方法, 这里只会删除某个文件夹下的文件,...获取可用手机内容容量大小 在SdCard中创建文件 在SdCard中创建目录 检查文件路径是否存在 写入文件 根据地址获取InputStream
内部存储是设备内置的存储空间,用户无法轻易访问;外部存储通常是可移除的SD卡或手机内置的模拟SD卡,用户可以自由读写。在Android系统中,保存到外部存储通常需要`WRITE_EXTERNAL_STORAGE`权限。 在Android应用中...
内部存储可用空间有限,但数据安全性较高。 - **外部存储**:通常指SD卡,所有应用都可以访问。分为公共和私有两类,公共目录(如/Media/DCIM)允许任何应用读写,而私有目录仅限应用自身访问。 4. **SQLite数据库...
- **用途**: 为模拟器或设备分配外部存储空间。 7. **AVD(模拟器)所在位置** - **Linux**: `~/.android/avd` - **Windows**: `C:\Documents and Settings\Administrator\.android\avd` - **功能**: 指出AVD配置...
在Android系统中,SD卡(Secure Digital Card)是设备扩展存储空间的重要途径,它为用户提供了存放媒体文件、应用程序数据和其他文件的额外空间。本文将深入探讨如何在Android开发中有效地利用SD卡,并涵盖以下几个...
1. **系统升级**:当新的系统更新可用时,Recovery可以执行OTA(Over-The-Air)升级,通过安装ZIP格式的更新包来升级系统。这个过程通常在设备关机或重启时自动进行,用户只需按照提示操作即可。 2. **系统恢复**:...
在某些情况下,开发者可能会选择将U-boot和/或Linux内核同时存储在NAND闪存中,以备在SD卡不可用时作为备用启动方式。 "Linux"标签明确了系统中使用了Linux操作系统,这通常是嵌入式和物联网设备的首选,因为它提供...