diff options
-rwxr-xr-x | core/java/com/android/internal/app/IMediaContainerService.aidl | 2 | ||||
-rw-r--r-- | packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java | 16 |
2 files changed, 18 insertions, 0 deletions
diff --git a/core/java/com/android/internal/app/IMediaContainerService.aidl b/core/java/com/android/internal/app/IMediaContainerService.aidl index d407080..4322a20 100755 --- a/core/java/com/android/internal/app/IMediaContainerService.aidl +++ b/core/java/com/android/internal/app/IMediaContainerService.aidl @@ -32,4 +32,6 @@ interface IMediaContainerService { boolean checkExternalFreeStorage(in Uri fileUri); ObbInfo getObbInfo(in String filename); long calculateDirectorySize(in String directory); + /** Return file system stats: [0] is total bytes, [1] is available bytes */ + long[] getFileSystemStats(in String path); } diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java index 113f0f7..8e3a3c5 100644 --- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java @@ -50,6 +50,10 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import libcore.io.ErrnoException; +import libcore.io.Libcore; +import libcore.io.StructStatFs; + /* * This service copies a downloaded apk to a file passed in as * a ParcelFileDescriptor or to a newly created container specified @@ -203,6 +207,18 @@ public class DefaultContainerService extends IntentService { return 0L; } } + + @Override + public long[] getFileSystemStats(String path) { + try { + final StructStatFs stat = Libcore.os.statfs(path); + final long totalSize = stat.f_blocks * stat.f_bsize; + final long availSize = stat.f_bavail * stat.f_bsize; + return new long[] { totalSize, availSize }; + } catch (ErrnoException e) { + throw new IllegalStateException(e); + } + } }; public DefaultContainerService() { |