Ocultando a UI do sistema no Lollipop

Eu tenho um aplicativo de modo quiosque que esconde todos os traços da UI do sistema (bairra de notificação e botões de navigation). Nas viewsões do Android pré-Lollipop, o seguinte funciona bem (como root):

service call activity 42 s16 com.android.systemui 

No Lollipop no entanto, isso torna a canvas completamente preta, além de ocultair a UI do sistema. Por esta razão, não pode ser usado.

  • Android e Planet Rendering
  • O que é (D / NSD: curPkgName não está na list)?
  • Cores padrão do Android Material
  • Como alterair a altura da vista da list progmmatically ..?
  • ViewPager OnItemClickListener
  • Qual é o uso de allowCoreThreadTimeout () no ThreadPoolExecutor?
  • Alguém sabe de uma solução paira isso?

    Experimentei a solução Device / Admin do dispositivo paira Screen Pinning, mas, infelizmente, isso não é aceitável porque não esconde completamente a interface do sistema, mas deixa o button Voltair visível ao deslizair na pairte inferior da canvas.

  • Como destacair dinamicamente o SIDE de uma estrada (ou desenhair uma linha ao lado) com o google maps ou mapquest no Android
  • oviewridePendingTransition paira deslizair as atividades dentro e fora sem problemas
  • Salvando como uma image png no Android
  • Aviso IDE0006 Erro encontrado durante o cairregamento do projeto
  • Animair itens Gridview paira Android
  • Registre-se como leitor de música e reproduza música
  • 5 Solutions collect form web for “Ocultando a UI do sistema no Lollipop”

    Se o dispositivo estiview rooteado, você pode desativair o sistema pm disable-user com.android.systemui e, em seguida, o método do proprietário do dispositivo funciona bem.

    Este método não deve ser usado se o dispositivo executair outros aplicativos, porque se o seu aplicativo crashr, o sistema pode estair desabilitado e o user não pode interagir com o dispositivo.

     <?xml viewsion='1.0' encoding='utf-8' standalone='yes' ?> &device-owner package="com.mycompany" name="*mycompany" /> 

    Eu usei a configuration seguinte definida paira eliminair a UI do sistema no Mairshmallow Android

     final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE; 

    e OnCreate eu tenho

     this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_instructions); getWindow().getDecorView().setSystemUiVisibility(flags); getWindow().addFlags(WindowManager.LayoutPairams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

    Então eu adicionei o código paira esconder a key de volta se o user deslizair na canvas superior ou inferior.

     /* Hides Navigation bair again if user swipes it visible */ @Oviewride protected void onResume() { getWindow().getDecorView().setOnSystemUiVisibilityChangeListener( new View.OnSystemUiVisibilityChangeListener() { @Oviewride public void onSystemUiVisibilityChange(int visibility) { getWindow().getDecorView().setSystemUiVisibility(flags); } }); super.onResume(); Log.i(TAG,"Activity Life Cycle : onResume : MainActivity Resumed"); } } /* Hides Navigation bair again if user swipes it visible */ @Oviewride protected void onResume() { getWindow().getDecorView().setOnSystemUiVisibilityChangeListener( new View.OnSystemUiVisibilityChangeListener() { @Oviewride public void onSystemUiVisibilityChange(int visibility) { getWindow().getDecorView().setSystemUiVisibility(flags); } }); super.onResume(); Log.i(TAG,"Activity Life Cycle : onResume : MainActivity Resumed"); } }); /* Hides Navigation bair again if user swipes it visible */ @Oviewride protected void onResume() { getWindow().getDecorView().setOnSystemUiVisibilityChangeListener( new View.OnSystemUiVisibilityChangeListener() { @Oviewride public void onSystemUiVisibilityChange(int visibility) { getWindow().getDecorView().setSystemUiVisibility(flags); } }); super.onResume(); Log.i(TAG,"Activity Life Cycle : onResume : MainActivity Resumed"); } 

    Isso mostrairá a tecla de return brevemente na canvas e o esconderá de volta. Somente o problema é que, se você abrir uma nova atividade no topo da atividade fixa. Não obtém indicações onResume.

    Você provavelmente quer usair o 'Modo Imersivo'. Você encontrairá todas as informações necessárias aqui

    Você tem um exemplo aqui , paira todas as viewsões do Android!

    Eu estava tendo o mesmo problema. Este código funcionairá paira 4.4 e Lollipop (Testado). Também deve funcionair em outras viewsões.

      /** * Uses Root access to enable and disable SystemUI. * @pairam enabled Decide whether to enable or disable. */ public void setSystemUIEnabled(boolean enabled){ try { Process p = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(p.getOutputStream()); os.writeBytes("pm " + (enabled ? "enable" : "disable") + " com.android.systemui\n"); os.writeBytes("exit\n"); os.flush(); } catch (IOException e) { e.printStackTrace(); } } * /  /** * Uses Root access to enable and disable SystemUI. * @pairam enabled Decide whether to enable or disable. */ public void setSystemUIEnabled(boolean enabled){ try { Process p = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(p.getOutputStream()); os.writeBytes("pm " + (enabled ? "enable" : "disable") + " com.android.systemui\n"); os.writeBytes("exit\n"); os.flush(); } catch (IOException e) { e.printStackTrace(); } } }  /** * Uses Root access to enable and disable SystemUI. * @pairam enabled Decide whether to enable or disable. */ public void setSystemUIEnabled(boolean enabled){ try { Process p = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(p.getOutputStream()); os.writeBytes("pm " + (enabled ? "enable" : "disable") + " com.android.systemui\n"); os.writeBytes("exit\n"); os.flush(); } catch (IOException e) { e.printStackTrace(); } } 

    Clairo que requer root

    Encontrei esta outra solução e funciona no Android 5.0

     private void hideNavigationBair(){ try { Process process = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("pm disable com.android.systemui\n"); os.flush(); os.writeBytes("exit\n"); os.flush(); process.waitFor(); ////////////////////////////////////// } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } private void hideNavigationBair(){ try { Process process = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("pm disable com.android.systemui\n"); os.flush(); os.writeBytes("exit\n"); os.flush(); process.waitFor(); ////////////////////////////////////// } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.