diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/ContextImpl.java | 3 | ||||
| -rw-r--r-- | core/java/android/os/storage/StorageManager.java | 53 |
2 files changed, 46 insertions, 10 deletions
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index a40fe7558cba..734d43503e7b 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -460,7 +460,8 @@ class ContextImpl extends Context { registerService(STORAGE_SERVICE, new ServiceFetcher() { public Object createService(ContextImpl ctx) { try { - return new StorageManager(ctx.mMainThread.getHandler().getLooper()); + return new StorageManager( + ctx.getContentResolver(), ctx.mMainThread.getHandler().getLooper()); } catch (RemoteException rex) { Log.e(TAG, "Failed to create StorageManager", rex); return null; diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index 862a95cb9d13..f5e728dc565c 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -16,7 +16,9 @@ package android.os.storage; -import android.app.NotificationManager; +import static android.net.TrafficStats.MB_IN_BYTES; + +import android.content.ContentResolver; import android.content.Context; import android.os.Environment; import android.os.Handler; @@ -25,6 +27,7 @@ import android.os.Message; import android.os.Parcelable; import android.os.RemoteException; import android.os.ServiceManager; +import android.provider.Settings; import android.util.Log; import android.util.SparseArray; @@ -54,20 +57,20 @@ import java.util.concurrent.atomic.AtomicInteger; * {@link android.content.Context#getSystemService(java.lang.String)} with an * argument of {@link android.content.Context#STORAGE_SERVICE}. */ - -public class StorageManager -{ +public class StorageManager { private static final String TAG = "StorageManager"; + private final ContentResolver mResolver; + /* * Our internal MountService binder reference */ - final private IMountService mMountService; + private final IMountService mMountService; /* * The looper target for callbacks */ - Looper mTgtLooper; + private final Looper mTgtLooper; /* * Target listener for binder callbacks @@ -308,16 +311,16 @@ public class StorageManager * * @hide */ - public StorageManager(Looper tgtLooper) throws RemoteException { + public StorageManager(ContentResolver resolver, Looper tgtLooper) throws RemoteException { + mResolver = resolver; + mTgtLooper = tgtLooper; mMountService = IMountService.Stub.asInterface(ServiceManager.getService("mount")); if (mMountService == null) { Log.e(TAG, "Unable to connect to mount service! - is it running yet?"); return; } - mTgtLooper = tgtLooper; } - /** * Registers a {@link android.os.storage.StorageEventListener StorageEventListener}. * @@ -610,4 +613,36 @@ public class StorageManager Log.w(TAG, "No primary storage defined"); return null; } + + private static final int DEFAULT_THRESHOLD_PERCENTAGE = 10; + private static final long DEFAULT_THRESHOLD_MAX_BYTES = 500 * MB_IN_BYTES; + private static final long DEFAULT_FULL_THRESHOLD_BYTES = MB_IN_BYTES; + + /** + * Return the number of available bytes at which the given path is + * considered running low on storage. + * + * @hide + */ + public long getStorageLowBytes(File path) { + final long lowPercent = Settings.Global.getInt(mResolver, + Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE, DEFAULT_THRESHOLD_PERCENTAGE); + final long lowBytes = (path.getTotalSpace() * lowPercent) / 100; + + final long maxLowBytes = Settings.Global.getLong(mResolver, + Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES, DEFAULT_THRESHOLD_MAX_BYTES); + + return Math.min(lowBytes, maxLowBytes); + } + + /** + * Return the number of available bytes at which the given path is + * considered full. + * + * @hide + */ + public long getStorageFullBytes(File path) { + return Settings.Global.getLong(mResolver, Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES, + DEFAULT_FULL_THRESHOLD_BYTES); + } } |
