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

Android 查看可用存储内存大小

 
阅读更多
下面为查看可用存储内存大小的示例,用于查看和内部和外部存储器的总存储。
import java.io.File;   
  
import android.os.Environment;   
import android.os.StatFs;   
  
public class MemoryStatus {   
  
    static final int ERROR = -1;   
       
    static public boolean externalMemoryAvailable() {   
        return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);   
    }   
       
    static public long getAvailableInternalMemorySize() {   
        File path = Environment.getDataDirectory();   
        StatFs stat = new StatFs(path.getPath());   
        long blockSize = stat.getBlockSize();   
        long availableBlocks = stat.getAvailableBlocks();   
        return availableBlocks * blockSize;   
    }   
       
    static public long getTotalInternalMemorySize() {   
        File path = Environment.getDataDirectory();   
        StatFs stat = new StatFs(path.getPath());   
        long blockSize = stat.getBlockSize();   
        long totalBlocks = stat.getBlockCount();   
        return totalBlocks * blockSize;   
    }   
       
    static public long getAvailableExternalMemorySize() {   
        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;   
        }   
    }   
       
    static public 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;   
        }   
    }   
       
    static public String formatSize(long size) {   
        String suffix = null;   
       
        if (size >= 1024) {   
            suffix = "KiB";   
            size /= 1024;   
            if (size >= 1024) {   
                suffix = "MiB";   
                size /= 1024;   
            }   
        }   
       
        StringBuilder resultBuffer = new StringBuilder(Long.toString(size));   
       
        int commaOffset = resultBuffer.length() - 3;   
        while (commaOffset > 0) {   
            resultBuffer.insert(commaOffset, ',');   
            commaOffset -= 3;   
        }   
       
        if (suffix != null)   
            resultBuffer.append(suffix);   
        return resultBuffer.toString();   
    }   
}  


来个更简单的
        private void update() {
        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();
        long availableBlocks = stat.getAvailableBlocks();
        mTotalSize.setText(formatSize(totalBlocks * blockSize));
        mUsedSize.setText(formatSize((totalBlocks - availableBlocks) * blockSize));
        mAvailableSize.setText(formatSize(availableBlocks * blockSize));
	}
	
    private String formatSize(long size) {
        return Formatter.formatFileSize(this, size);
    }
分享到:
评论

