Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4fa0cf4f authored by Ahaan Ugale's avatar Ahaan Ugale Committed by Automerger Merge Worker
Browse files

Merge "Send the HotwordDetectionService UID to AudioPolicy" into sc-dev am: 298c5093

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15465671

Change-Id: Ie2e9e6555743653fcf798fa1cb876fc454807d06
parents ed49886d 298c5093
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -2429,6 +2429,12 @@ android_media_AudioSystem_setAssistantUid(JNIEnv *env, jobject thiz, jint uid)
    return (jint)nativeToJavaStatus(status);
    return (jint)nativeToJavaStatus(status);
}
}


static jint android_media_AudioSystem_setHotwordDetectionServiceUid(JNIEnv *env, jobject thiz,
                                                                    jint uid) {
    status_t status = AudioSystem::setHotwordDetectionServiceUid(uid);
    return (jint)nativeToJavaStatus(status);
}

static jint
static jint
android_media_AudioSystem_setA11yServicesUids(JNIEnv *env, jobject thiz, jintArray uids) {
android_media_AudioSystem_setA11yServicesUids(JNIEnv *env, jobject thiz, jintArray uids) {
    std::vector<uid_t> nativeUidsVector;
    std::vector<uid_t> nativeUidsVector;
@@ -2799,6 +2805,8 @@ static const JNINativeMethod gMethods[] =
         {"setSurroundFormatEnabled", "(IZ)I",
         {"setSurroundFormatEnabled", "(IZ)I",
          (void *)android_media_AudioSystem_setSurroundFormatEnabled},
          (void *)android_media_AudioSystem_setSurroundFormatEnabled},
         {"setAssistantUid", "(I)I", (void *)android_media_AudioSystem_setAssistantUid},
         {"setAssistantUid", "(I)I", (void *)android_media_AudioSystem_setAssistantUid},
         {"setHotwordDetectionServiceUid", "(I)I",
          (void *)android_media_AudioSystem_setHotwordDetectionServiceUid},
         {"setA11yServicesUids", "([I)I", (void *)android_media_AudioSystem_setA11yServicesUids},
         {"setA11yServicesUids", "([I)I", (void *)android_media_AudioSystem_setA11yServicesUids},
         {"isHapticPlaybackSupported", "()Z",
         {"isHapticPlaybackSupported", "()Z",
          (void *)android_media_AudioSystem_isHapticPlaybackSupported},
          (void *)android_media_AudioSystem_isHapticPlaybackSupported},
+11 −0
Original line number Original line Diff line number Diff line
@@ -38,6 +38,17 @@ public abstract class AudioManagerInternal {


    public abstract void updateRingerModeAffectedStreamsInternal();
    public abstract void updateRingerModeAffectedStreamsInternal();


    /**
     * Notify the UID of the currently active {@link android.service.voice.HotwordDetectionService}.
     *
     * <p>The caller is expected to take care of any performance implications, e.g. by using a
     * background thread to call this method.</p>
     *
     * @param uid UID of the currently active service or {@link android.os.Process#INVALID_UID} if
     *            none.
     */
    public abstract void setHotwordDetectionServiceUid(int uid);

    public abstract void setAccessibilityServiceUids(IntArray uids);
    public abstract void setAccessibilityServiceUids(IntArray uids);


    /**
    /**
+7 −0
Original line number Original line Diff line number Diff line
@@ -1768,6 +1768,13 @@ public class AudioSystem
     */
     */
    public static native int setAssistantUid(int uid);
    public static native int setAssistantUid(int uid);


    /**
     * Communicate UID of the current {@link android.service.voice.HotwordDetectionService} to audio
     * policy service.
     * @hide
     */
    public static native int setHotwordDetectionServiceUid(int uid);

    /**
    /**
     * @hide
     * @hide
     * Communicate UIDs of active accessibility services to audio policy service.
     * Communicate UIDs of active accessibility services to audio policy service.
+18 −0
Original line number Original line Diff line number Diff line
@@ -736,6 +736,11 @@ public class AudioService extends IAudioService.Stub
    private VolumePolicy mVolumePolicy = VolumePolicy.DEFAULT;
    private VolumePolicy mVolumePolicy = VolumePolicy.DEFAULT;
    private long mLoweredFromNormalToVibrateTime;
    private long mLoweredFromNormalToVibrateTime;


    // Uid of the active hotword detection service to check if caller is the one or not.
    @GuardedBy("mHotwordDetectionServiceUidLock")
    private int mHotwordDetectionServiceUid = android.os.Process.INVALID_UID;
    private final Object mHotwordDetectionServiceUidLock = new Object();

    // Array of Uids of valid accessibility services to check if caller is one of them
    // Array of Uids of valid accessibility services to check if caller is one of them
    private final Object mAccessibilityServiceUidsLock = new Object();
    private final Object mAccessibilityServiceUidsLock = new Object();
    @GuardedBy("mAccessibilityServiceUidsLock")
    @GuardedBy("mAccessibilityServiceUidsLock")
@@ -1337,6 +1342,9 @@ public class AudioService extends IAudioService.Stub
            updateAssistantUId(true);
            updateAssistantUId(true);
            AudioSystem.setRttEnabled(mRttEnabled);
            AudioSystem.setRttEnabled(mRttEnabled);
        }
        }
        synchronized (mHotwordDetectionServiceUidLock) {
            AudioSystem.setHotwordDetectionServiceUid(mHotwordDetectionServiceUid);
        }
        synchronized (mAccessibilityServiceUidsLock) {
        synchronized (mAccessibilityServiceUidsLock) {
            AudioSystem.setA11yServicesUids(mAccessibilityServiceUids);
            AudioSystem.setA11yServicesUids(mAccessibilityServiceUids);
        }
        }
@@ -9107,6 +9115,16 @@ public class AudioService extends IAudioService.Stub
            }
            }
        }
        }


        @Override
        public void setHotwordDetectionServiceUid(int uid) {
            synchronized (mHotwordDetectionServiceUidLock) {
                if (mHotwordDetectionServiceUid != uid) {
                    mHotwordDetectionServiceUid = uid;
                    AudioSystem.setHotwordDetectionServiceUid(mHotwordDetectionServiceUid);
                }
            }
        }

        @Override
        @Override
        public void setAccessibilityServiceUids(IntArray uids) {
        public void setAccessibilityServiceUids(IntArray uids) {
            synchronized (mAccessibilityServiceUidsLock) {
            synchronized (mAccessibilityServiceUidsLock) {
+8 −0
Original line number Original line Diff line number Diff line
@@ -366,6 +366,14 @@ public class AudioSystemAdapter implements AudioSystem.RoutingUpdateCallback {
        return AudioSystem.muteMicrophone(on);
        return AudioSystem.muteMicrophone(on);
    }
    }


    /**
     * Same as {@link AudioSystem#setHotwordDetectionServiceUid(int)}
     * Communicate UID of current HotwordDetectionService to audio policy service.
     */
    public int setHotwordDetectionServiceUid(int uid) {
        return AudioSystem.setHotwordDetectionServiceUid(uid);
    }

    /**
    /**
     * Same as {@link AudioSystem#setCurrentImeUid(int)}
     * Same as {@link AudioSystem#setCurrentImeUid(int)}
     * Communicate UID of current InputMethodService to audio policy service.
     * Communicate UID of current InputMethodService to audio policy service.
Loading