Loading services/companion/java/com/android/server/companion/CompanionApplicationController.java +24 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.companion; import static android.companion.AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; Loading @@ -25,8 +27,10 @@ import android.companion.CompanionDeviceService; import android.companion.DevicePresenceEvent; import android.content.ComponentName; import android.content.Context; import android.hardware.power.Mode; import android.os.Handler; import android.os.ParcelUuid; import android.os.PowerManagerInternal; import android.util.Log; import android.util.Slog; import android.util.SparseArray; Loading Loading @@ -79,6 +83,8 @@ public class CompanionApplicationController { private final @NonNull CompanionDevicePresenceMonitor mDevicePresenceMonitor; private final @NonNull CompanionServicesRegister mCompanionServicesRegister; private final PowerManagerInternal mPowerManagerInternal; @GuardedBy("mBoundCompanionApplications") private final @NonNull AndroidPackageMap<List<CompanionDeviceServiceConnector>> mBoundCompanionApplications; Loading @@ -87,11 +93,13 @@ public class CompanionApplicationController { CompanionApplicationController(Context context, AssociationStore associationStore, ObservableUuidStore observableUuidStore, CompanionDevicePresenceMonitor companionDevicePresenceMonitor) { CompanionDevicePresenceMonitor companionDevicePresenceMonitor, PowerManagerInternal powerManagerInternal) { mContext = context; mAssociationStore = associationStore; mObservableUuidStore = observableUuidStore; mDevicePresenceMonitor = companionDevicePresenceMonitor; mPowerManagerInternal = powerManagerInternal; mCompanionServicesRegister = new CompanionServicesRegister(); mBoundCompanionApplications = new AndroidPackageMap<>(); mScheduledForRebindingCompanionApplications = new AndroidPackageMap<>(); Loading Loading @@ -364,9 +372,21 @@ public class CompanionApplicationController { boolean isPrimary = serviceConnector.isPrimary(); Slog.i(TAG, "onBinderDied() u" + userId + "/" + packageName + " isPrimary: " + isPrimary); // First: Only mark not BOUND for primary service. // First, disable hint mode for Auto profile and mark not BOUND for primary service ONLY. if (isPrimary) { final List<AssociationInfo> associations = mAssociationStore.getAssociationsForPackage(userId, packageName); for (AssociationInfo association : associations) { final String deviceProfile = association.getDeviceProfile(); if (DEVICE_PROFILE_AUTOMOTIVE_PROJECTION.equals(deviceProfile)) { Slog.i(TAG, "Disable hint mode for device profile: " + deviceProfile); mPowerManagerInternal.setPowerMode(Mode.AUTOMOTIVE_PROJECTION, false); break; } } synchronized (mBoundCompanionApplications) { if (serviceConnector.isPrimary()) { mBoundCompanionApplications.removePackage(userId, packageName); } } Loading services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +8 −4 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ package com.android.server.companion; import static android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES; import static android.Manifest.permission.DELIVER_COMPANION_MESSAGES; import static android.Manifest.permission.MANAGE_COMPANION_DEVICES; import static android.Manifest.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION; import static android.Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE; import static android.Manifest.permission.USE_COMPANION_TRANSPORTS; import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE; Loading Loading @@ -270,7 +269,8 @@ public class CompanionDeviceManagerService extends SystemService { mAssociationStore, mObservableUuidStore, mDevicePresenceCallback); mCompanionAppController = new CompanionApplicationController( context, mAssociationStore, mObservableUuidStore, mDevicePresenceMonitor); context, mAssociationStore, mObservableUuidStore, mDevicePresenceMonitor, mPowerManagerInternal); mTransportManager = new CompanionTransportManager(context, mAssociationStore); mSystemDataTransferProcessor = new SystemDataTransferProcessor(this, mPackageManagerInternal, mAssociationStore, Loading Loading @@ -1128,7 +1128,9 @@ public class CompanionDeviceManagerService extends SystemService { mDevicePresenceMonitor.onSelfManagedDeviceConnected(associationId); if (association.getDeviceProfile() == REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION) { final String deviceProfile = association.getDeviceProfile(); if (DEVICE_PROFILE_AUTOMOTIVE_PROJECTION.equals(deviceProfile)) { Slog.i(TAG, "Enable hint mode for device device profile: " + deviceProfile); mPowerManagerInternal.setPowerMode(Mode.AUTOMOTIVE_PROJECTION, true); } } Loading @@ -1146,7 +1148,9 @@ public class CompanionDeviceManagerService extends SystemService { mDevicePresenceMonitor.onSelfManagedDeviceDisconnected(associationId); if (association.getDeviceProfile() == REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION) { final String deviceProfile = association.getDeviceProfile(); if (DEVICE_PROFILE_AUTOMOTIVE_PROJECTION.equals(deviceProfile)) { Slog.i(TAG, "Disable hint mode for device profile: " + deviceProfile); mPowerManagerInternal.setPowerMode(Mode.AUTOMOTIVE_PROJECTION, false); } } Loading Loading
services/companion/java/com/android/server/companion/CompanionApplicationController.java +24 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.companion; import static android.companion.AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; Loading @@ -25,8 +27,10 @@ import android.companion.CompanionDeviceService; import android.companion.DevicePresenceEvent; import android.content.ComponentName; import android.content.Context; import android.hardware.power.Mode; import android.os.Handler; import android.os.ParcelUuid; import android.os.PowerManagerInternal; import android.util.Log; import android.util.Slog; import android.util.SparseArray; Loading Loading @@ -79,6 +83,8 @@ public class CompanionApplicationController { private final @NonNull CompanionDevicePresenceMonitor mDevicePresenceMonitor; private final @NonNull CompanionServicesRegister mCompanionServicesRegister; private final PowerManagerInternal mPowerManagerInternal; @GuardedBy("mBoundCompanionApplications") private final @NonNull AndroidPackageMap<List<CompanionDeviceServiceConnector>> mBoundCompanionApplications; Loading @@ -87,11 +93,13 @@ public class CompanionApplicationController { CompanionApplicationController(Context context, AssociationStore associationStore, ObservableUuidStore observableUuidStore, CompanionDevicePresenceMonitor companionDevicePresenceMonitor) { CompanionDevicePresenceMonitor companionDevicePresenceMonitor, PowerManagerInternal powerManagerInternal) { mContext = context; mAssociationStore = associationStore; mObservableUuidStore = observableUuidStore; mDevicePresenceMonitor = companionDevicePresenceMonitor; mPowerManagerInternal = powerManagerInternal; mCompanionServicesRegister = new CompanionServicesRegister(); mBoundCompanionApplications = new AndroidPackageMap<>(); mScheduledForRebindingCompanionApplications = new AndroidPackageMap<>(); Loading Loading @@ -364,9 +372,21 @@ public class CompanionApplicationController { boolean isPrimary = serviceConnector.isPrimary(); Slog.i(TAG, "onBinderDied() u" + userId + "/" + packageName + " isPrimary: " + isPrimary); // First: Only mark not BOUND for primary service. // First, disable hint mode for Auto profile and mark not BOUND for primary service ONLY. if (isPrimary) { final List<AssociationInfo> associations = mAssociationStore.getAssociationsForPackage(userId, packageName); for (AssociationInfo association : associations) { final String deviceProfile = association.getDeviceProfile(); if (DEVICE_PROFILE_AUTOMOTIVE_PROJECTION.equals(deviceProfile)) { Slog.i(TAG, "Disable hint mode for device profile: " + deviceProfile); mPowerManagerInternal.setPowerMode(Mode.AUTOMOTIVE_PROJECTION, false); break; } } synchronized (mBoundCompanionApplications) { if (serviceConnector.isPrimary()) { mBoundCompanionApplications.removePackage(userId, packageName); } } Loading
services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +8 −4 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ package com.android.server.companion; import static android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES; import static android.Manifest.permission.DELIVER_COMPANION_MESSAGES; import static android.Manifest.permission.MANAGE_COMPANION_DEVICES; import static android.Manifest.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION; import static android.Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE; import static android.Manifest.permission.USE_COMPANION_TRANSPORTS; import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE; Loading Loading @@ -270,7 +269,8 @@ public class CompanionDeviceManagerService extends SystemService { mAssociationStore, mObservableUuidStore, mDevicePresenceCallback); mCompanionAppController = new CompanionApplicationController( context, mAssociationStore, mObservableUuidStore, mDevicePresenceMonitor); context, mAssociationStore, mObservableUuidStore, mDevicePresenceMonitor, mPowerManagerInternal); mTransportManager = new CompanionTransportManager(context, mAssociationStore); mSystemDataTransferProcessor = new SystemDataTransferProcessor(this, mPackageManagerInternal, mAssociationStore, Loading Loading @@ -1128,7 +1128,9 @@ public class CompanionDeviceManagerService extends SystemService { mDevicePresenceMonitor.onSelfManagedDeviceConnected(associationId); if (association.getDeviceProfile() == REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION) { final String deviceProfile = association.getDeviceProfile(); if (DEVICE_PROFILE_AUTOMOTIVE_PROJECTION.equals(deviceProfile)) { Slog.i(TAG, "Enable hint mode for device device profile: " + deviceProfile); mPowerManagerInternal.setPowerMode(Mode.AUTOMOTIVE_PROJECTION, true); } } Loading @@ -1146,7 +1148,9 @@ public class CompanionDeviceManagerService extends SystemService { mDevicePresenceMonitor.onSelfManagedDeviceDisconnected(associationId); if (association.getDeviceProfile() == REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION) { final String deviceProfile = association.getDeviceProfile(); if (DEVICE_PROFILE_AUTOMOTIVE_PROJECTION.equals(deviceProfile)) { Slog.i(TAG, "Disable hint mode for device profile: " + deviceProfile); mPowerManagerInternal.setPowerMode(Mode.AUTOMOTIVE_PROJECTION, false); } } Loading