相关推荐

    android平台存储容量大小更改

    在Android平台上,存储容量的管理是一项关键任务,尤其是在设备内存有限的情况下。本示例主要关注如何在H6平台上实现Flash存储容量的翻倍,而这一技术同样适用于其他平台,尽管可能需要进行相应的验证。让我们深入...

    Unity调用Android查看内存信息2

    本文将深入探讨如何利用Unity调用Android原生API来查看内存信息,包括FPS(帧率)、系统总内存、系统可用内存以及Unity应用自身所占用的内存。这对于监控和优化游戏性能至关重要。 首先,我们关注的是"Unity调用...

    Android获取当前应用分配的最大内存和目前使用内存的方法

    Android 原生系统一般默认16M,但是国内手机一般都是特殊定制的,都有修改系统的内存大小,所有有时候,要查看具体应用系统分配的内存大小,还是需要实际去测试的, 测试方法如下: 方式一: ActivityManager ...

    Android获取系统储存以及内存信息的方法(二)

    Android获取储存信息以及内存信息可以用adb命令查看。 adb查看系统内存信息以及储存信息: 命令:adb shell cat /proc/meminfo 代码: private static final String FILENAME_PROC_MEMINFO = /proc/meminfo; /*...

    android获取手机内存大小

    在Android平台上,获取手机内存大小是一项常见的需求,无论是为了优化应用程序性能、监控设备资源使用情况,还是为了提供用户关于设备状态的信息。以下是一份详细的指南,涵盖了如何在Android中获取内存信息。 首先...

    android 读取外置和内置存储卡路径和大小

    在Android系统中,读取外置和内置存储卡的路径以及获取它们的大小是常见的需求,尤其是在处理多媒体文件或者管理应用程序数据时。本教程将详细解释如何实现这一功能。 首先,我们要了解Android对存储卡的分类。在...

    android4.4修改上报系统显示ddr容量大小

    为了使系统显示2GB的DDR容量,开发者可能在这部分代码中进行了修改,例如,可能人为地将总内存容量翻倍,或者修改了与内存大小相关的变量。 同时,`ddr.h`可能是内核中的一个头文件,包含了DDR内存的相关定义和...

    android 获取手机内存及 内存可用空间的方法

    本文将详细介绍如何在Android平台上获取手机内存的总大小以及可用空间。 首先,Android系统提供了一个名为`StatFs`的类,该类用于获取文件系统的统计信息,包括总块数、自由块数以及可分配块数等。这些信息可以帮助...

    android获取SDcard内存空间

    总结一下,本篇内容涵盖了Android获取SD卡内存空间的基本方法,包括获取存储状态、总空间、可用空间和已用空间,以及如何处理不同的Android版本和权限问题。这些知识对于任何涉及存储管理的Android应用都是必不可少...

    针对Android应用中Gallery内存溢出的解决方案.pdf

    1. **图片资源占用大**:高分辨率图片文件大小通常较大,如果一次性加载所有图片到内存,即使是在高端设备上也可能耗尽可用内存。 2. **网络请求频繁**:如果图片资源存储在网络服务器上,每次切换图片都需要重新...

    java内存模型的介绍和说明

    内存泄漏是指程序在运行过程中未正确释放不再使用的内存资源,导致可用内存逐渐减少的现象。在Java中,常见的内存泄漏类型包括但不限于: - **对象不再使用但仍然被引用**:例如,将一个对象添加到集合中后忘记移除...

    SDCard内存大小统计

    总的来说,统计SDCard的内存大小是Android开发中的常见任务,涉及到对文件系统的操作和对Android系统API的理解。通过正确的方法,我们可以轻松获取并管理设备的存储信息,为用户提供更好的存储管理体验。

    获取硬件内存和CPU

    本文将详细介绍如何在Android平台上查询手机的硬件内存大小以及CPU的核心数等关键信息。 首先,我们要明白内存(Memory)通常指的是RAM(Random Access Memory),它是设备运行应用程序时临时存储数据的地方。而CPU...

    Android之获取手机内部及sdcard存储空间的方法

    在Android应用开发中,了解如何获取手机内部存储和SD卡(外部存储)的可用空间是非常重要的。这不仅可以帮助开发者确保应用程序能正常运行,避免因存储空间不足导致的问题,还可以优化用户体验,合理分配资源。以下...

    android内存的溢出和泄漏问题

    这些信息表明,垃圾收集器释放了7KB的内存,堆内存剩余18%,总大小为13511KB,外部内存使用1632KB,总大小为1672KB,整个GC过程暂停了89毫秒。 因此,Android开发者必须密切关注内存管理,通过合理使用convertView...

    Android开发实现的获取sdcard大小及内存大小工具类

    本文将详细解析如何通过编写工具类来获取SD卡(外部存储)和手机内存(内部存储)的大小信息。我们将分析提供的`SDCardUtil`类,并解释其中的关键代码和相关API。 首先,`SDCardUtil`类包含两个静态方法:`...

    android开发教程之用命令启动android模拟器并设置其内存大小

    在Android开发过程中,有时我们需要通过命令行来启动Android模拟器,并对其进行特定的配置,比如调整内存大小。这对于自动化测试或批量操作来说非常有用。本文将详细介绍如何使用命令行启动Android模拟器并设置其...

    安卓Android源码——防止内存溢出浅析.zip

    Android内存分为堆内存和栈内存,Java对象主要存储在堆中,而局部变量和方法信息存储在栈中。内存溢出通常发生在堆内存,当分配给应用的堆内存不足以创建新的对象时,就会发生溢出。 1. **对象生命周期与引用管理**...

    android 内存 调试

    - **Memtotal**:表示系统总物理内存大小。 - **Free**:当前未被任何进程使用的内存。 - **Cached**:由内核用于缓存的内存,这部分内存并不占用应用的可用内存,当有进程需要更多内存时,内核会立即释放这些缓存。...

    【android】android之内存泄漏

    - 使用缓存时,如果没有设置合适的过期策略或限制大小,也可能导致内存泄漏。 #### 五、垃圾回收机制 垃圾回收(GC)是一种自动管理内存的技术,它可以定期清理不再被引用的对象。GC通过追踪根对象(root objects)来...

Global site tag (gtag.js) - Google Analytics