Os OEMs podem configurar uma opção em dispositivos dobráveis que permite aos usuários escolher como a tela externa se comporta quando eles dobram o dispositivo de um estado desbloqueado e aberto.
A configuração está em Configurações > Tela > Continuar usando apps na tela dobrada. O usuário tem as seguintes três opções:
- Sempre:quando o usuário dobra o dispositivo, o display frontal sempre é ativado e permanece desbloqueado.
- Deslize para cima para continuar:quando o usuário dobra o dispositivo, ele mostra o bloqueio de tela sem exigir autenticação, a menos que um app esteja mantendo um wakelock, nesse caso, o dispositivo permanece ativo no app. Essa é a configuração padrão.
- Nunca:quando o usuário dobra o dispositivo, ele é bloqueado e o display frontal é desativado.
Figura 1. Configuração de comportamento de bloqueio de dobra.
Configurar a opção de comportamento de bloqueio de dobra
Para mostrar a configuração de comportamento de bloqueio de dobra em Configurações, preencha o booleano
config_fold_lock_behavior
no arquivo de sobreposição config.xml
do dispositivo:
<!-- Whether to show Fold lock behavior setting feature in Settings app -->
<bool name="config_fold_lock_behavior">true</bool>
Detalhes da implementação
O comportamento de bloqueio de dobra é controlado por uma configuração e várias classes de back-end.
Configuração e interface
O valor da configuração FOLD_LOCK_BEHAVIOR
é mantido como uma string, que corresponde à seleção do usuário em Configurações > Tela > Continuar usando apps com a tela dobrada:
- Sempre:
stay_awake_on_fold_key
- Deslize para cima para continuar:
selective_stay_awake_key
- Nunca:
sleep_on_fold_key
A configuração é extraída de display_settings.xml
. A interface da página de configurações
é implementada no fragmento FoldLockBehaviorSettings
, e a
preferência é gerenciada por FoldLockBehaviorPreferenceController
.
Lógica de back-end
Quando o dispositivo está dobrado, LogicalDisplayMapper
e
PowerManager
controlam o comportamento do dispositivo da seguinte maneira:
LogicalDisplayMapper
lê o valor da configuraçãoFOLD_LOCK_BEHAVIOR
usandoFoldSettingProvider
.- Com base no valor da configuração:
- Se o valor for
stay_awake_on_fold_key
, o dispositivo vai permanecer ativo. - Se o valor for
selective_stay_awake_key
ousleep_on_fold_key
,LogicalDisplayMapper
enviará um sinal#goToSleep
paraPowerManager
.- Para
selective_stay_awake_key
, o indicador#goToSleep
inclui a flagPowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP
. Isso faz com que o dispositivo mostre a tela de bloqueio sem exigir autenticação. - Para
sleep_on_fold_key
, o sinal#goToSleep
é enviado sem essa flag, fazendo com que o dispositivo seja bloqueado.
- Para
- Se o valor for