it-swarm.com.de

Gibt es eine Möglichkeit, das System/die Navigationsleiste in Android auszublenden ICS

Ich möchte die Diskussion über das Ausblenden des Systems/der Navigationsleiste am unteren Bildschirmrand auf Android Ice Cream Sandwich-Geräten (4.0 und höher) erweitern.

Es gibt bereits einen Thread ( Gibt es eine Möglichkeit, die Systemleiste in Android 3.0 auszublenden? Es ist ein internes Gerät, und ich verwalte die Navigation ) über das Ausblenden der Leiste auf Honeycomb-Geräten. Meine Kunden werden jedoch die neuesten Eiscreme-Sandwichgeräte verwenden und sind sehr daran interessiert, die Leiste am unteren Bildschirmrand zu verstecken. Ihre Anwendung ist nicht für die regelmäßige Verwendung durch den Verbraucher bestimmt, und es ist sehr wichtig, dass sie den gesamten Bildschirm übernehmen, um ihre Erfahrungen bereitzustellen. Wie ist es möglich, diesen Balken auszublenden - oder zumindest das Verhalten aller Schaltflächen außer Kraft zu setzen -, ohne die Geräte zu verwurzeln oder die Firmware neu zu schreiben?

20

Check out SYSTEM_UI_FLAG_HIDE_NAVIGATION , dieses Flag verbirgt die Navigationsleiste, bis der Benutzer mit dem Gerät interagiert. Es wurde in Android 4.0 eingeführt. Sie können dieses Flag beispielsweise wie folgt aktivieren:

getWindow().getDecorView()
           .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Beachten Sie, dass die Navigation nicht automatisch wieder verschwindet. Sie müssen sie jedes Mal einstellen, nachdem der Benutzer mit dem Gerät interagiert hat. 

Alternativ können Sie die Navigation durch Verwendung von SYSTEM_UI_FLAG_LOW_PROFILE weniger aufdringlich machen. Dadurch werden die Schaltflächen in kleine Punkte (z. B. wie in der Kamera-App) umgewandelt. 

24
user658042

auf gerooteten Geräten verwende ich den folgenden ADB-Befehl

adb Shell pm disable com.Android.systemui

navigationsleiste dauerhaft ausblenden. Um es noch einmal zu zeigen, renne

adb Shell pm enable com.Android.systemui

bisher funktioniert es gut für mich

12
Nartus Team

Mit dem folgenden Code können Sie die Navigation ausblenden

getWindow().getDecorView()
           .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Das Problem mit dem oben genannten ist jedoch, dass es sichtbar wird, sobald der Benutzer den Bildschirm berührt.

In Android KitKat gibt es eine Funktion namens IMMERSIVE, die die Benachrichtigungsleiste und die Navigation verbirgt. Es wird nicht angezeigt, auch wenn der Benutzer mit dem Bildschirm interagiert. Der Benutzer kann es jedoch sichtbar machen, indem Sie es vom oberen Bildschirmrand nach unten wischen. Unten ist der Code, um dies zu erreichen

//Initializew this in onCreate()
View mDecorView = getWindow().getDecorView();

