HERE映射音频提示在音频闪避之前开始

时间:2018-06-18 18:19:25

标签: android here-api

我正在测试Android HERE地图高级SDK,并且音频提示正常工作(包括语音TTS提示),并且已经添加了对音频焦点和闪避的支持(以降低正在播放的任何音乐的音量) 。这在HERE sdk docs for audio management中有所描述。我熟悉这些音频焦点API,并且之前在Android上实现过避免。

然而,使用HERE sdk我正在使用AudioFeedbackListener触发闪避,但TTS音频与音频焦点不同步;基本上是躲避工作,但延迟了0.25到0.5秒。我在运行OREO的三星上进行测试。

AudioFeedbackListener似乎是向后推向Android SDK的角度,因为Android建议请求焦点,等待授权,然后继续音频。但是,这不是HERE中的一个选项(没有完全使用音频代表接管音频,至少我没有看到任何类似的API。

我在HERE地图IOS SDK中看到audioRouteLatencyCompensation有一个参数可用于帮助避免躲避,但这不适用于Android。

下面是我的音频监听器片段,用于处理音频焦点,在我的日志中,所有呼叫都返回GRANTED。

是否有其他人遇到此问题,或者有关于如何延迟HERE语音提示和哔哔声的建议,直到获得焦点为止?

private NavigationManager.AudioFeedbackListener mAudioListener = new NavigationManager.AudioFeedbackListener() {
    @Override
    public void onAudioStart() {
        super.onAudioStart();
        Log.d(TAG,"audio feedback listener: onAudioStart");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            int result = mAudioManager.requestAudioFocus(mFocusRequest);
            Log.d(TAG,"Android_O request audio focus result=" + result);
        } else {
            int result = mAudioManager.requestAudioFocus(afChangeListener,
                    m_navigationManager.getAudioPlayer().getStreamId(),
                    AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
            Log.d(TAG,"request audio focus result=" + result);
        }
    }

    @Override
    public void onAudioEnd() {
        super.onAudioEnd();
        Log.d(TAG,"audio feedback listener: onAudioEnd");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            int result = mAudioManager.abandonAudioFocusRequest(mFocusRequest);
            Log.d(TAG,"Android_O abandonAudioFocusRequest result=" + result);
        } else {
            mAudioManager.abandonAudioFocus(afChangeListener);
        }
    }
};

1 个答案:

答案 0 :(得分:0)

在此处SDK中,尚没有提供在开始播放音频之前获取AudioFeedbackListener调用的方法。 AudioFeedbackListener调用被推入主应用程序循环,并在现有事件发生后异步调用它们。 但是音频播放立即开始。因此,您的应用程序在音频播放开始后会收到音频事件。您看到的延迟取决于当前的用户活动,设备处理器负载等。