1616
1717package com .android .systemui .statusbar .policy ;
1818
19- import java .io .FileDescriptor ;
20- import java .io .PrintWriter ;
21- import java .util .ArrayList ;
22- import java .util .List ;
23-
2419import android .content .BroadcastReceiver ;
2520import android .content .Context ;
2621import android .content .Intent ;
3732import android .os .Message ;
3833import android .os .Messenger ;
3934import android .os .RemoteException ;
40- import android .os .SystemProperties ;
4135import android .provider .Settings ;
42- import android .provider .Telephony ;
4336import android .telephony .PhoneStateListener ;
4437import android .telephony .ServiceState ;
4538import android .telephony .SignalStrength ;
5043import android .widget .TextView ;
5144
5245import com .android .internal .app .IBatteryStats ;
53- import com .android .internal .telephony .IccCard ;
5446import com .android .internal .telephony .IccCardConstants ;
5547import com .android .internal .telephony .TelephonyIntents ;
5648import com .android .internal .telephony .cdma .EriInfo ;
57- import com .android .server .am .BatteryStatsService ;
5849import com .android .internal .util .AsyncChannel ;
59-
50+ import com . android . server . am . BatteryStatsService ;
6051import com .android .systemui .R ;
6152
53+ import java .io .FileDescriptor ;
54+ import java .io .PrintWriter ;
55+ import java .util .ArrayList ;
56+ import java .util .List ;
57+
6258public class NetworkController extends BroadcastReceiver {
6359 // debug
6460 static final String TAG = "StatusBar.NetworkController" ;
@@ -85,6 +81,7 @@ public class NetworkController extends BroadcastReceiver {
8581 int mDataDirectionIconId ; // data + data direction on phones
8682 int mDataSignalIconId ;
8783 int mDataTypeIconId ;
84+ int mQSDataTypeIconId ;
8885 int mAirplaneIconId ;
8986 boolean mDataActive ;
9087 int mMobileActivityIconId ; // overlay arrows for data direction
@@ -178,7 +175,8 @@ void setMobileDataIndicators(boolean visible, int strengthIcon, int activityIcon
178175
179176 public interface NetworkSignalChangedCallback {
180177 void onWifiSignalChanged (boolean enabled , int wifiSignalIconId , String description );
181- void onMobileDataSignalChanged (boolean enabled , int mobileSignalIconId , String description );
178+ void onMobileDataSignalChanged (boolean enabled , int mobileSignalIconId , int dataTypeIconId ,
179+ String description );
182180 void onAirplaneModeChanged (boolean enabled );
183181 }
184182
@@ -352,15 +350,16 @@ void notifySignalsChangedCallbacks(NetworkSignalChangedCallback cb) {
352350 cb .onWifiSignalChanged (wifiEnabled , mQSWifiIconId , wifiDesc );
353351
354352 if (isEmergencyOnly ()) {
355- cb .onMobileDataSignalChanged (false , mQSPhoneSignalIconId , null );
353+ cb .onMobileDataSignalChanged (false , mQSPhoneSignalIconId , mQSDataTypeIconId , null );
356354 } else {
357355 if (mIsWimaxEnabled && mWimaxConnected ) {
358- // wimax is special
359- cb .onMobileDataSignalChanged (true , mQSPhoneSignalIconId , mNetworkName );
356+ // Wimax is special
357+ cb .onMobileDataSignalChanged (true , mQSPhoneSignalIconId , mQSDataTypeIconId ,
358+ mNetworkName );
360359 } else {
361- // normal mobile data
360+ // Normal mobile data
362361 cb .onMobileDataSignalChanged (mHasMobileDataFeature , mQSPhoneSignalIconId ,
363- mNetworkName );
362+ mQSDataTypeIconId , mNetworkName );
364363 }
365364 }
366365 cb .onAirplaneModeChanged (mAirplaneMode );
@@ -570,6 +569,7 @@ private final void updateDataNetType() {
570569 // wimax is a special 4g network not handled by telephony
571570 mDataIconList = TelephonyIcons .DATA_4G [mInetCondition ];
572571 mDataTypeIconId = R .drawable .stat_sys_data_connected_4g ;
572+ mQSDataTypeIconId = R .drawable .ic_qs_signal_4g ;
573573 mContentDescriptionDataType = mContext .getString (
574574 R .string .accessibility_data_connection_4g );
575575 } else {
@@ -578,6 +578,7 @@ private final void updateDataNetType() {
578578 if (!mShowAtLeastThreeGees ) {
579579 mDataIconList = TelephonyIcons .DATA_G [mInetCondition ];
580580 mDataTypeIconId = 0 ;
581+ mQSDataTypeIconId = 0 ;
581582 mContentDescriptionDataType = mContext .getString (
582583 R .string .accessibility_data_connection_gprs );
583584 break ;
@@ -588,6 +589,7 @@ private final void updateDataNetType() {
588589 if (!mShowAtLeastThreeGees ) {
589590 mDataIconList = TelephonyIcons .DATA_E [mInetCondition ];
590591 mDataTypeIconId = R .drawable .stat_sys_data_connected_e ;
592+ mQSDataTypeIconId = R .drawable .ic_qs_signal_e ;
591593 mContentDescriptionDataType = mContext .getString (
592594 R .string .accessibility_data_connection_edge );
593595 break ;
@@ -597,6 +599,7 @@ private final void updateDataNetType() {
597599 case TelephonyManager .NETWORK_TYPE_UMTS :
598600 mDataIconList = TelephonyIcons .DATA_3G [mInetCondition ];
599601 mDataTypeIconId = R .drawable .stat_sys_data_connected_3g ;
602+ mQSDataTypeIconId = R .drawable .ic_qs_signal_3g ;
600603 mContentDescriptionDataType = mContext .getString (
601604 R .string .accessibility_data_connection_3g );
602605 break ;
@@ -607,11 +610,13 @@ private final void updateDataNetType() {
607610 if (mHspaDataDistinguishable ) {
608611 mDataIconList = TelephonyIcons .DATA_H [mInetCondition ];
609612 mDataTypeIconId = R .drawable .stat_sys_data_connected_h ;
613+ mQSDataTypeIconId = R .drawable .ic_qs_signal_h ;
610614 mContentDescriptionDataType = mContext .getString (
611615 R .string .accessibility_data_connection_3_5g );
612616 } else {
613617 mDataIconList = TelephonyIcons .DATA_3G [mInetCondition ];
614618 mDataTypeIconId = R .drawable .stat_sys_data_connected_3g ;
619+ mQSDataTypeIconId = R .drawable .ic_qs_signal_3g ;
615620 mContentDescriptionDataType = mContext .getString (
616621 R .string .accessibility_data_connection_3g );
617622 }
@@ -621,6 +626,7 @@ private final void updateDataNetType() {
621626 // display 1xRTT for IS95A/B
622627 mDataIconList = TelephonyIcons .DATA_1X [mInetCondition ];
623628 mDataTypeIconId = R .drawable .stat_sys_data_connected_1x ;
629+ mQSDataTypeIconId = R .drawable .ic_qs_signal_1x ;
624630 mContentDescriptionDataType = mContext .getString (
625631 R .string .accessibility_data_connection_cdma );
626632 break ;
@@ -631,6 +637,7 @@ private final void updateDataNetType() {
631637 if (!mShowAtLeastThreeGees ) {
632638 mDataIconList = TelephonyIcons .DATA_1X [mInetCondition ];
633639 mDataTypeIconId = R .drawable .stat_sys_data_connected_1x ;
640+ mQSDataTypeIconId = R .drawable .ic_qs_signal_1x ;
634641 mContentDescriptionDataType = mContext .getString (
635642 R .string .accessibility_data_connection_cdma );
636643 break ;
@@ -643,24 +650,28 @@ private final void updateDataNetType() {
643650 case TelephonyManager .NETWORK_TYPE_EHRPD :
644651 mDataIconList = TelephonyIcons .DATA_3G [mInetCondition ];
645652 mDataTypeIconId = R .drawable .stat_sys_data_connected_3g ;
653+ mQSDataTypeIconId = R .drawable .ic_qs_signal_3g ;
646654 mContentDescriptionDataType = mContext .getString (
647655 R .string .accessibility_data_connection_3g );
648656 break ;
649657 case TelephonyManager .NETWORK_TYPE_LTE :
650658 mDataIconList = TelephonyIcons .DATA_4G [mInetCondition ];
651659 mDataTypeIconId = R .drawable .stat_sys_data_connected_4g ;
660+ mQSDataTypeIconId = R .drawable .ic_qs_signal_4g ;
652661 mContentDescriptionDataType = mContext .getString (
653662 R .string .accessibility_data_connection_4g );
654663 break ;
655664 default :
656665 if (!mShowAtLeastThreeGees ) {
657666 mDataIconList = TelephonyIcons .DATA_G [mInetCondition ];
658667 mDataTypeIconId = R .drawable .stat_sys_data_connected_g ;
668+ mQSDataTypeIconId = R .drawable .ic_qs_signal_g ;
659669 mContentDescriptionDataType = mContext .getString (
660670 R .string .accessibility_data_connection_gprs );
661671 } else {
662672 mDataIconList = TelephonyIcons .DATA_3G [mInetCondition ];
663673 mDataTypeIconId = R .drawable .stat_sys_data_connected_3g ;
674+ mQSDataTypeIconId = R .drawable .ic_qs_signal_3g ;
664675 mContentDescriptionDataType = mContext .getString (
665676 R .string .accessibility_data_connection_3g );
666677 }
@@ -671,9 +682,11 @@ private final void updateDataNetType() {
671682 if (isCdma ()) {
672683 if (isCdmaEri ()) {
673684 mDataTypeIconId = R .drawable .stat_sys_data_connected_roam ;
685+ mQSDataTypeIconId = R .drawable .ic_qs_signal_r ;
674686 }
675687 } else if (mPhone .isNetworkRoaming ()) {
676688 mDataTypeIconId = R .drawable .stat_sys_data_connected_roam ;
689+ mQSDataTypeIconId = R .drawable .ic_qs_signal_r ;
677690 }
678691 }
679692
@@ -1095,7 +1108,7 @@ void refreshViews() {
10951108 mContentDescriptionPhoneSignal = mContext .getString (
10961109 R .string .accessibility_airplane_mode );
10971110 mAirplaneIconId = R .drawable .stat_sys_signal_flightmode ;
1098- mPhoneSignalIconId = mDataSignalIconId = mDataTypeIconId = 0 ;
1111+ mPhoneSignalIconId = mDataSignalIconId = mDataTypeIconId = mQSDataTypeIconId = 0 ;
10991112 mQSPhoneSignalIconId = 0 ;
11001113
11011114 // combined values from connected wifi take precedence over airplane mode
@@ -1125,12 +1138,15 @@ else if (!mDataConnected && !mWifiConnected && !mBluetoothTethered && !mWimaxCon
11251138 ? mContentDescriptionDataType : mContentDescriptionWifi ;
11261139
11271140 mDataTypeIconId = 0 ;
1141+ mQSDataTypeIconId = 0 ;
11281142 if (isCdma ()) {
11291143 if (isCdmaEri ()) {
11301144 mDataTypeIconId = R .drawable .stat_sys_data_connected_roam ;
1145+ mQSDataTypeIconId = R .drawable .ic_qs_signal_r ;
11311146 }
11321147 } else if (mPhone .isNetworkRoaming ()) {
11331148 mDataTypeIconId = R .drawable .stat_sys_data_connected_roam ;
1149+ mQSDataTypeIconId = R .drawable .ic_qs_signal_r ;
11341150 }
11351151 }
11361152
@@ -1155,6 +1171,7 @@ else if (!mDataConnected && !mWifiConnected && !mBluetoothTethered && !mWimaxCon
11551171 + " mDataDirectionIconId=0x" + Integer .toHexString (mDataDirectionIconId )
11561172 + " mDataSignalIconId=0x" + Integer .toHexString (mDataSignalIconId )
11571173 + " mDataTypeIconId=0x" + Integer .toHexString (mDataTypeIconId )
1174+ + " mQSDataTypeIconId=0x" + Integer .toHexString (mQSDataTypeIconId )
11581175 + " mWifiIconId=0x" + Integer .toHexString (mWifiIconId )
11591176 + " mQSWifiIconId=0x" + Integer .toHexString (mQSWifiIconId )
11601177 + " mBluetoothTetherIconId=0x" + Integer .toHexString (mBluetoothTetherIconId ));
@@ -1386,6 +1403,10 @@ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
13861403 pw .print (Integer .toHexString (mDataTypeIconId ));
13871404 pw .print ("/" );
13881405 pw .println (getResourceName (mDataTypeIconId ));
1406+ pw .print (" mQSDataTypeIconId=" );
1407+ pw .print (Integer .toHexString (mQSDataTypeIconId ));
1408+ pw .print ("/" );
1409+ pw .println (getResourceName (mQSDataTypeIconId ));
13891410
13901411 pw .println (" - wifi ------" );
13911412 pw .print (" mWifiEnabled=" );
0 commit comments