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

Commit 2065d1ed authored by Carter Hsu's avatar Carter Hsu
Browse files

audio: add API for querying the Ultrasound support



Bug: 200256985
Test: atest AudioManagerTest
Signed-off-by: default avatarCarter Hsu <carterhsu@google.com>
Change-Id: I0925471021513424cd23c13c0334e2f480de88fe
parent b56820d3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5758,6 +5758,7 @@ package android.media {
    method public boolean isAudioServerRunning();
    method public boolean isHdmiSystemAudioSupported();
    method @RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION) public boolean isPstnCallAudioInterceptable();
    method public static boolean isUltrasoundSupported();
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void muteAwaitConnection(@NonNull int[], @NonNull android.media.AudioDeviceAttributes, long, @NonNull java.util.concurrent.TimeUnit) throws java.lang.IllegalStateException;
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void registerMuteAwaitConnectionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.MuteAwaitConnectionCallback);
+5 −0
Original line number Diff line number Diff line
@@ -2479,6 +2479,10 @@ android_media_AudioSystem_isHapticPlaybackSupported(JNIEnv *env, jobject thiz)
    return AudioSystem::isHapticPlaybackSupported();
}

static jboolean android_media_AudioSystem_isUltrasoundSupported(JNIEnv *env, jobject thiz) {
    return AudioSystem::isUltrasoundSupported();
}

static jint android_media_AudioSystem_setSupportedSystemUsages(JNIEnv *env, jobject thiz,
                                                               jintArray systemUsages) {
    std::vector<audio_usage_t> nativeSystemUsagesVector;
@@ -2915,6 +2919,7 @@ static const JNINativeMethod gMethods[] =
         {"setA11yServicesUids", "([I)I", (void *)android_media_AudioSystem_setA11yServicesUids},
         {"isHapticPlaybackSupported", "()Z",
          (void *)android_media_AudioSystem_isHapticPlaybackSupported},
         {"isUltrasoundSupported", "()Z", (void *)android_media_AudioSystem_isUltrasoundSupported},
         {"getHwOffloadFormatsSupportedForBluetoothMedia", "(ILjava/util/ArrayList;)I",
          (void *)android_media_AudioSystem_getHwOffloadFormatsSupportedForBluetoothMedia},
         {"setSupportedSystemUsages", "([I)I",
+19 −1
Original line number Diff line number Diff line
@@ -7236,6 +7236,24 @@ public class AudioManager {
        return AudioSystem.isHapticPlaybackSupported();
    }

    /**
     * @hide
     * Indicates whether a platform supports the Ultrasound feature which covers the playback
     * and recording of 20kHz~ sounds. If platform supports Ultrasound, then the
     * usage will be
     * To start the Ultrasound playback:
     *     - Create an AudioTrack with {@link AudioAttributes.CONTENT_TYPE_ULTRASOUND}.
     * To start the Ultrasound capture:
     *     - Create an AudioRecord with {@link MediaRecorder.AudioSource.ULTRASOUND}.
     *
     * @return whether the ultrasound feature is supported, true when platform supports both
     * Ultrasound playback and capture, false otherwise.
     */
    @SystemApi
    public static boolean isUltrasoundSupported() {
        return AudioSystem.isUltrasoundSupported();
    }

    /**
     * @hide
     * Introspection API to retrieve audio product strategies.
+6 −0
Original line number Diff line number Diff line
@@ -1862,6 +1862,12 @@ public class AudioSystem
     */
    public static native boolean isHapticPlaybackSupported();

    /**
     * @hide
     * @see AudioManager#isUltrasoundSupported()
     */
    public static native boolean isUltrasoundSupported();

    /**
     * @hide
     * Send audio HAL server process pids to native audioserver process for use