AndroidAuto解决PCTS A15 Device ACKs All Audio Packets

android auto ack响应不完整,会导致音频焦点请求响应慢,影响用户体验,PCTS测试音频焦点测试部分基本都过不了,这个是很重要的一部分。当时遇到这个问题,无从下手,又是自动测试,没有什么log,后面花了不少时间才定位到问题。Ack响应的在AudioPlay.java这个文件。接受到数据就会ack响应。接受端跟响应端没有同步上就不会响应全部的Ack。在ackAFrame方法中framesToAck.getAndDecrement()获取后减一这个会导致不同步,需要让它值大于0的时候才减。

    private void ackAFrame() {
        Pair pair = getSessionPairForFirstSession();

        if (pair == null) {
            return;
        }

        AtomicInteger framesToAck = pair.second;

        int ackOld = 0;

        if (framesToAck.get() > 0) {
            ackOld = framesToAck.getAndDecrement();
        }

        if (ackOld > 0) {
               mAudioSink.ackFrames(pair.first, 1);
        } else {
            Log.w(TAG, "try to ack frame while ack <= 0");
        }
    }

你可能感兴趣的:(AndroidAuto,android,java)