add basic audio focus handling

- added skeleton CarAudioManager (not plubmed yet)
- added external vs internal radio distinction
- basic external radio use case working with test
- basic focus handling verified with added test cases

bug: 25331859

Change-Id: I4a4439336673b695f38eb11e9aa0d5a6090ee1b2
(cherry picked from commit 2a5c2eed85832331f9baa74569b3dc735a7c61ff)
diff --git a/service/src/com/android/car/ICarImpl.java b/service/src/com/android/car/ICarImpl.java
index 604b0e1..72ef0c8 100644
--- a/service/src/com/android/car/ICarImpl.java
+++ b/service/src/com/android/car/ICarImpl.java
@@ -45,6 +45,8 @@
     private final CarInfoService mCarInfoService;
     private final CarAudioService mCarAudioService;
     private final CarRadioService mCarRadioService;
+    private final AppContextService mAppContextService;
+
     /** Test only service. Populate it only when necessary. */
     @GuardedBy("this")
     private CarTestService mCarTestService;
@@ -70,15 +72,19 @@
         mContext = serviceContext;
         mHal = VehicleHal.getInstance();
         mCarInfoService = new CarInfoService(serviceContext);
+        mAppContextService = new AppContextService(serviceContext);
         mCarSensorService = new CarSensorService(serviceContext);
-        mCarAudioService = new CarAudioService(serviceContext);
+        mCarAudioService = new CarAudioService(serviceContext, mAppContextService);
         mCarRadioService = new CarRadioService(serviceContext);
+
         // Be careful with order. Service depending on other service should be inited later.
         mAllServices = new CarServiceBase[] {
                 mCarInfoService,
+                mAppContextService,
                 mCarSensorService,
                 mCarAudioService,
-                mCarRadioService };
+                mCarRadioService,
+                };
     }
 
     private void init() {