Bearbeiten von „Farbe der Netzwerkverbindungen

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
[[Datei:Netzwerkverbindungen.png|mini|Die Netzwerksymbole in Blau (ab Android {{Android|4.0}}) und Grau]]
[[Datei:Netzwerkverbindungen.png|mini|Die Netzwerksymbole in Blau (ab Android {{Android|4.0}}) und Grau]]
Die [[Android]]-[[Benachrichtigungszeile]] beinhaltet unter anderem Symbole für aktive Netzwerkverbindungen wie [[WLAN]] oder das Mobile Netzwerk (GPRS/UMTS/[[LTE]] u.Ä.). Immer wieder, so auch in den Foren von Android-Hilfe.de<ref>http://www.android-hilfe.de/android-allgemein/395599-bedeuten-die-farben-bei-dem-netzempfang.html</ref><ref>http://www.android-hilfe.de/motorola-atrix-forum/179474-empfangsbalken-edge-anzeige-mal-blau-mal-weiss.html</ref><ref>http://www.android-hilfe.de/galaxy-nexus-forum/175043-geloest-farbe-der-netzwerkverbindungen.html</ref><ref>http://www.android-hilfe.de/huawei-ascend-y200-forum/258410-empfangsbalken-mal-gruen-mal-weiss.html</ref><ref>http://www.android-hilfe.de/huawei-ideos-x3-u8510-forum/196762-empfangsbalken-weiss-statt-gruen.html</ref>, kommt die Frage auf, warum die Symbole mal grau und mal grün (unter Android {{Android|2}}) bzw. blau (unter Android {{Android|4}}) sind.
Die Android-Benachrichtigungszeile beinhaltet unter anderem auch Symbole für aktive Netzwerkverbindungen wie WLAN oder das Mobile Netzwerk (UMTS/GPRS u.ä.). Immer wieder, so auch in den Foren von Android-Hilfe.de<ref>http://www.android-hilfe.de/android-allgemein/395599-bedeuten-die-farben-bei-dem-netzempfang.html</ref><ref>http://www.android-hilfe.de/motorola-atrix-forum/179474-empfangsbalken-edge-anzeige-mal-blau-mal-weiss.html</ref><ref>http://www.android-hilfe.de/galaxy-nexus-forum/175043-geloest-farbe-der-netzwerkverbindungen.html</ref><ref>http://www.android-hilfe.de/huawei-ascend-y200-forum/258410-empfangsbalken-mal-gruen-mal-weiss.html</ref><ref>http://www.android-hilfe.de/huawei-ideos-x3-u8510-forum/196762-empfangsbalken-weiss-statt-gruen.html</ref>, kommt die Frage auf, warum die Symbole mal grau und mal Grün (unter Android {{Android|2}}) bzw. Blau (unter Android {{Android|4}}) sind.


Das Farbspiel ist selbstverständlich nicht bedeutungslos und hat einen Hintergrund: Ist das Symbol blau (bzw. grün), so besteht eine aktive, unbeschränkte Internetverbindung (unabhängig, ob diese über WLAN oder einem mobilen Netzwerk hergestellt wurde). Ist das Symbol hingegen grau, so besteht zwar eine Verbindung mit einem Netzwerk, allerdings konnte keine Internetverbindung hergestellt werden, oder es wurde eine Einschränkung erkannt (bspw. muss sich der Nutzer für das WLAN-Netz authentifizieren, o.ä.), jedenfalls '''kann''' es Probleme bei der Kommunikation mit dem Internet geben.
=== Farberklärung ===
Das dieses Verahlten nicht willkürlig ist, sollte klar sein. Dieses Farbspiel hat in der Tat eine Bedeutung: Sind die Symbole Farbig (Grün oder Blau), bedeutet dies, das die Hintergrundatensyncronisation aktiv ist, bzw. das eine Verbindung mit den Google-Servern besteht.


