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

Commit 298c5093 authored by Ahaan Ugale's avatar Ahaan Ugale Committed by Android (Google) Code Review
Browse files

Merge "Send the HotwordDetectionService UID to AudioPolicy" into sc-dev

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

    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);

    /**
+7 −0
Original line number Diff line number Diff line
@@ -1768,6 +1768,13 @@ public class AudioSystem
     */
    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
     * Communicate UIDs of active accessibility services to audio policy service.
+18 −0
Original line number Diff line number Diff line
@@ -736,6 +736,11 @@ public class AudioService extends IAudioService.Stub
    private VolumePolicy mVolumePolicy = VolumePolicy.DEFAULT;
    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
    private final Object mAccessibilityServiceUidsLock = new Object();
    @GuardedBy("mAccessibilityServiceUidsLock")
@@ -1337,6 +1342,9 @@ public class AudioService extends IAudioService.Stub
            updateAssistantUId(true);
            AudioSystem.setRttEnabled(mRttEnabled);
        }
        synchronized (mHotwordDetectionServiceUidLock) {
            AudioSystem.setHotwordDetectionServiceUid(mHotwordDetectionServiceUid);
        }
        synchronized (mAccessibilityServiceUidsLock) {
            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
        public void setAccessibilityServiceUids(IntArray uids) {
            synchronized (mAccessibilityServiceUidsLock) {
+8 −0
Original line number Diff line number Diff line
@@ -366,6 +366,14 @@ public class AudioSystemAdapter implements AudioSystem.RoutingUpdateCallback {
        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)}
     * Communicate UID of current InputMethodService to audio policy service.
Loading