diff options
-rw-r--r-- | cmds/statsd/src/atoms.proto | 24 | ||||
-rw-r--r-- | cmds/statsd/src/external/StatsPullerManager.cpp | 6 | ||||
-rw-r--r-- | services/core/java/com/android/server/stats/StatsCompanionService.java | 31 |
3 files changed, 42 insertions, 19 deletions
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 7a753aecc4cb..1dbbbc5595ba 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -310,7 +310,7 @@ message Atom { DangerousPermissionState dangerous_permission_state = 10050; TrainInfo train_info = 10051; TimeZoneDataInfo time_zone_data_info = 10052; - SDCardInfo sdcard_info = 10053; + ExternalStorageInfo external_storage_info = 10053; GpuStatsGlobalInfo gpu_stats_global_info = 10054; GpuStatsAppInfo gpu_stats_app_info = 10055; SystemIonHeapSize system_ion_heap_size = 10056; @@ -3311,25 +3311,27 @@ message BatteryCycleCount { } /** - * Logs that an SD card is mounted and information about it, its type (public or private) and the - * size in bytes. + * Logs that external storage is mounted and information about it, the storage type (sd card/usb/ + * others), its type (public or private) and the size in bytes. * Pulled from: * StatsCompanionService */ -message SDCardInfo { +message ExternalStorageInfo { - enum Type { + enum VolumeType { UNKNOWN = 0; - TYPE_PUBLIC = 1; - TYPE_PRIVATE = 2; - OTHERS = 3; + PUBLIC = 1; + PRIVATE = 2; + OTHER = 3; } - // Type of the SD card: TYPE_PUBLIC if portable and TYPE_PRIVATE if internal. - optional Type type = 1; + // The type of external storage. + optional android.stats.storage.ExternalStorageType storage_type = 1; + // Type of the volume: TYPE_PUBLIC if portable and TYPE_PRIVATE if internal. + optional VolumeType volume_type = 2; // Total size of the sd card in bytes. - optional int64 size_bytes = 2; + optional int64 size_bytes = 3; } /* diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp index c7ae656920b8..2abfc2450a00 100644 --- a/cmds/statsd/src/external/StatsPullerManager.cpp +++ b/cmds/statsd/src/external/StatsPullerManager.cpp @@ -242,9 +242,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)}}, + // ExternalStorageInfo + {android::util::EXTERNAL_STORAGE_INFO, + {.puller = new StatsCompanionServicePuller(android::util::EXTERNAL_STORAGE_INFO)}}, // GpuStatsGlobalInfo {android::util::GPU_STATS_GLOBAL_INFO, {.puller = new GpuStatsPuller(android::util::GPU_STATS_GLOBAL_INFO)}}, diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java index 2b17d19e1cf7..18004336e7a2 100644 --- a/services/core/java/com/android/server/stats/StatsCompanionService.java +++ b/services/core/java/com/android/server/stats/StatsCompanionService.java @@ -19,6 +19,8 @@ import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED; import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS; import static android.os.Process.getPidsForCommands; import static android.os.Process.getUidForPid; +import static android.os.storage.VolumeInfo.TYPE_PRIVATE; +import static android.os.storage.VolumeInfo.TYPE_PUBLIC; import static com.android.internal.util.Preconditions.checkNotNull; import static com.android.server.am.MemoryStatUtil.readCmdlineFromProcfs; @@ -89,6 +91,7 @@ import android.os.UserManager; import android.os.storage.DiskInfo; import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; +import android.stats.storage.StorageEnums; import android.telephony.ModemActivityInfo; import android.telephony.TelephonyManager; import android.util.ArrayMap; @@ -1968,7 +1971,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { pulledData.add(e); } - private void pullSDCardInfo(int tagId, long elapsedNanos, long wallClockNanos, + private void pullExternalStorageInfo(int tagId, long elapsedNanos, long wallClockNanos, List<StatsLogEventWrapper> pulledData) { StorageManager storageManager = mContext.getSystemService(StorageManager.class); if (storageManager != null) { @@ -1976,11 +1979,29 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { for (VolumeInfo vol : volumes) { final String envState = VolumeInfo.getEnvironmentForState(vol.getState()); final DiskInfo diskInfo = vol.getDisk(); - if (diskInfo != null && diskInfo.isSd()) { + if (diskInfo != null) { if (envState.equals(Environment.MEDIA_MOUNTED)) { + // Get the type of the volume, if it is adoptable or portable. + int volumeType = StatsLog.EXTERNAL_STORAGE_INFO__VOLUME_TYPE__OTHER; + if (vol.getType() == TYPE_PUBLIC) { + volumeType = StatsLog.EXTERNAL_STORAGE_INFO__VOLUME_TYPE__PUBLIC; + } else if (vol.getType() == TYPE_PRIVATE) { + volumeType = StatsLog.EXTERNAL_STORAGE_INFO__VOLUME_TYPE__PRIVATE; + } + // Get the type of external storage inserted in the device (sd cards, + // usb, etc) + int externalStorageType; + if (diskInfo.isSd()) { + externalStorageType = StorageEnums.SD_CARD; + } else if (diskInfo.isUsb()) { + externalStorageType = StorageEnums.USB; + } else { + externalStorageType = StorageEnums.OTHER; + } StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos, wallClockNanos); - e.writeInt(vol.getType() + 1); + e.writeInt(externalStorageType); + e.writeInt(volumeType); e.writeLong(diskInfo.size); pulledData.add(e); } @@ -2185,8 +2206,8 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { pullTimeZoneDataInfo(tagId, elapsedNanos, wallClockNanos, ret); break; } - case StatsLog.SDCARD_INFO: { - pullSDCardInfo(tagId, elapsedNanos, wallClockNanos, ret); + case StatsLog.EXTERNAL_STORAGE_INFO: { + pullExternalStorageInfo(tagId, elapsedNanos, wallClockNanos, ret); break; } default: |