`
yangguangfu
  • 浏览: 1539788 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

得SDCard,手机,存储空间,可用空间(付源码)

阅读更多
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 解析如何检测获取SDCard内存剩余空间.rar

    SDCard存储卡在 Android 手机上是可以随时插拔的,每次的动作都会引起Android系统ACTION_BROADCAST,本例子将计算出 SDCard 的剩余容量和总容量。供测试的sd卡中存了两首歌和一个30M的文件,现在检测剩余的空间正好...

    android文件存储源码及笔记

    在Android中,外部存储通常用于存储大文件或需要共享的数据,因为内部存储空间有限。以下是一些可能包含在`SDCardHelper`中的关键功能和知识点: 1. **权限检查**:由于Android 6.0(API级别23)引入了运行时权限,...

    Android应用源码SdCard读写文件实例-IT计算机-毕业设计.zip

    2. **环境检查**:在写入或读取SDCard前,需要检查设备是否支持SDCard以及是否有可用的外部存储空间。 ```java Environment.getExternalStorageState() ``` 3. **获取SDCard路径**:你可以通过`...

    android Mi-SoundRecorder源码.rar

    通过MediaCodec,Mi-SoundRecorder可以将采集到的原始音频数据高效地编码成AAC流,从而减小文件大小,节省存储空间。 在文件存储方面,Mi-SoundRecorder通常会将录制的音频文件保存在设备的外部存储目录下,如“/...

    Android 开发之 SD卡的使用源码.rar

    在Android开发中,SD卡(Secure Digital Card)的使用是一个重要的环节,因为它为应用程序提供了额外的存储空间。本文将深入探讨如何在Android中操作SD卡,包括读写文件、检查SD卡状态以及处理权限问题。 首先,...

    java_App应用文件管理工具标准代码工具类_android

    一些工具类代码块的标准代码,包括但不限于: 删除方法, 这里只会删除某个文件夹下的文件,...获取可用手机内容容量大小 在SdCard中创建文件 在SdCard中创建目录 检查文件路径是否存在 写入文件 根据地址获取InputStream

    下载图片并保存到SD卡中

    内部存储是设备内置的存储空间,用户无法轻易访问;外部存储通常是可移除的SD卡或手机内置的模拟SD卡,用户可以自由读写。在Android系统中,保存到外部存储通常需要`WRITE_EXTERNAL_STORAGE`权限。 在Android应用中...

    安卓文件系统

    内部存储可用空间有限,但数据安全性较高。 - **外部存储**:通常指SD卡,所有应用都可以访问。分为公共和私有两类,公共目录(如/Media/DCIM)允许任何应用读写,而私有目录仅限应用自身访问。 4. **SQLite数据库...

    androidadbshell命令大全借鉴.pdf

    - **用途**: 为模拟器或设备分配外部存储空间。 7. **AVD(模拟器)所在位置** - **Linux**: `~/.android/avd` - **Windows**: `C:\Documents and Settings\Administrator\.android\avd` - **功能**: 指出AVD配置...

    开发之 SD卡的使用

    在Android系统中,SD卡(Secure Digital Card)是设备扩展存储空间的重要途径,它为用户提供了存放媒体文件、应用程序数据和其他文件的额外空间。本文将深入探讨如何在Android开发中有效地利用SD卡,并涵盖以下几个...

    android_recovery_介绍,just mark

    1. **系统升级**:当新的系统更新可用时,Recovery可以执行OTA(Over-The-Air)升级,通过安装ZIP格式的更新包来升级系统。这个过程通常在设备关机或重启时自动进行,用户只需按照提示操作即可。 2. **系统恢复**:...

    Bootstarp 3.0(SD card)

    在某些情况下,开发者可能会选择将U-boot和/或Linux内核同时存储在NAND闪存中,以备在SD卡不可用时作为备用启动方式。 "Linux"标签明确了系统中使用了Linux操作系统,这通常是嵌入式和物联网设备的首选,因为它提供...

Global site tag (gtag.js) - Google Analytics