Loading src/com/android/settings/applications/ManageApplications.java +52 −23 Original line number Diff line number Diff line Loading @@ -20,16 +20,18 @@ import static com.android.settings.Utils.prepareCustomPreferencesList; import android.app.Activity; import android.app.Fragment; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; import android.os.Bundle; import android.os.Environment; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; import android.os.StatFs; import android.preference.PreferenceActivity; import android.provider.Settings; import android.text.format.Formatter; Loading @@ -46,19 +48,19 @@ import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.Filter; import android.widget.Filterable; import android.widget.ImageView; import android.widget.ListView; import android.widget.TabHost; import android.widget.TextView; import com.android.internal.app.IMediaContainerService; import com.android.internal.content.PackageHelper; import com.android.settings.R; import com.android.settings.Settings.RunningServicesActivity; import com.android.settings.Settings.StorageUseActivity; import com.android.settings.applications.ApplicationsState.AppEntry; import com.android.settings.deviceinfo.StorageMeasurement; import java.util.ArrayList; import java.util.Comparator; Loading Loading @@ -179,8 +181,6 @@ public class ManageApplications extends Fragment implements private boolean mResumedRunning; private boolean mActivityResumed; private StatFs mDataFileStats; private StatFs mSDCardFileStats; private boolean mLastShowedInternalStorage = true; private long mLastUsedStorage, mLastAppStorage, mLastFreeStorage; Loading Loading @@ -534,8 +534,9 @@ public class ManageApplications extends Fragment implements mDefaultTab = defaultTabTag; mDataFileStats = new StatFs("/data"); mSDCardFileStats = new StatFs(Environment.getExternalStorageDirectory().toString()); final Intent containerIntent = new Intent().setComponent( StorageMeasurement.DEFAULT_CONTAINER_COMPONENT); getActivity().bindService(containerIntent, mContainerConnection, Context.BIND_AUTO_CREATE); mInvalidSizeStr = getActivity().getText(R.string.invalid_size_value); mComputingSizeStr = getActivity().getText(R.string.computing_size); Loading Loading @@ -687,6 +688,12 @@ public class ManageApplications extends Fragment implements mOptionsMenu = null; } @Override public void onDestroy() { getActivity().unbindService(mContainerConnection); super.onDestroy(); } void updateOptionsMenu() { if (mOptionsMenu == null) { return; Loading Loading @@ -760,15 +767,18 @@ public class ManageApplications extends Fragment implements mLastShowedInternalStorage = false; } newLabel = getActivity().getText(R.string.sd_card_storage); mSDCardFileStats.restat(Environment.getExternalStorageDirectory().toString()); if (mContainerService != null) { try { totalStorage = (long)mSDCardFileStats.getBlockCount() * mSDCardFileStats.getBlockSize(); freeStorage = (long) mSDCardFileStats.getAvailableBlocks() * mSDCardFileStats.getBlockSize(); } catch (IllegalArgumentException e) { // use the old value of mFreeMem final long[] stats = mContainerService.getFileSystemStats( Environment.getExternalStorageDirectory().getPath()); totalStorage = stats[0]; freeStorage = stats[1]; } catch (RemoteException e) { Log.w(TAG, "Problem in container service", e); } } final int N = mApplicationsAdapter.getCount(); for (int i=0; i<N; i++) { ApplicationsState.AppEntry ae = mApplicationsAdapter.getAppEntry(i); Loading @@ -779,14 +789,18 @@ public class ManageApplications extends Fragment implements mLastShowedInternalStorage = true; } newLabel = getActivity().getText(R.string.internal_storage); mDataFileStats.restat("/data"); if (mContainerService != null) { try { totalStorage = (long)mDataFileStats.getBlockCount() * mDataFileStats.getBlockSize(); freeStorage = (long) mDataFileStats.getAvailableBlocks() * mDataFileStats.getBlockSize(); } catch (IllegalArgumentException e) { final long[] stats = mContainerService.getFileSystemStats( Environment.getDataDirectory().getPath()); totalStorage = stats[0]; freeStorage = stats[1]; } catch (RemoteException e) { Log.w(TAG, "Problem in container service", e); } } final boolean emulatedStorage = Environment.isExternalStorageEmulated(); final int N = mApplicationsAdapter.getCount(); for (int i=0; i<N; i++) { Loading Loading @@ -912,4 +926,19 @@ public class ManageApplications extends Fragment implements public void onTabChanged(String tabId) { showCurrentTab(); } private volatile IMediaContainerService mContainerService; private final ServiceConnection mContainerConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { mContainerService = IMediaContainerService.Stub.asInterface(service); updateStorageUsage(); } @Override public void onServiceDisconnected(ComponentName name) { mContainerService = null; } }; } src/com/android/settings/deviceinfo/StorageMeasurement.java +14 −14 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import android.os.HandlerThread; import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.StatFs; import android.os.RemoteException; import android.os.storage.StorageVolume; import android.util.Log; Loading @@ -53,7 +53,7 @@ import java.util.concurrent.ConcurrentHashMap; * know about by just keeping an array of measurement types of the following * properties: * * Filesystem stats (using StatFs) * Filesystem stats (using DefaultContainerService) * Directory measurements (using DefaultContainerService.measureDir) * Application measurements (using PackageManager) * Loading Loading @@ -81,7 +81,7 @@ public class StorageMeasurement { private static final String DEFAULT_CONTAINER_PACKAGE = "com.android.defcontainer"; private static final ComponentName DEFAULT_CONTAINER_COMPONENT = new ComponentName( public static final ComponentName DEFAULT_CONTAINER_COMPONENT = new ComponentName( DEFAULT_CONTAINER_PACKAGE, "com.android.defcontainer.DefaultContainerService"); private final MeasurementHandler mHandler; Loading Loading @@ -258,8 +258,6 @@ public class StorageMeasurement { return; } measureApproximateStorage(); synchronized (mLock) { if (mBound) { removeMessages(MSG_DISCONNECT); Loading @@ -274,6 +272,7 @@ public class StorageMeasurement { } case MSG_CONNECTED: { IMediaContainerService imcs = (IMediaContainerService) msg.obj; measureApproximateStorage(imcs); measureExactStorage(imcs); break; } Loading Loading @@ -367,15 +366,16 @@ public class StorageMeasurement { sendEmptyMessage(MSG_COMPLETED); } private void measureApproximateStorage() { final StatFs stat = new StatFs(mStorageVolume != null ? mStorageVolume.getPath() : Environment.getDataDirectory().getPath()); final long blockSize = stat.getBlockSize(); final long totalBlocks = stat.getBlockCount(); final long availableBlocks = stat.getAvailableBlocks(); mTotalSize = totalBlocks * blockSize; mAvailSize = availableBlocks * blockSize; private void measureApproximateStorage(IMediaContainerService imcs) { final String path = mStorageVolume != null ? mStorageVolume.getPath() : Environment.getDataDirectory().getPath(); try { final long[] stats = imcs.getFileSystemStats(path); mTotalSize = stats[0]; mAvailSize = stats[1]; } catch (RemoteException e) { Log.w(TAG, "Problem in container service", e); } sendInternalApproximateUpdate(); } Loading Loading
src/com/android/settings/applications/ManageApplications.java +52 −23 Original line number Diff line number Diff line Loading @@ -20,16 +20,18 @@ import static com.android.settings.Utils.prepareCustomPreferencesList; import android.app.Activity; import android.app.Fragment; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; import android.os.Bundle; import android.os.Environment; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; import android.os.StatFs; import android.preference.PreferenceActivity; import android.provider.Settings; import android.text.format.Formatter; Loading @@ -46,19 +48,19 @@ import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.Filter; import android.widget.Filterable; import android.widget.ImageView; import android.widget.ListView; import android.widget.TabHost; import android.widget.TextView; import com.android.internal.app.IMediaContainerService; import com.android.internal.content.PackageHelper; import com.android.settings.R; import com.android.settings.Settings.RunningServicesActivity; import com.android.settings.Settings.StorageUseActivity; import com.android.settings.applications.ApplicationsState.AppEntry; import com.android.settings.deviceinfo.StorageMeasurement; import java.util.ArrayList; import java.util.Comparator; Loading Loading @@ -179,8 +181,6 @@ public class ManageApplications extends Fragment implements private boolean mResumedRunning; private boolean mActivityResumed; private StatFs mDataFileStats; private StatFs mSDCardFileStats; private boolean mLastShowedInternalStorage = true; private long mLastUsedStorage, mLastAppStorage, mLastFreeStorage; Loading Loading @@ -534,8 +534,9 @@ public class ManageApplications extends Fragment implements mDefaultTab = defaultTabTag; mDataFileStats = new StatFs("/data"); mSDCardFileStats = new StatFs(Environment.getExternalStorageDirectory().toString()); final Intent containerIntent = new Intent().setComponent( StorageMeasurement.DEFAULT_CONTAINER_COMPONENT); getActivity().bindService(containerIntent, mContainerConnection, Context.BIND_AUTO_CREATE); mInvalidSizeStr = getActivity().getText(R.string.invalid_size_value); mComputingSizeStr = getActivity().getText(R.string.computing_size); Loading Loading @@ -687,6 +688,12 @@ public class ManageApplications extends Fragment implements mOptionsMenu = null; } @Override public void onDestroy() { getActivity().unbindService(mContainerConnection); super.onDestroy(); } void updateOptionsMenu() { if (mOptionsMenu == null) { return; Loading Loading @@ -760,15 +767,18 @@ public class ManageApplications extends Fragment implements mLastShowedInternalStorage = false; } newLabel = getActivity().getText(R.string.sd_card_storage); mSDCardFileStats.restat(Environment.getExternalStorageDirectory().toString()); if (mContainerService != null) { try { totalStorage = (long)mSDCardFileStats.getBlockCount() * mSDCardFileStats.getBlockSize(); freeStorage = (long) mSDCardFileStats.getAvailableBlocks() * mSDCardFileStats.getBlockSize(); } catch (IllegalArgumentException e) { // use the old value of mFreeMem final long[] stats = mContainerService.getFileSystemStats( Environment.getExternalStorageDirectory().getPath()); totalStorage = stats[0]; freeStorage = stats[1]; } catch (RemoteException e) { Log.w(TAG, "Problem in container service", e); } } final int N = mApplicationsAdapter.getCount(); for (int i=0; i<N; i++) { ApplicationsState.AppEntry ae = mApplicationsAdapter.getAppEntry(i); Loading @@ -779,14 +789,18 @@ public class ManageApplications extends Fragment implements mLastShowedInternalStorage = true; } newLabel = getActivity().getText(R.string.internal_storage); mDataFileStats.restat("/data"); if (mContainerService != null) { try { totalStorage = (long)mDataFileStats.getBlockCount() * mDataFileStats.getBlockSize(); freeStorage = (long) mDataFileStats.getAvailableBlocks() * mDataFileStats.getBlockSize(); } catch (IllegalArgumentException e) { final long[] stats = mContainerService.getFileSystemStats( Environment.getDataDirectory().getPath()); totalStorage = stats[0]; freeStorage = stats[1]; } catch (RemoteException e) { Log.w(TAG, "Problem in container service", e); } } final boolean emulatedStorage = Environment.isExternalStorageEmulated(); final int N = mApplicationsAdapter.getCount(); for (int i=0; i<N; i++) { Loading Loading @@ -912,4 +926,19 @@ public class ManageApplications extends Fragment implements public void onTabChanged(String tabId) { showCurrentTab(); } private volatile IMediaContainerService mContainerService; private final ServiceConnection mContainerConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { mContainerService = IMediaContainerService.Stub.asInterface(service); updateStorageUsage(); } @Override public void onServiceDisconnected(ComponentName name) { mContainerService = null; } }; }
src/com/android/settings/deviceinfo/StorageMeasurement.java +14 −14 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import android.os.HandlerThread; import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.StatFs; import android.os.RemoteException; import android.os.storage.StorageVolume; import android.util.Log; Loading @@ -53,7 +53,7 @@ import java.util.concurrent.ConcurrentHashMap; * know about by just keeping an array of measurement types of the following * properties: * * Filesystem stats (using StatFs) * Filesystem stats (using DefaultContainerService) * Directory measurements (using DefaultContainerService.measureDir) * Application measurements (using PackageManager) * Loading Loading @@ -81,7 +81,7 @@ public class StorageMeasurement { private static final String DEFAULT_CONTAINER_PACKAGE = "com.android.defcontainer"; private static final ComponentName DEFAULT_CONTAINER_COMPONENT = new ComponentName( public static final ComponentName DEFAULT_CONTAINER_COMPONENT = new ComponentName( DEFAULT_CONTAINER_PACKAGE, "com.android.defcontainer.DefaultContainerService"); private final MeasurementHandler mHandler; Loading Loading @@ -258,8 +258,6 @@ public class StorageMeasurement { return; } measureApproximateStorage(); synchronized (mLock) { if (mBound) { removeMessages(MSG_DISCONNECT); Loading @@ -274,6 +272,7 @@ public class StorageMeasurement { } case MSG_CONNECTED: { IMediaContainerService imcs = (IMediaContainerService) msg.obj; measureApproximateStorage(imcs); measureExactStorage(imcs); break; } Loading Loading @@ -367,15 +366,16 @@ public class StorageMeasurement { sendEmptyMessage(MSG_COMPLETED); } private void measureApproximateStorage() { final StatFs stat = new StatFs(mStorageVolume != null ? mStorageVolume.getPath() : Environment.getDataDirectory().getPath()); final long blockSize = stat.getBlockSize(); final long totalBlocks = stat.getBlockCount(); final long availableBlocks = stat.getAvailableBlocks(); mTotalSize = totalBlocks * blockSize; mAvailSize = availableBlocks * blockSize; private void measureApproximateStorage(IMediaContainerService imcs) { final String path = mStorageVolume != null ? mStorageVolume.getPath() : Environment.getDataDirectory().getPath(); try { final long[] stats = imcs.getFileSystemStats(path); mTotalSize = stats[0]; mAvailSize = stats[1]; } catch (RemoteException e) { Log.w(TAG, "Problem in container service", e); } sendInternalApproximateUpdate(); } Loading