设为首页 加入收藏

TOP

Android media媒体库分析之:分类别统计媒体文件大小(二)
2015-04-07 15:30:18 来源: 作者: 【 】 浏览:100
Tags:Android media 媒体 分析 类别 统计 媒体文件 大小
field.
? ? */
? ? public int getBlockCount() {
? ? ? ? return (int) mStat.f_blocks;
? ? }


这个可以直接在我们获取总体容量时使用。


上面把系统是怎么做的大概搞清楚,下面我们来实现我们的需求:


3、下面时我实现的工具类,希望对你有用:


package com.linuxidc.jerome;


import java.io.File;
import java.util.ArrayList;


import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Environment;
import android.os.StatFs;
import android.provider.MediaStore;


public class MemoryUtil {
?Context mContext;


?public MemoryUtil(Context context) {
? mContext = context;
?}


?/**
? * 获得SD卡总大小
? *
? * @return
? */
?public long getSDTotalSize() {
? File path = Environment.getExternalStorageDirectory();
? StatFs stat = new StatFs(path.getPath());
? long blockSize = stat.getBlockSize();
? long totalBlocks = stat.getBlockCount();
? return blockSize * totalBlocks;
?}


?/**
? * 获得sd卡剩余容量,即可用大小
? *
? * @return
? */
?public long getSDAvailableSize() {
? File path = Environment.getExternalStorageDirectory();
? StatFs stat = new StatFs(path.getPath());
? long blockSize = stat.getBlockSize();
? long availableBlocks = stat.getAvailableBlocks();
? return blockSize * availableBlocks;
?}


?/**
? * 获得机身内存总大小
? *
? * @return
? */
?public long getRomTotalSize() {
? File path = Environment.getDataDirectory();
? StatFs stat = new StatFs(path.getPath());
? long blockSize = stat.getBlockSize();
? long totalBlocks = stat.getBlockCount();
? return blockSize * totalBlocks;
?}


?/**
? * 获得机身可用内存
? *
? * @return
? */
?public long getRomAvailableSize() {
? File path = Environment.getDataDirectory();
? StatFs stat = new StatFs(path.getPath());
? long blockSize = stat.getBlockSize();
? long availableBlocks = stat.getAvailableBlocks();
? return blockSize * availableBlocks;
?}


?/**
? * 外部存储中所有音频文件所占内存
? *
? * @return
? */
?public long getAudioTotalSize() {
? ArrayList resultList = queryAllMediaList(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
? long size = 0L;
? for (MemoryInfo cInfo : resultList) {
? ?File file = new File(cInfo.getFilePath());
? ?if(null!=file &&file.exists()){
? ? size += cInfo.getFileSize();
? ?}
? }
? return size;
?}


?/**
? * 外部存储中除音频、视频、图片之前其他文件所占内存
? *
? * @return
? */
?public long getOtherTotalSize() {
? long size = getSDTotalSize() - getSDAvailableSize()
? ? - getPictureTotalSize() - getVideoTotalSize()
? ? - getAudioTotalSize();
? if (size < 0L) {
? ?size = 0L;
? }
? return size;
?}


?/**
? * 外部存储中所有图片文件所占内存
? *
? * @return
? */
?public long getPictureTotalSize() {
? ArrayList resultList = queryAllMediaList(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
? long size = 0L;
? for (MemoryInfo cInfo : resultList) {
? ?File file = new File(cInfo.getFilePath());
? ?if(null!=file &&file.exists()){
? ? size += cInfo.getFileSize();
? ?}
? }
? return size;
?}


?/**
? * 外部存储中所有视频文件所占内存
? *
? * @return
? */
?public long getVideoTotalSize() {
? ArrayList resultList = queryAllMediaList(MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
? long size = 0L;
? for (MemoryInfo cInfo : resultList) {
? ?File file = new File(cInfo.getFilePath());
? ?if(null!=file &&file.exists()){
? ? size += cInfo.getFileSize();
? ?}
? }
? return size;
?}


?public ArrayList queryAllMediaList(Uri uri) {
? //我们只需要两个字段:大小、文件路径
? Cursor cursor = mContext.getContentResolver().query(
? ? uri,new String[] { MediaStore.Audio.Media.SIZE,
? ? ? MediaStore.Audio.Media.DATA }, null, null, null);


? ArrayList musicList = new ArrayList();
?
? try{
? ?if (cursor.moveToFirst()) {
? ? do {
? ? ?MemoryInfo mInfo = new MemoryInfo();
? ? ?mInfo.setFileSize(

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android中单击空白区域隐藏键盘 下一篇Android media媒体库分析之:Medi..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: