diff options
-rw-r--r-- | cmds/statsd/src/atoms.proto | 23 | ||||
-rw-r--r-- | cmds/statsd/src/external/StatsPullerManager.cpp | 3 | ||||
-rw-r--r-- | services/core/java/com/android/server/stats/StatsCompanionService.java | 27 |
3 files changed, 53 insertions, 0 deletions
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 57c32c702499..2632294d9232 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -303,6 +303,7 @@ message Atom { DangerousPermissionState dangerous_permission_state = 10050; TrainInfo train_info = 10051; TimeZoneDataInfo time_zone_data_info = 10052; + SDCardInfo sdcard_info = 10053; } // DO NOT USE field numbers above 100,000 in AOSP. @@ -3231,6 +3232,28 @@ message BatteryCycleCount { optional int32 cycle_count = 1; } +/** + * Logs that an SD card is mounted and information about it, its type (public or private) and the + * size in bytes. + * Pulled from: + * StatsCompanionService + */ + +message SDCardInfo { + + enum Type { + UNKNOWN = 0; + TYPE_PUBLIC = 1; + TYPE_PRIVATE = 2; + OTHERS = 3; + } + + // Type of the SD card: TYPE_PUBLIC if portable and TYPE_PRIVATE if internal. + optional Type type = 1; + // Total size of the sd card in bytes. + optional int64 size_bytes = 2; +} + /* * Logs when a connection becomes available and lost. * Logged in StatsCompanionService.java diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp index d70c851c5670..1513834b6724 100644 --- a/cmds/statsd/src/external/StatsPullerManager.cpp +++ b/cmds/statsd/src/external/StatsPullerManager.cpp @@ -237,6 +237,9 @@ std::map<int, PullAtomInfo> StatsPullerManager::kAllPullAtomInfo = { // TimeZoneDataInfo. {android::util::TIME_ZONE_DATA_INFO, {.puller = new StatsCompanionServicePuller(android::util::TIME_ZONE_DATA_INFO)}}, + // SDCardInfo + {android::util::SDCARD_INFO, + {.puller = new StatsCompanionServicePuller(android::util::SDCARD_INFO)}}, }; StatsPullerManager::StatsPullerManager() : mNextPullTimeNs(NO_ALARM_UPDATE) { diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java index edca2e370b94..4815e5cd7b83 100644 --- a/services/core/java/com/android/server/stats/StatsCompanionService.java +++ b/services/core/java/com/android/server/stats/StatsCompanionService.java @@ -85,7 +85,9 @@ import android.os.SystemProperties; import android.os.Temperature; import android.os.UserHandle; import android.os.UserManager; +import android.os.storage.DiskInfo; import android.os.storage.StorageManager; +import android.os.storage.VolumeInfo; import android.telephony.ModemActivityInfo; import android.telephony.TelephonyManager; import android.util.ArrayMap; @@ -1956,6 +1958,27 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { pulledData.add(e); } + private void pullSDCardInfo(int tagId, long elapsedNanos, long wallClockNanos, + List<StatsLogEventWrapper> pulledData) { + StorageManager storageManager = mContext.getSystemService(StorageManager.class); + if (storageManager != null) { + List<VolumeInfo> volumes = storageManager.getVolumes(); + for (VolumeInfo vol : volumes) { + final String envState = VolumeInfo.getEnvironmentForState(vol.getState()); + final DiskInfo diskInfo = vol.getDisk(); + if (diskInfo != null && diskInfo.isSd()) { + if (envState.equals(Environment.MEDIA_MOUNTED)) { + StatsLogEventWrapper e = + new StatsLogEventWrapper(tagId, elapsedNanos, wallClockNanos); + e.writeInt(vol.getType() + 1); + e.writeLong(diskInfo.size); + pulledData.add(e); + } + } + } + } + } + /** * Pulls various data. */ @@ -2148,6 +2171,10 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { pullTimeZoneDataInfo(tagId, elapsedNanos, wallClockNanos, ret); break; } + case StatsLog.SDCARD_INFO: { + pullSDCardInfo(tagId, elapsedNanos, wallClockNanos, ret); + break; + } default: Slog.w(TAG, "No such tagId data as " + tagId); return null; |