Loading packages/SystemUI/res/layout-xlarge/sysbar_panel_system.xml +30 −20 Original line number Diff line number Diff line Loading @@ -86,19 +86,24 @@ android:layout_width="match_parent" android:layout_height="wrap_content" > <RelativeLayout android:layout_width="120dip" android:layout_height="wrap_content" android:layout_alignParentLeft="true" > <ImageView android:id="@+id/battery_meter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:src="@drawable/dots_empty" android:src="@drawable/battery" /> <TextView android:id="@+id/battery_info" android:layout_width="wrap_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_below="@id/battery_meter" /> </RelativeLayout> <com.android.systemui.statusbar.Clock style="@*android:style/TextAppearance.StatusBar.Icon" Loading @@ -118,19 +123,24 @@ android:layout_below="@id/clock" /> <RelativeLayout android:layout_width="120dip" android:layout_height="wrap_content" android:layout_alignParentRight="true" > <ImageView android:id="@+id/signal_meter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:src="@drawable/signal" /> <TextView android:id="@+id/signal_info" android:layout_width="wrap_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_below="@id/signal_meter" /> </RelativeLayout> </RelativeLayout> Loading packages/SystemUI/src/com/android/systemui/statusbar/tablet/SystemPanel.java +99 −5 Original line number Diff line number Diff line Loading @@ -29,6 +29,11 @@ import android.content.res.Resources; import android.graphics.PixelFormat; import android.graphics.Rect; import android.media.AudioManager; import android.net.NetworkInfo; import android.net.wifi.SupplicantState; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.Handler; import android.os.IBinder; Loading Loading @@ -59,6 +64,8 @@ import android.widget.TextSwitcher; import android.widget.TextView; import android.widget.Toast; import java.util.List; import com.android.systemui.statusbar.*; import com.android.systemui.R; Loading @@ -85,6 +92,7 @@ public class SystemPanel extends LinearLayout { private TextView mSignalText; private final AudioManager mAudioManager; private final WifiManager mWifiManager; private BroadcastReceiver mReceiver = new BroadcastReceiver() { Loading @@ -94,21 +102,100 @@ public class SystemPanel extends LinearLayout { if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) { mSoundButton.setAlpha(getSilentMode() ? 0x7F : 0xFF); } else if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { // hack for now mBar.updateBatteryDisplay(intent.getIntExtra("level", 0), (intent.getIntExtra("plugged", 0) != 0)); updateBattery(intent); } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION) || action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION) || action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION) || action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { updateWifi(intent); } } }; boolean mWifiEnabled, mWifiConnected; int mWifiLevel; String mWifiSsid; private void updateWifi(Intent intent) { if (TabletStatusBarService.DEBUG) Slog.d(TabletStatusBarService.TAG, "updateWifi: " + intent); final String action = intent.getAction(); final boolean wasConnected = mWifiConnected; if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { mWifiEnabled = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN) == WifiManager.WIFI_STATE_ENABLED; } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { final NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); mWifiConnected = networkInfo != null && networkInfo.isConnected(); } else if (action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) { final NetworkInfo.DetailedState detailedState = WifiInfo.getDetailedStateOf( (SupplicantState)intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)); mWifiConnected = detailedState == NetworkInfo.DetailedState.CONNECTED; } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) { final int newRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200); int newSignalLevel = WifiManager.calculateSignalLevel(newRssi, 6) * 20; mWifiLevel = mWifiConnected ? newSignalLevel : 0; } if (mWifiConnected && !wasConnected) { WifiInfo info = mWifiManager.getConnectionInfo(); if (TabletStatusBarService.DEBUG) Slog.d(TabletStatusBarService.TAG, "updateWifi: just connected: info=" + info); if (info != null) { // grab the initial signal strength mWifiLevel = WifiManager.calculateSignalLevel(info.getRssi(), 101); // find the SSID mWifiSsid = info.getSSID(); if (mWifiSsid == null) { // OK, it's not in the connectionInfo; we have to go hunting for it List<WifiConfiguration> networks = mWifiManager.getConfiguredNetworks(); for (WifiConfiguration net : networks) { if (net.networkId == info.getNetworkId()) { mWifiSsid = net.SSID; break; } } } } } if (!mWifiEnabled) { mWifiSsid = "disabled"; mWifiLevel = 0; } else if (!mWifiConnected) { mWifiSsid = "disconnected"; mWifiLevel = 0; } else if (mWifiSsid == null) { mWifiSsid = "unknown"; } mSignalMeter.setImageResource(R.drawable.signal); mSignalMeter.setImageLevel(mWifiLevel); mSignalText.setText(String.format("Wi-Fi: %s", mWifiSsid)); // XXX: localize // hack for now mBar.setWifiMeter(mWifiLevel); } public void setBar(TabletStatusBarService bar) { mBar = bar; } public void setBatteryLevel(int level, boolean plugged) { public void updateBattery(Intent intent) { final int level = intent.getIntExtra("level", 0); final boolean plugged = intent.getIntExtra("plugged", 0) != 0; mBatteryMeter.setImageResource(plugged ? R.drawable.battery_charging : R.drawable.battery); mBatteryMeter.setImageLevel(level); mBatteryText.setText(String.format("Battery: %d%%", level)); // hack for now mBar.setBatteryMeter(level, plugged); } public SystemPanel(Context context, AttributeSet attrs) { Loading @@ -123,6 +210,10 @@ public class SystemPanel extends LinearLayout { (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE); // wifi status info mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); // audio status notifications mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); } Loading Loading @@ -171,7 +262,10 @@ public class SystemPanel extends LinearLayout { IntentFilter filter = new IntentFilter(); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_POWER_CONNECTED); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(WifiManager.RSSI_CHANGED_ACTION); getContext().registerReceiver(mReceiver, filter); mBatteryMeter = (ImageView)findViewById(R.id.battery_meter); Loading packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java +8 −5 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ import com.android.systemui.statusbar.*; import com.android.systemui.R; public class TabletStatusBarService extends StatusBarService { public static final boolean DEBUG = false; public static final boolean DEBUG = true; public static final String TAG = "TabletStatusBar"; Loading Loading @@ -206,13 +206,16 @@ public class TabletStatusBarService extends StatusBarService { } } StatusBarIcon mBatterySBI; StatusBarIcon mSignalSBI; public void updateBatteryDisplay(int level, boolean plugged) { public void setBatteryMeter(int level, boolean plugged) { if (DEBUG) Slog.d(TAG, "battery=" + level + (plugged ? " - plugged" : " - unplugged")); mBatteryMeter.setImageResource(plugged ? R.drawable.battery_charging : R.drawable.battery); mBatteryMeter.setImageLevel(level); mSystemPanel.setBatteryLevel(level, plugged); } public void setWifiMeter(int level) { if (DEBUG) Slog.d(TAG, "wifi=" + level); mSignalMeter.setImageResource(R.drawable.signal); mSignalMeter.setImageLevel(level); } public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon) { Loading Loading
packages/SystemUI/res/layout-xlarge/sysbar_panel_system.xml +30 −20 Original line number Diff line number Diff line Loading @@ -86,19 +86,24 @@ android:layout_width="match_parent" android:layout_height="wrap_content" > <RelativeLayout android:layout_width="120dip" android:layout_height="wrap_content" android:layout_alignParentLeft="true" > <ImageView android:id="@+id/battery_meter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:src="@drawable/dots_empty" android:src="@drawable/battery" /> <TextView android:id="@+id/battery_info" android:layout_width="wrap_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_below="@id/battery_meter" /> </RelativeLayout> <com.android.systemui.statusbar.Clock style="@*android:style/TextAppearance.StatusBar.Icon" Loading @@ -118,19 +123,24 @@ android:layout_below="@id/clock" /> <RelativeLayout android:layout_width="120dip" android:layout_height="wrap_content" android:layout_alignParentRight="true" > <ImageView android:id="@+id/signal_meter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:src="@drawable/signal" /> <TextView android:id="@+id/signal_info" android:layout_width="wrap_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_below="@id/signal_meter" /> </RelativeLayout> </RelativeLayout> Loading
packages/SystemUI/src/com/android/systemui/statusbar/tablet/SystemPanel.java +99 −5 Original line number Diff line number Diff line Loading @@ -29,6 +29,11 @@ import android.content.res.Resources; import android.graphics.PixelFormat; import android.graphics.Rect; import android.media.AudioManager; import android.net.NetworkInfo; import android.net.wifi.SupplicantState; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.Handler; import android.os.IBinder; Loading Loading @@ -59,6 +64,8 @@ import android.widget.TextSwitcher; import android.widget.TextView; import android.widget.Toast; import java.util.List; import com.android.systemui.statusbar.*; import com.android.systemui.R; Loading @@ -85,6 +92,7 @@ public class SystemPanel extends LinearLayout { private TextView mSignalText; private final AudioManager mAudioManager; private final WifiManager mWifiManager; private BroadcastReceiver mReceiver = new BroadcastReceiver() { Loading @@ -94,21 +102,100 @@ public class SystemPanel extends LinearLayout { if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) { mSoundButton.setAlpha(getSilentMode() ? 0x7F : 0xFF); } else if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { // hack for now mBar.updateBatteryDisplay(intent.getIntExtra("level", 0), (intent.getIntExtra("plugged", 0) != 0)); updateBattery(intent); } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION) || action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION) || action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION) || action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { updateWifi(intent); } } }; boolean mWifiEnabled, mWifiConnected; int mWifiLevel; String mWifiSsid; private void updateWifi(Intent intent) { if (TabletStatusBarService.DEBUG) Slog.d(TabletStatusBarService.TAG, "updateWifi: " + intent); final String action = intent.getAction(); final boolean wasConnected = mWifiConnected; if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { mWifiEnabled = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN) == WifiManager.WIFI_STATE_ENABLED; } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { final NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); mWifiConnected = networkInfo != null && networkInfo.isConnected(); } else if (action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) { final NetworkInfo.DetailedState detailedState = WifiInfo.getDetailedStateOf( (SupplicantState)intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)); mWifiConnected = detailedState == NetworkInfo.DetailedState.CONNECTED; } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) { final int newRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200); int newSignalLevel = WifiManager.calculateSignalLevel(newRssi, 6) * 20; mWifiLevel = mWifiConnected ? newSignalLevel : 0; } if (mWifiConnected && !wasConnected) { WifiInfo info = mWifiManager.getConnectionInfo(); if (TabletStatusBarService.DEBUG) Slog.d(TabletStatusBarService.TAG, "updateWifi: just connected: info=" + info); if (info != null) { // grab the initial signal strength mWifiLevel = WifiManager.calculateSignalLevel(info.getRssi(), 101); // find the SSID mWifiSsid = info.getSSID(); if (mWifiSsid == null) { // OK, it's not in the connectionInfo; we have to go hunting for it List<WifiConfiguration> networks = mWifiManager.getConfiguredNetworks(); for (WifiConfiguration net : networks) { if (net.networkId == info.getNetworkId()) { mWifiSsid = net.SSID; break; } } } } } if (!mWifiEnabled) { mWifiSsid = "disabled"; mWifiLevel = 0; } else if (!mWifiConnected) { mWifiSsid = "disconnected"; mWifiLevel = 0; } else if (mWifiSsid == null) { mWifiSsid = "unknown"; } mSignalMeter.setImageResource(R.drawable.signal); mSignalMeter.setImageLevel(mWifiLevel); mSignalText.setText(String.format("Wi-Fi: %s", mWifiSsid)); // XXX: localize // hack for now mBar.setWifiMeter(mWifiLevel); } public void setBar(TabletStatusBarService bar) { mBar = bar; } public void setBatteryLevel(int level, boolean plugged) { public void updateBattery(Intent intent) { final int level = intent.getIntExtra("level", 0); final boolean plugged = intent.getIntExtra("plugged", 0) != 0; mBatteryMeter.setImageResource(plugged ? R.drawable.battery_charging : R.drawable.battery); mBatteryMeter.setImageLevel(level); mBatteryText.setText(String.format("Battery: %d%%", level)); // hack for now mBar.setBatteryMeter(level, plugged); } public SystemPanel(Context context, AttributeSet attrs) { Loading @@ -123,6 +210,10 @@ public class SystemPanel extends LinearLayout { (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE); // wifi status info mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); // audio status notifications mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); } Loading Loading @@ -171,7 +262,10 @@ public class SystemPanel extends LinearLayout { IntentFilter filter = new IntentFilter(); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_POWER_CONNECTED); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(WifiManager.RSSI_CHANGED_ACTION); getContext().registerReceiver(mReceiver, filter); mBatteryMeter = (ImageView)findViewById(R.id.battery_meter); Loading
packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java +8 −5 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ import com.android.systemui.statusbar.*; import com.android.systemui.R; public class TabletStatusBarService extends StatusBarService { public static final boolean DEBUG = false; public static final boolean DEBUG = true; public static final String TAG = "TabletStatusBar"; Loading Loading @@ -206,13 +206,16 @@ public class TabletStatusBarService extends StatusBarService { } } StatusBarIcon mBatterySBI; StatusBarIcon mSignalSBI; public void updateBatteryDisplay(int level, boolean plugged) { public void setBatteryMeter(int level, boolean plugged) { if (DEBUG) Slog.d(TAG, "battery=" + level + (plugged ? " - plugged" : " - unplugged")); mBatteryMeter.setImageResource(plugged ? R.drawable.battery_charging : R.drawable.battery); mBatteryMeter.setImageLevel(level); mSystemPanel.setBatteryLevel(level, plugged); } public void setWifiMeter(int level) { if (DEBUG) Slog.d(TAG, "wifi=" + level); mSignalMeter.setImageResource(R.drawable.signal); mSignalMeter.setImageLevel(level); } public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon) { Loading