瑞芯微Rockchip开发者社区
直播中

北上北京

8年用户 864经验值
擅长:嵌入式技术
私信 关注
[问答]

怎样去解决Android系统默认播放停止后进入Standby模式的问题呢

Android系统默认播放停止后为何会进入Standby模式呢?
怎样去解决Android系统默认播放停止后进入Standby模式的问题呢?

回帖(1)

刘晓红

2022-3-3 09:32:56
Platform: ROCKCHIP
OS: Android 6.0
Kernel: 3.10.92


Android系统默认播放停止后3秒会进入Standby模式以节省电源.


需求:
    禁止进入Standby


HAL层虽然提供了Standby接口,但是不能直接屏蔽掉, 因为里面有pcm_close()
和播放的pcm_start()配对.


解决方法:
    增加standby的延迟时间,默认3秒,可以改成一天或者更久.


[kris@:~/rk3288/frameworks/av]$ g df
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 08fa70d..a5244d3 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -86,7 +86,7 @@ class ServerProxy;
// This is typically due to audio mixer and resampler limitations.
#define FCC_8 8     // FCC_8 = Fixed Channel Count 8

-static const nsecs_t kDefaultStandbyTimeInNsecs = seconds(3);
+static const nsecs_t kDefaultStandbyTimeInNsecs = seconds(60*60*24);




也可以通过property来设置:
void AudioFlinger::onFirstRef()
{
    int rc = 0;


    Mutex::Autolock _l(mLock);


    /* TODO: move all this work into an Init() function */
    char val_str[PROPERTY_VALUE_MAX] = { 0 };
    if (property_get("ro.audio.flinger_standbytime_ms", val_str, NULL) >= 0) {
        uint32_t int_val;
        if (1 == sscanf(val_str, "%u", &int_val)) {
            mStandbyTimeInNsecs = milliseconds(int_val);
            ALOGI("Using %u mSec as standby time.", int_val);
        } else {
            mStandbyTimeInNsecs = kDefaultStandbyTimeInNsecs;
            ALOGI("Using default %u mSec as standby time.",
                    (uint32_t)(mStandbyTimeInNsecs / 1000000));
        }
    }


    mPatchPanel = new PatchPanel(this);


    mMode = AUDIO_MODE_NORMAL;
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分