Auch wenn die Unterscheidung der Farbgebung der Netzwerk-Symbole im [[AOSP]] enthalten ist, verändern einige Hersteller das User Interface, wobei die Farbgebung verändert oder die Unterscheidung komplett weg gelassen werden kann. So unterscheidet [[HTC Sense|HTC's Sense]] nur zwischen einer hergestellten Internetverbindung (weiß) und einem dabei festgestellten Problem (grau). Eine zusätzliche Authentifikation oder andere Einschränkung ist hier nicht in der Statusleiste ersichtlich.
D.h.: Sind die Symbole farblos (Grau), bedeutet dies, dass eines dieser 4 Szenarien zutrifft:
* kein Kontakt zum Internet
* Routing zu den Googleservern gestört (keine Verbindung zu den Google-Servern)
* Ausfall der Google Server
* Hintergrundsynchronisation ausgeschaltet


== Technische Umsetzung ==
=== Siehe auch ===
Die Statusbar ist Teil der SystemUI.apk, welche Teil des AOSP Projektes ist und der Source Code somit öffentlich zur Verfügung steht.<ref>{{Internetquelle|titel = platform/frameworks/base - Git at Google|url = https://android.googlesource.com/platform/frameworks/base/|zugriff = 2015-11-29|werk = android.googlesource.com}}</ref> Die Farbgebung betrifft hierbei mehrere Symbole, zum Verständnis der Umsetzung ziehen wir hier das Symbol für die WiFi (WLAN) Verbindung heran. Die möglichen Symbole werden dabei in der Klasse WifiIcons definiert:<ref>{{Internetquelle|titel = android/platform_frameworks_base|url = https://github.com/android/platform_frameworks_base/blob/7de7e0b0dd61acba813dec3a07d29f1d62026470/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiIcons.java#L22-L33|zugriff = 2015-11-29|werk = GitHub}}</ref>
<syntaxhighlight lang="java">
static final int[][] WIFI_SIGNAL_STRENGTH = {
{ R.drawable.stat_sys_wifi_signal_0,
  R.drawable.stat_sys_wifi_signal_1,
  R.drawable.stat_sys_wifi_signal_2,
  R.drawable.stat_sys_wifi_signal_3,
  R.drawable.stat_sys_wifi_signal_4 },
{ R.drawable.stat_sys_wifi_signal_0_fully,
  R.drawable.stat_sys_wifi_signal_1_fully,
  R.drawable.stat_sys_wifi_signal_2_fully,
  R.drawable.stat_sys_wifi_signal_3_fully,
  R.drawable.stat_sys_wifi_signal_4_fully }
};
</syntaxhighlight>
 
Das Array <code>WIFI_SIGNAL_STRENGTH</code> hält dabei zwei weitere Arrays (auch als multidimensionales Array bezeichnet), die die einzelnen Symbole definieren (Array 1 (bzw. 0 bei korrekter Zählweise), ohne '''_fully''' im Namen, sind dabei die "grauen" Symbole, Array 2 (bzw. 1), mit '''_fully''' im Namen, die blauen). Die Icons selbst liegen als [http://developer.android.com/intl/vi/reference/android/graphics/drawable/VectorDrawable.html VectorDrawable] vor, und können am einfachsten mit dem [[Android Studio]] visualisiert werden. Genutzt werden die Icons in der Klasse WifiSignalController, der Updates für die WiFi-Signale verarbeitet:<ref>{{Internetquelle|titel = android/platform_frameworks_base|url = https://github.com/android/platform_frameworks_base/blob/d59921149bb5948ffbcb9a9e832e9ac1538e05a0/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java#L59|zugriff = 2015-11-29|werk = GitHub}}</ref>
<syntaxhighlight lang="java">
mCurrentState.iconGroup = mLastState.iconGroup = new IconGroup(
"Wi-Fi Icons",
WifiIcons.WIFI_SIGNAL_STRENGTH,
WifiIcons.QS_WIFI_SIGNAL_STRENGTH,
AccessibilityContentDescriptions.WIFI_CONNECTION_STRENGTH,
WifiIcons.WIFI_NO_NETWORK,
WifiIcons.QS_WIFI_NO_NETWORK,
WifiIcons.WIFI_NO_NETWORK,
WifiIcons.QS_WIFI_NO_NETWORK,
AccessibilityContentDescriptions.WIFI_NO_CONNECTION
);
</syntaxhighlight>
sowie in der Routine, die die Icon-ID zurückliefert:<ref>{{Internetquelle|titel = android/platform_frameworks_base|url = https://github.com/android/platform_frameworks_base/blob/d59921149bb5948ffbcb9a9e832e9ac1538e05a0/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java#L135-L143|zugriff = 2015-11-29|werk = GitHub}}</ref>
<syntaxhighlight lang="java" line>
public int getCurrentIconId() {
if (mCurrentState.connected) {
return getIcons().mSbIcons[mCurrentState.inetCondition][mCurrentState.level];
} else if (mCurrentState.enabled) {
return getIcons().mSbDiscState;
} else {
return getIcons().mSbNullState;
}
}
</syntaxhighlight>
Entscheidend ist hier der erste if-Zweig in Zeile 2-4. Falls die aktuelle Verbindung aktiv und mit einem Netzwerk verbunden ist, wird über die Variable <code>mCurrentState.inetCondition</code> entschieden, ob das Array 0 (graue Symbole) oder Array 1 (blaue Symbole) verwendet wird. Die Variable selbst wird in der Update-Routine für die aktuelle Verbindung gesetzt:<ref>{{Internetquelle|titel = android/platform_frameworks_base|url = https://github.com/android/platform_frameworks_base/blob/d59921149bb5948ffbcb9a9e832e9ac1538e05a0/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java#L79-L82|zugriff = 2015-11-29|werk = GitHub}}</ref>
<syntaxhighlight lang="java">
public void updateConnectivity(BitSet connectedTransports, BitSet validatedTransports) {
mCurrentState.inetCondition = validatedTransports.get(mTransportType) ? 1 : 0;
notifyListenersIfNecessary();
}
</syntaxhighlight>
Die übergebene Variable <code>validatedTarnsports</code> beinhaltet den Status aller aktiven Verbindungen, und wird in der Klasse NetworkControllerImpl über die Update-Routine befüllt:<ref>{{Internetquelle|titel = android/platform_frameworks_base|url = https://github.com/android/platform_frameworks_base/blob/d59921149bb5948ffbcb9a9e832e9ac1538e05a0/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java#L568-L601|zugriff = 2015-11-29|werk = GitHub}}</ref>
<syntaxhighlight lang="java" line>
private void updateConnectivity() {
mConnectedTransports.clear();
mValidatedTransports.clear();
for (NetworkCapabilities nc :
mConnectivityManager.getDefaultNetworkCapabilitiesForUser(mCurrentUserId)) {
for (int transportType : nc.getTransportTypes()) {
mConnectedTransports.set(transportType);
if (nc.hasCapability(NET_CAPABILITY_VALIDATED)) {
mValidatedTransports.set(transportType);
}
}
}
 
if (CHATTY) {
Log.d(TAG, "updateConnectivity: mConnectedTransports=" + mConnectedTransports);
Log.d(TAG, "updateConnectivity: mValidatedTransports=" + mValidatedTransports);
}
 
mInetCondition = !mValidatedTransports.isEmpty();
 
pushConnectivityToSignals();
}
 
/**
* Pushes the current connectivity state to all SignalControllers.
*/
private void pushConnectivityToSignals() {
// We want to update all the icons, all at once, for any condition change
for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) {
mobileSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports);
}
mWifiSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports);
mEthernetSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports);
}
</syntaxhighlight>
Eine Verbindung wird dann '''blau''' markiert, wenn sie den Status <code>NET_CAPABILITY_VALIDATED</code> hat (siehe Code-Zeile 8-10), welcher im Code wie folgt beschrieben wird:<ref>{{Internetquelle|titel = android/platform_frameworks_base|url = https://github.com/android/platform_frameworks_base/blob/d89b76a58dcffa7dbc5974d14c7914f44233bef3/core/java/android/net/NetworkCapabilities.java#L177|zugriff = 2015-11-29|werk = GitHub}}</ref><blockquote>Indicates that connectivity on this network was successfully validated. For example, for a</blockquote><blockquote>network with NET_CAPABILITY_INTERNET, it means that Internet connectivity was successfully</blockquote><blockquote>detected.</blockquote>
 
== Siehe auch ==
* [[Symbole in der Benachrichtigungszeile]]
*[[4G oder LTE wonach richtet sich die Anzeige im Status|4G oder LTE: Wonach richtet sich die Anzeige im Status?]]
 
== Einzelnachweise ==
<references />
<references />
[[Kategorie:Allgemein]]
Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist, oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Android Wiki-Beiträge automatisch unter der „Creative Commons Attribution/Share-Alike Lizenz 3.0“ stehen. Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

Um das Wiki vor automatisiertem Bearbeitungsspam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)