//Then call this function
private void hideSystemUI() {
     mDecorView.setSystemUiVisibility(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_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

In meinem Fall wollte ich jedoch nie, dass die Navigations- und Benachrichtigungsleiste sichtbar ist, auch wenn der Benutzer vom oberen Bildschirmrand nach unten wischt. Ich habe es probiert und konnte es teilweise erreichen. Was ich tat, war, dass ich eine CountDownTimer implementierte, die jede Sekunde oder so hideSystemUI() aufrufen würde. Ich weiß, dass es nicht der beste Weg ist. Aber ich habe keine andere Lösung dafür bekommen.

Wenn jemand welche bekommt, dann lass mich wissen, wie Navigation und Benachrichtigungsleiste dauerhaft ausgeblendet werden können.

Sehen Sie dieses Video, um diese Funktion besser zu verstehen. 

4
ik024

Update - Es gibt eine Problemumgehung, die für solche Fälle verwendet werden kann (manuelle Einrichtung der App für den Client). In der Tat kann die Navigationsleiste nicht innerhalb des gegebenen Rahmens entfernt werden. 

Es gibt jedoch eine Lösung zum Ausblenden der Navigationsleiste, wenn das Gerät als Option gerootet wird für Sie. Hier ist, wie:

Root-Gerät

Installieren und starten Sie Busybox

HideBar installieren

In HideBar gibt es eine Option zum Ausführen des Kiosk-Modus, bei der die Navigationsleiste nicht erneut angezeigt werden kann. Unnötig zu sagen, dass Sie wirklich vorsichtig sein müssen.

Risiken involviert: 

  • das Gerät zu mauern

  • die Installation von BusyBox ist falsch, was die Sache etwas komplizierter machen könnte, obwohl es sehr unwahrscheinlich ist, dass Informationen verloren gehen. 

  • in eine Pattsituation geraten, in der Sie Ihre App nicht beenden können. Wenn zum Beispiel 1 Ihre GUI keine Schließen-Option bietet, 2 startet Ihre App automatisch beim Start, 3 HideBar lässt keine Möglichkeit zu, die Navigationsleiste erneut anzuzeigen, und 4 HideBar blendet die Navigationsleiste beim Start aus Dies kann durch einfaches Anhalten/Deinstallieren der App von adb überwunden werden.

Hier sind andere identische Fragen:

3
ılǝ

Obwohl dies eine harte Lösung ist, ist meiner Meinung nach die Aufmerksamkeit verdient, da das Gerät nicht gerootet werden muss: getWindow().getDecorView().setSystemUiVisibility(8);.

2
Bianca D.

Zum Ausblenden der Statusleiste und der Navigationsleiste in Android ics verwenden

LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
1
sukumar

BEARBEITEN: Ab 4.4 (19) können Sie Folgendes verwenden, um den sogenannten "IMMERSIVEN MODUS" zu aktivieren. Es wurde für Googles Cardboard vrtoolkit eingeführt, kann aber allgemein verwendet werden.

setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE)

https://developer.Android.com/training/system-ui/immersive.html

Aufgrund meiner Bemühungen scheint Folgendes nicht zu funktionieren: setSystemUiVisibility (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) funktioniert auf Tablets.

Es funktioniert auf Smartphones (getestet mit einem Nexus 4 Mako), wird jedoch bei einem Touch/Click-Ereignis erneut angezeigt. Dies scheint auch den Fokus auf die Leiste zu fokussieren, sodass Sie zweimal klicken müssen, um den Fokus wieder auf die Ansicht zu richten.

Ich habe versucht, eine Möglichkeit zu finden, das Ereignis einzufangen, das die Leiste tatsächlich erneut anzeigt. Kein Glück.

Da ich hartnäckig bin, werde ich den Android -Os-Code herunterladen, den Eclipse-Debugger starten und auf die Jagd gehen. Dies ist kein Fehler - die Navigationsleiste ist für den Lebenszyklus einer App von entscheidender Bedeutung.

Ich habe Apps gesehen, die das gemacht haben (Spiele und so), also gibt es einen Weg ohne Rooting.

1

Sie können es nur dann ausblenden, wenn Sie das Gerät gerootet haben. Natürlich gibt es eine Problemumgehung, die möglicherweise nicht zu Ihrer Anforderung passt, aber derzeit sind einige bekannte Apps auf dem Markt, die diese Strategie verwenden, um diese deaktivierte Menüleistenfunktion für ihre Apps zu erreichen.

  • Erteilen Sie das Administratorprivileg.
  • Legen Sie ein Kennwort fest und sperren Sie das Gerät mithilfe der Geräte-Admin-API
  • Laden Sie dann die UIs oben auf dem Bildschirm für die native Sperre. (Natürlich wird hier der Hintergrundsperrbildschirm angezeigt, wenn zwischen den Aktivitäten ein Übergang stattfindet. Wenn die Logik jedoch gut organisiert ist, wird sie vom Benutzer glatt und weniger wahrgenommen.)
  • Setzen Sie das Kennwort bei Verwendung von resetPassword ("", 0) des Device Policy Manager-Objekts auf "" zurück, wenn Sie es aktivieren möchten.
0
M P Mathugama

Sie können die Navigationsleiste unter Android 4.0 und höher mit der Markierung SYSTEM_UI_FLAG_HIDE_NAVIGATION ausblenden. Dieses Snippet verbirgt sowohl die Navigationsleiste als auch die Statusleiste:

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions

Siehe Folgendes: Ausblenden der Navigationsleiste

0
dayanruben

platzieren Sie diesen Code in Ihrer Anwendung in der Manifestdatei, um die Standard-Registerkartenleiste auszublenden

<Application
Android:theme="@Android:style/Theme.Black.NoTitleBar.Fullscreen" <!--
other parameters of application tag-->
>

dann erstellen Sie ein lineares oder relatives Layout und platzieren Sie es in Ihrem Aktivitätslayout.

0
Adeel

kann sein, dass das Tastenverhalten ausreichend ist, können Sie in meiner Antwort nachschauen hier

sie haben immer noch die Bar, aber Sie können die App nicht ohne einen Neustart des Tablets beenden

0
Philippe T.