From 148c7d0de720a92632aa6ed10a39bfc38b427239 Mon Sep 17 00:00:00 2001 From: "tk.mun" Date: Thu, 13 Oct 2011 22:51:57 +0900 Subject: [PATCH] Wimax : wimax framework related open source. Integrate wimax network related changes into Android Framework. - In Connectivity service, start wimax service. - 4G icon display in StatusBarPolicy. - DHCP renew add. - Add radio for wiamx Change-Id: I2d9012247edfdf49d71ca7e1414afd0006f330ca Signed-off-by: tk.mun bug:5237167 --- .../net/wimax/WimaxManagerConstants.java | 104 ++++++++++++++++++ core/java/android/provider/Settings.java | 3 + core/res/AndroidManifest.xml | 10 ++ .../stat_sys_data_wimax_signal_3_fully.png | Bin 0 -> 2219 bytes ...tat_sys_data_wimax_signal_disconnected.png | Bin 0 -> 1807 bytes core/res/res/values/config.xml | 18 +++ core/res/res/values/strings.xml | 6 + .../SettingsProvider/res/values/defaults.xml | 2 +- .../stat_sys_data_wimax_signal_0.png | Bin 0 -> 2060 bytes .../stat_sys_data_wimax_signal_0_fully.png | Bin 0 -> 2050 bytes .../stat_sys_data_wimax_signal_1.png | Bin 0 -> 2156 bytes .../stat_sys_data_wimax_signal_1_fully.png | Bin 0 -> 2118 bytes .../stat_sys_data_wimax_signal_2.png | Bin 0 -> 2220 bytes .../stat_sys_data_wimax_signal_2_fully.png | Bin 0 -> 2202 bytes .../stat_sys_data_wimax_signal_3.png | Bin 0 -> 2346 bytes .../stat_sys_data_wimax_signal_3_fully.png | Bin 0 -> 2219 bytes ...tat_sys_data_wimax_signal_disconnected.png | Bin 0 -> 1807 bytes .../stat_sys_data_wimax_signal_idle.png | Bin 0 -> 1663 bytes .../res/layout/signal_cluster_view.xml | 21 ++++ packages/SystemUI/res/values/strings.xml | 7 +- .../statusbar/phone/PhoneStatusBar.java | 6 +- .../AccessibilityContentDescriptions.java | 7 ++ .../statusbar/policy/NetworkController.java | 89 +++++++++++++++ .../systemui/statusbar/policy/WimaxIcons.java | 37 +++++++ .../android/server/ConnectivityService.java | 89 ++++++++++++++- 25 files changed, 395 insertions(+), 4 deletions(-) create mode 100644 core/java/android/net/wimax/WimaxManagerConstants.java create mode 100644 core/res/res/drawable-hdpi/stat_sys_data_wimax_signal_3_fully.png create mode 100644 core/res/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png mode change 100755 => 100644 core/res/res/values/config.xml mode change 100755 => 100644 core/res/res/values/strings.xml create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0.png create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0_fully.png create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1.png create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1_fully.png create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2.png create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2_fully.png create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3.png create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3_fully.png create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png create mode 100644 packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_idle.png create mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/policy/WimaxIcons.java diff --git a/core/java/android/net/wimax/WimaxManagerConstants.java b/core/java/android/net/wimax/WimaxManagerConstants.java new file mode 100644 index 0000000000000..b4aaf5bffe007 --- /dev/null +++ b/core/java/android/net/wimax/WimaxManagerConstants.java @@ -0,0 +1,104 @@ +package android.net.wimax; + +/** + * {@hide} + */ +public class WimaxManagerConstants +{ + + /** + * Used by android.net.wimax.WimaxManager for handling management of + * Wimax access. + */ + public static final String WIMAX_SERVICE = "WiMax"; + + /** + * Broadcast intent action indicating that Wimax has been enabled, disabled, + * enabling, disabling, or unknown. One extra provides this state as an int. + * Another extra provides the previous state, if available. + */ + public static final String NET_4G_STATE_CHANGED_ACTION = + "android.net.fourG.NET_4G_STATE_CHANGED"; + + /** + * The lookup key for an int that indicates whether Wimax is enabled, + * disabled, enabling, disabling, or unknown. + */ + public static final String EXTRA_WIMAX_STATUS = "wimax_status"; + + /** + * Broadcast intent action indicating that Wimax state has been changed + * state could be scanning, connecting, connected, disconnecting, disconnected + * initializing, initialized, unknown and ready. One extra provides this state as an int. + * Another extra provides the previous state, if available. + */ + public static final String WIMAX_NETWORK_STATE_CHANGED_ACTION = + "android.net.fourG.wimax.WIMAX_NETWORK_STATE_CHANGED"; + + /** + * Broadcast intent action indicating that Wimax signal level has been changed. + * Level varies from 0 to 3. + */ + public static final String SIGNAL_LEVEL_CHANGED_ACTION = + "android.net.wimax.SIGNAL_LEVEL_CHANGED"; + + /** + * The lookup key for an int that indicates whether Wimax state is + * scanning, connecting, connected, disconnecting, disconnected + * initializing, initialized, unknown and ready. + */ + public static final String EXTRA_WIMAX_STATE = "WimaxState"; + public static final String EXTRA_4G_STATE = "4g_state"; + public static final String EXTRA_WIMAX_STATE_INT = "WimaxStateInt"; + /** + * The lookup key for an int that indicates whether state of Wimax + * is idle. + */ + public static final String EXTRA_WIMAX_STATE_DETAIL = "WimaxStateDetail"; + + /** + * The lookup key for an int that indicates Wimax signal level. + */ + public static final String EXTRA_NEW_SIGNAL_LEVEL = "newSignalLevel"; + + /** + * Indicatates Wimax is disabled. + */ + public static final int NET_4G_STATE_DISABLED = 1; + + /** + * Indicatates Wimax is enabled. + */ + public static final int NET_4G_STATE_ENABLED = 3; + + /** + * Indicatates Wimax status is known. + */ + public static final int NET_4G_STATE_UNKNOWN = 4; + + /** + * Indicatates Wimax is in idle state. + */ + public static final int WIMAX_IDLE = 6; + + /** + * Indicatates Wimax is being deregistered. + */ + public static final int WIMAX_DEREGISTRATION = 8; + + /** + * Indicatates wimax state is unknown. + */ + public static final int WIMAX_STATE_UNKNOWN = 0; + + /** + * Indicatates wimax state is connected. + */ + public static final int WIMAX_STATE_CONNECTED = 7; + + /** + * Indicatates wimax state is disconnected. + */ + public static final int WIMAX_STATE_DISCONNECTED = 9; + +} diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index a0652f7c20d02..f27f13a64db52 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -1182,6 +1182,7 @@ public final class Settings { */ public static final String RADIO_WIFI = "wifi"; + public static final String RADIO_WIMAX = "wimax"; /** * Constant for use in AIRPLANE_MODE_RADIOS to specify Cellular radio. */ @@ -2899,6 +2900,8 @@ public final class Settings { */ public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on"; + public static final String WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON = + "wimax_networks_available_notification_on"; /** * Delay (in seconds) before repeating the Wi-Fi networks available notification. diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 18194ee0f298f..1b5cbb40e2342 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -423,6 +423,11 @@ android:description="@string/permdesc_accessWifiState" android:label="@string/permlab_accessWifiState" /> + + 0X8T3%{I%ASEX_%KW4<>h>i1F^`gfx$hiJ3iSHijC6gvycR=yW;` zC%x#TMDHshijYJ}xFkyGtcn|zv!~L%f3(hB>+H4m{{6nc-}m$RzSr7WzTR#~12Y2z z0)g~!=lH|x8u+!<*M+}q1OL=Vm6faN!2&Nbm0w@ouAOi3Q1mc94TYw7! zp&c#>41$9AUUU&Cbr5KD98^*{j7A__Tvc*`C<=g3LLfpSW1uIm)SyukF$2Ac%*XTP zY#>tNo~Qr<61@XOiBTe&811?q<)Wg)1X2JJpj6UmnUbzzpg;1`;l1VF z4yXHbc%N;-5(6CxL2^0{7at$*5KnRd6%jZBjYiXO5Q+A%hP^UD1_@O5GUe)d1`ePU zDI{`80?JStMu8BFg&1hq(@!Bt<$V4ZVwv)DqTrO_R027U;DE%fD(*Vh~RpJubv0Px%+EF8b#O}x{pEv7ex@w0Y$M=Kn8hm7-;y$K`ar| znIsC6!(tQ2G$P)KN+8gfP6Qf}z~wsfcqAf|I?wSnER{o}a#(n(BaK2N5V&|6flHyX zDLf*V%puWuym_pLObH2OB4FOG1h)GbOZiJIovi=_5U2^Xjb!UhotA13lOXn6(*#1Ol%&E=Y3i0Dc zj$bKzw`IEQ5T&ZJ(plY8H}&$w#Hr_-!qjg*B<@w_boH3rHM`nnb3$CT%qN7@j9gX4 zByrvi=Lg05oU%0P)JI{@j%FW>+-l~fb!%f3JJ*B%4>NbRctKvajR791)rqtTK!o}) z^R+`+r8rs}-F~mDRcJ8kPAJu?;;uM&UMIv)FA%%fhvmdNW^L54c032&1E70q+itcO zXt^n%l}#Vmvt?CK-BW1ccu~EYGq;U5W)X(P@)uk$uqj>b=Y{J@wW>vnD>sn)jb7N6 z@E_c@U3Sl@rN78=L)X*npS{`t>UR6S``93qnv=S(yI5|QW*6aBQ$JK{@|(Tgz@qEp zS<8B~Lo2sV+$s5WdwGrFiH=}IxcPGa!9}&5N1Qt)L)rFHcmh5Xs77@^!&1R!TP0O%b4lqi0sqCC4F&A<6atg zPx|fcts}G+&(W`c*fmu^5Bkn}XpzPAy~v36KbB7mCp=z1Ug67K<>Geq2a|_FKsBr0 z@=YIk&(yy$#VZk0#&L7h-G*5DGpYr3vz+!Aiw(UQqs}_b(Dl-L*|#<;;E>@je!0g( z1|$M2lHHcGWkt0&d~P&^vA3I6-%Z!{y=%fXF+cE5w-K*;#B`a{*Phc+_Fvz-5Sf|r zWZh&a-L}E*v}sk=mWetRDS_wq;P3-;_Qa*OgrqB_7sh!z_TcBr>yNPx?ALkQT=N`P zwZXzl8sB6T37t)#JX(S$5&KJGmqBWL=S~=f+$k=W!cMk9*F#0!vdMc>P(c+}3K0tl2l` zVYf9-yVufX@`fUqkZd+^X5g)^>BK;x+Us`4*(c1m^hTrY&dO_>+XqGxUoIZrkMy%> zZgD__dYZpRo=P8I@1d;^9!nd!U>tqM@YO}*KwDn0UtUKy;I$LltX?@CCUi;XwnfEO zoQz0}wl*HT28J>prB!WSRI};yMji4@-kC$cn}){PUX1GBoiVFUv%<{oJlxovfVK+> z5{!w?C+ofG+^u^5ZRk|aO#PsTz3CXQDZJ^QO_lintf~<0DsH)C6};qTSgM8D{&J9{ ze}7J|qiy8&#qkaO>ZK9Q@9MZ+SM!gDT;`oC;x^=4R@5a$-wVUorwkYjPUn>t_LXLr zwqk-ioPacU*~Z-0-B-_DQZhDQz7{jdUr&EE7_aqI`k#b-tP)b7HX4! zsJ>+VqhWgW%3;yW0_VdAM3rR%3C*`vkNn_HetdHE1(fw{+cB@R#z|V{6>pj`KIVG) zt{FQHb*#b8WT-Qo$;stCo#k^T=MA@6cG6FLcvFMWMjRPM-S(_a8PohecyPTrzq7Wc F{t2)uh|&N6 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png b/core/res/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..51b839fd557254c29796d476b62c0b8437dae62b GIT binary patch literal 1807 zcmbVNc~BEq7!O6xa+M+!3T26cqLAz^B#=nJki!HFV2lM%%&|ZU$;M=XaE+V=ZKNQF zw^AqAsb~ka4k(H!U|}ewDA0l;TEU87DdlilEp`K9`-fv^x-+})eeZq0-*?aMiHcZf zZRui3AP}tiJhl*DJ@MDe+!X(^EQM$B#TnzoU>ngmELE&V2uv9&K>)r&9FGVQu`F#@ zI}$`77{|#)F<6XXJza__NMeHyNvlxdXaXT9M5_`@6A=uMAn|e~gE-M}jR?qP3}Q4z z018wrBtgzgS0fwKBSg~lL@7;13<(B;v~-+6fnZ`lt4LC6=voGGo|lgA4aa06Ft36o zGKdRK#R#GR7OF-73JLU;f>aQoLL|t~KOi8$2Y^8cB!e&+f_~2iM75;&9X%XHlmTL zF3?lC7LI?_#K=7Jasd<$sJY{69SVe|NAX%X>#5J$2!Gy>^ZoE-j zBT7>tWFewKlhsnZ9&yVS!FcZ8ZpfgBdqa;@%kiR!lh~*| z!Eb0>?jn}2)L>$z6j`(@$L+qtGT(}&v($(fL)9V_Ogn-h0TyVn-2 zoCUmcO17z|pY*e89rh0AL|HPHru*iHd7DspdsbANS050r^04SHsk=rV&mXPlQ~R@N z<4vFU|J8V?e<-u-n^VfV)tv)ixL=@^(9}Dx=cP*@pNhcFl*#S)kHcL?b@|~Zj5znr zR7*17EePdY%v)dP5LsOAq~#{m-I>bn8O4^<%N~Wh!-vwrBc1zOB_95hjb^=$ZA-DT zurF`>Uv0U^tLgnc;D|uJUvuW;8rg;ZqLrl??ly&8D^lF8?KTr$qz^cddW_o!>+U=i z4CdH8lNlZ2jhYlG*u>J4N+I~1CXq-j+f#}!P?O``2a9tZH`zoi)tt(S8|){nD%@mP1lrVeYeTJQ25dJwWq97 zol3rVKB)~lvfc}2HR@spj)(Di)xylCvXK`+eeRFH6xotvUCc$M2~plvy5`Ix%88TR zkDqBlVZyX_mv_qlYs zx^uXK*47@pdefS=(F~;>*N(KM!1I>NL`C>=`+`#a>E2J!S#3~OwND45rbIW|`|0h` za#x#g-|L%rIMcn7bv-NbunVlQm~c7Q2G!VEbRP=~c}|E97P(A#M48PIqI1TY>}!oz zA1mgBy*SA08=ILmj&`l>v-lY?8F}Dz=3I8#M+ckl8Mpjkfp`r?aQ92LyO|BAIWN08 z>fJgO+F@}%#&}fv-BzHnZMM`k(6H9Q%9c~hi5ZVlAXDgVog#L(g4hs s + + + + @@ -718,4 +724,16 @@ 2048 + + false + + + + + + + + + + diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml old mode 100755 new mode 100644 index a819173421805..2f40a5ad2a2c5 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1362,6 +1362,12 @@ than the non-multicast mode. + view WiMAX state + Allows an application to view + the information about the state of WiMAX. + change WiMAX state + Allows an application to connect + to and disconnect from WiMAX network. bluetooth administration Allows an application to configure diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml index 3920257a7c433..7a98615fe836a 100644 --- a/packages/SettingsProvider/res/values/defaults.xml +++ b/packages/SettingsProvider/res/values/defaults.xml @@ -21,7 +21,7 @@ 60000 false - cell,bluetooth,wifi,nfc + cell,bluetooth,wifi,nfc,wimax bluetooth,wifi,nfc true true diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f24d8016fca90f43fb069f1c1ad76e3726a6c9ac GIT binary patch literal 2060 zcmbVNX;c&E8V<--AcAN?TyPvWXeF5mBq3=chAbw*L>jOLix)yNm=uzUlfeYqvXxs| zE-g^CibYYhXk@WfjwlxqK?+i#pi+;rh-_XLw0K%t@zzdMY=3xq&$)BX%=f+DywCIQ zGr1A+b!68Ct|StPED;M7#JYmGSGqV6Prj?7idcMcp%RZo6L7N%Lr6Rg8jk=Hy=p6> zKvbHPZS4q$M4FYLi&ElB*?P7b)l*b99g0P7B+w)hC)8q8sS^<#h)1^S3|#PGeIp3y zG+b~KT?WaFd_=1gr(#HCsys@any6-Jz|b`S$HFEE^a!p3EczsaiEZJ6&w1Iz-gZm{ zf#)iCA{Tt&lu{M}@KFo_=oBbW4KW~q0aM_hU?!8f8lXWiM1^Qnm=*{#*+Dcm1OYEE zkg$en64(lX=%p<};(}TnH?pZzv)N2B2T@RLD-~w3ST+tCEs)R%G^H4Dl_k(%S~kNV zKul^(XT)`=0kAQu;?ZQB3lg5b2tjX@$zBl~OfM5fq>O4&8L2P@qU!awxSng9a0T+G z8?V(iMWq-Kssb^g$(Wj`N5ZlhFp;~zH)K;JykT#^bVN~9Ndi=ztVayEM8E}!Hx!Ld z!{!Asd4e!LOlQ#`MhFbEcnp|DgN4Fiktm493z^|~9X3P=(U~-USTKu8gJB`Wf`!Zw zK2t;!(gi^*k!S`hF_>_bL5QIi%m0{loi zAXBMz2Agav&x>dU2&UVPXhayQ2cGAbt$U4q9_xR_{Q|4`e{x18oT1v9<1fuJb3}BY zZTqVA3E|c7AO>P$Fk&=@V*BinxUY;AN4`71(fo`#-X{Det1xa);kRPN z&axe;N55-v{xJ6fSrGft{n~NA?84=WHw2FY9#uIM30Bf_pv~@I-&$gHL8@yT2kO%X ze_q6@@1!%A9$ftEw$4uO)K`PQog17gHLV(dobsQ_H$TCh!V97buBP)YMYV?y4-a2F zi;|ep{iK*HdbZPj``C=GwMT1e(9_oi*oqV>FzS%%l6S~Ll5E_VJ9hYN+|uaYIB5Rz z@@{e4&=ki{_DP@g+TqsL)}yJ}=2_Fz)73GQRU2uaw`+>OPY9Z`0;4`ndnUg)QEm?w zWE?Md`bDekjp%iTRZV%McJ8_b&S zI7q88?9BJP4Y?#|o+2U1$+eVS(x2mp{O&XdeC=d^#O|$~uKu?poZ&Hjdit}9;o^!S z-iGzwPsm~Q8J>=F4xL!`MLP#MHY5)5lKi8&Ur_1B#>zU<`(S>{>J0LUlO?AYujcgz z$?BB#pJld2m+af;!@F}_TdDviueWq4zWdido2(u0YkY(54G(LY!m@)4!3Q@V{L(D| zVMRja_hd4;Y9}Z>k=igozMCT|Un93RG<OOShf2pSk#6b=<;c; z6LRWh%fm;v)S)A&GcCF$d&}e+=N}_EeqT!Vj9kLmm*+zE9IWgHMhYf+kIh^C@~wRZd@4pUL7lv>RlqhNiA|9pLSdagNmW8ytJTTBSI9 zJlw14giH9Y=5p#aL3CVtvR{xeTuAv&n+Un+Ep&i zyBKfSQjJ+S`;qlw-ffc(V#>{dfwZ;s{ptRUW7j^AfwaN%#a+rDS5^i$cU{IN?zozk zM8Dmh9WHjUEA*=2x##UUwfEd4XK}`Lcd@=WUv*@TSICC_qe|%ddAH@N$8@~Y8NqR!5rBGye8Pn0ybk2@TVXRM-m{`ZOQqxjq#5gljF-ie{s*4FAgwgs17G9MTy vxC?*Dl`!ShOlw}ubh=e!72RF3E7abd6M+y2iIp83G}J6q8IMK|?WQH7K&=GQa@Iq?4fpEG?i= zqF_;Oio%vImH?Io1zZuKif)CY72>X<;-zl690jFPEE+F6QE~T&r+d!MoSE-?zj>eM zy`M2hN3B`p;^RUhkrqiKAUUzFAfETk_i~L(+@y5kUJO)j~GgKH%5@=C13`ljV zBv=lsw3#3G!C@qlV%o(9#?RdyY^NoOF?BvM$o$)M7t!Z@IYlMp?hdjEJ2 z6+pCn>c$`$Q)Ups$w)*N2FGMYDKuHB8m^Wa{vi-%;t>Qo7*_!%U7Fs=Gx4b}czML$ ze$1c(FI4bUKJ}$jN?9}@LNOQ!qB8?D%wQ%E%%Zab*&GhX9{`ywCW8qwSYQB)!wUp? zOeXN^q7v3HZ6Z$&NnY6^BtA76#|=CNBO@b&o)Jh#u_OkI%jMcRKrn#N2ry>qag`}R zZ=}sJK(JARAqE^l^?;pGrAE_nK9%tFWe7ThO!k^sZ+w*~B4rGd%D`aJnGBuI9@h(P zBQA&kgj4@Gj=)sO3x+s!zCSH1K999PtmehmYtpb zs35~}EA*#D6K5ZddnYV5&Fdn^2Xiu*s`c1-eexVw7C*WEc1fBM)w z*+nJb3Mgm!xed!p_WSQ6ipNN=Z#^1R9knsG;>-@NpVvZg%VqP*-N&s~E4aDMX30J4 z@l|8lj+`YANSJM5Z%d>HZ}{Spy-=efXJ~b5>fN}$x`cMJSl&72;a0Z-9g5yas-;Ev6{qeg`+^WCG&2l3>ot&IZ^k_&$A2mwFL(7nWcRKHo z``SZ3_4>V=B3I;kFE-)bitSL=-jh{c!+i7n?BT(|!JF5wU(fmZUjx>uJ!OWO;xQrp zmbb9_0y!q@*rm6+x}%Z0j+#^dkdD(Dzj1arNKPqpS$TUPytitrPN(~8#o8LOQ%ym6 zCb!vKvonc4|B8EI=jJ26`m~NiZTlHM=DLa2U4_eX%4uFHvCZcw`TJ-NDyP((c88w| zW+Fe*l(+e{jy<_p2Y+UGZ@=f;y0XiA`hJ=z?=Px#eIPHn?Zc&;*DhH9XUf~Rd##(a z&%Swjcpy@0)vlR(GT^zVw01PJ{~**K zoML129Q94-C(^@b>$?{GI`gCfDBVzWS~zNR>>TqryxkEz5MMO@rD@uKf6;_vfonp@ zjneo+_Ks7wb;{|`=mlvG4;^SNR($zUO3l)ry}#ZCHrsx*wEjh166fhTl_yB;n*Hap zN#3?!rrx?Vl-Ir3Qn0HA@ac)xHjZdl$lZOA72Xlm$Ii_xJ^d6qd13~nE)v974tf_$ z>Rlg*3fm?hbgXV5AqUOnXdy{1@r zCpa#}18W-Ce)o2WX&DiZvkx$PLYw_@!ANI!JNq1m{C!2!&f4g+6!Y;&eO0r?;z z{R=NNyT@(tnmgP?8Agd+vT4{fQd|h=pRmfrjGXmhf;xIUdCxuWnzBmK|SVCSn#DRGH zxPx7gBMPM%Cg29Z0qi}LP_YohQ|n-2g%SjfLOJe^mGDBNAQ%XN!UZBK`nQH=G$7zp z(f$NBjxBM8A_VU7QfP0y7dJFMDwNDe?{)$lV<`xM5Q2F?tT0+6qr_6t?|CW6UVV&3 z1MgMfC@T7cQvqxrz*Q`T00IVQ7mC}319pKJ(B6SaB-#Ra9Eii>@K_LU2NEgvcnS^& ze0_am14hggcM6ym{RDOW6xUg-dz2r(>{ zMTjMU>s|uD=7kDGYFS;L57E*gso)UAXG+CF;C+56g3s8ek^fiRAF%xYCudm18LYZF z{;OG5j*t#iZ$Gs@B77PiNQ6v`6d8@b@4Rh_Lai=j(P`Y+;b#G!5nO-crllU6uJl_w zx{oJvv_aPPJb1&Y&6}PVVQi9aMzQk!B!hCIirvMu<*_>Suc6+U=MZ4v1#Gm#JdUm;;%A_k4D_?b!y>Q z`dPkg1|C-PRYOC0{xJq~)`M$Xwm$6D0kj;~oJTbq=<6#RjZ`*Wdy9*Ui%c}U3~ld4 zUKj3nt?J9~AFokdZkSs>lFu{d7Q`M)^l#Q*x6bMC0cB6{Eb(^8)o}-QRkr-~v1TLf z)u|SWR~l2zVbYSO)wD}q;rheXOX5ND=95~WN_6dA>o~o=d$rmFz5+UxoG6#yaD4_Q(wPKh(yo-g_KsvP;`|4vcr~} zG96rhUw?z%DuT1!U{O$~j?^Hk===!pi!*wMU`n6TVaj$~=kE}Z*YHMq&dOLq?Z*Si?ZvJL_8B9(zJ7jY!osQo9`&XrA z)-|aKLLvLb105<vD2Eqe!;32E4{t??4~~eH{?+IOU4H`zCMS5fayQaxrAo z&3WT};=!RCe0J%m9nDCRbwRW7;z%cYAS^7b>D!<1cjQkSGamf>vq@)R?bz6uXH`{I z-|+CTCaK?vK7FCGvJzWbTFU-Tp-8Iut|a=T?OW7Y!!6OxFZyx}LhS2TF}BJV7Z)+k z|NK5OGIH2j%SR9q(VJgTuwZ9rH__AG9h8v!imTWp*QmWbE(9 zj?+?7l8;HULU!id)U&y^u(riKWqI@I)2Ek)C>gfLupBEl#eNH6&a87??j5jhebJsD zDjut>7VqA@>wV_TnbIs^>8B&6dhBlk4ji~I?H_)q-KDIfqpx~*`N?r{`g+*~x_>QU z%-x=xpX5%y5n4_K#k96owrB;qHErWu>96GDmush{g)EaF8(Rj3gMT#~P@?XzWNG^M ziZioH<*Jz%P{5M71{b(Qed6$&FW2Fjz}nLz)#b&LOVyU$WAhUEH!7=cqI2@}1jc+oGr1SkC)&VzR5 literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1_fully.png new file mode 100644 index 0000000000000000000000000000000000000000..1cdd4eb5fbf083fcb4539508c3a84e6da4b5e1b2 GIT binary patch literal 2118 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 F{t2)uh|&N6 literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..51b839fd557254c29796d476b62c0b8437dae62b GIT binary patch literal 1807 zcmbVNc~BEq7!O6xa+M+!3T26cqLAz^B#=nJki!HFV2lM%%&|ZU$;M=XaE+V=ZKNQF zw^AqAsb~ka4k(H!U|}ewDA0l;TEU87DdlilEp`K9`-fv^x-+})eeZq0-*?aMiHcZf zZRui3AP}tiJhl*DJ@MDe+!X(^EQM$B#TnzoU>ngmELE&V2uv9&K>)r&9FGVQu`F#@ zI}$`77{|#)F<6XXJza__NMeHyNvlxdXaXT9M5_`@6A=uMAn|e~gE-M}jR?qP3}Q4z z018wrBtgzgS0fwKBSg~lL@7;13<(B;v~-+6fnZ`lt4LC6=voGGo|lgA4aa06Ft36o zGKdRK#R#GR7OF-73JLU;f>aQoLL|t~KOi8$2Y^8cB!e&+f_~2iM75;&9X%XHlmTL zF3?lC7LI?_#K=7Jasd<$sJY{69SVe|NAX%X>#5J$2!Gy>^ZoE-j zBT7>tWFewKlhsnZ9&yVS!FcZ8ZpfgBdqa;@%kiR!lh~*| z!Eb0>?jn}2)L>$z6j`(@$L+qtGT(}&v($(fL)9V_Ogn-h0TyVn-2 zoCUmcO17z|pY*e89rh0AL|HPHru*iHd7DspdsbANS050r^04SHsk=rV&mXPlQ~R@N z<4vFU|J8V?e<-u-n^VfV)tv)ixL=@^(9}Dx=cP*@pNhcFl*#S)kHcL?b@|~Zj5znr zR7*17EePdY%v)dP5LsOAq~#{m-I>bn8O4^<%N~Wh!-vwrBc1zOB_95hjb^=$ZA-DT zurF`>Uv0U^tLgnc;D|uJUvuW;8rg;ZqLrl??ly&8D^lF8?KTr$qz^cddW_o!>+U=i z4CdH8lNlZ2jhYlG*u>J4N+I~1CXq-j+f#}!P?O``2a9tZH`zoi)tt(S8|){nD%@mP1lrVeYeTJQ25dJwWq97 zol3rVKB)~lvfc}2HR@spj)(Di)xylCvXK`+eeRFH6xotvUCc$M2~plvy5`Ix%88TR zkDqBlVZyX_mv_qlYs zx^uXK*47@pdefS=(F~;>*N(KM!1I>NL`C>=`+`#a>E2J!S#3~OwND45rbIW|`|0h` za#x#g-|L%rIMcn7bv-NbunVlQm~c7Q2G!VEbRP=~c}|E97P(A#M48PIqI1TY>}!oz zA1mgBy*SA08=ILmj&`l>v-lY?8F}Dz=3I8#M+ckl8Mpjkfp`r?aQ92LyO|BAIWN08 z>fJgO+F@}%#&}fv-BzHnZMM`k(6H9Q%9c~hi5ZVlAXDgVog#L(g4hs sDSr z1<%~X^wgl##FWaylc_cg49sbnArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGl9F5H# zU7VZ^O)ZTK%q$EIEgj7aEsYFaT}|BFjEx*EU}j*`YvJN#YU$?WVq$4-WN7GWU}@-T zZsBb1X5?z>Vr=Q=2Gi@AS6q^qmz)Z-Hxph*a4`u-HN*^(?7)AxR17VBnR$(7(XqqDB*aP*aL4=md_Ia|A|w`yyYsq@K|VXITOm(*T<`K9~$(vzo3t>)Ho2ZXJ# zd8(3CtUl?8o&JIgCyb|h#VS0SZnItG%cii^u{kRK@YqX z;TN&Xuim&*-oDZ_t-O(gQG$18Vd|`BmTl`*3~EPhIoOt<$_a4`uFB9%s z&#$`PxL5t}OC_ZwiMIFNj|HXq+W+6Ee6r#~)9yaU6{%wCu&xmHuvYY8ME8_FS6-~!Bm6j=M{JJM-cJcl9 z- + + + + Wi-Fi three bars. - Wi-Fi signal full. + WiFi signal full. + No WiMAX. + WiMAX one bar. + WiMAX two bars. + WiMAX three bars. + WiMAX signal full. GPRS diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index c6a59d33eb0ed..b0e6968c46fd5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -350,7 +350,11 @@ public class PhoneStatusBar extends StatusBar { (SignalClusterView)sb.findViewById(R.id.signal_cluster); mNetworkController.addSignalCluster(signalCluster); signalCluster.setNetworkController(mNetworkController); - + final ImageView wimaxRSSI = + (ImageView)sb.findViewById(R.id.wimax_signal); + if (wimaxRSSI != null) { + mNetworkController.addWimaxIconView(wimaxRSSI); + } // Recents Panel mRecentTasksLoader = new RecentTasksLoader(context); updateRecentsPanel(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java index 13fb03e6c677e..f45426bb260c8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java @@ -34,4 +34,11 @@ public class AccessibilityContentDescriptions { R.string.accessibility_wifi_three_bars, R.string.accessibility_wifi_signal_full }; + static final int[] WIMAX_CONNECTION_STRENGTH = { + R.string.accessibility_no_wimax, + R.string.accessibility_wimax_one_bar, + R.string.accessibility_wimax_two_bars, + R.string.accessibility_wimax_three_bars, + R.string.accessibility_wimax_signal_full + }; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java index a3058166903fd..f77e93f1ba847 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -31,6 +31,7 @@ import android.net.NetworkInfo; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; +import android.net.wimax.WimaxManagerConstants; import android.os.Binder; import android.os.Handler; import android.os.Message; @@ -90,6 +91,7 @@ public class NetworkController extends BroadcastReceiver { String mContentDescriptionPhoneSignal; String mContentDescriptionWifi; + String mContentDescriptionWimax; String mContentDescriptionCombinedSignal; String mContentDescriptionDataType; @@ -108,6 +110,14 @@ public class NetworkController extends BroadcastReceiver { private int mBluetoothTetherIconId = com.android.internal.R.drawable.stat_sys_tether_bluetooth; + //wimax + private boolean mIsWimaxEnabled = false; + private boolean mWimaxConnected = false; + private boolean mWimaxIdle = false; + private int mWimaxIconId = 0; + private int mWimaxSignal = 0; + private int mWimaxState = 0; + private int mWimaxExtraState = 0; // data connectivity (regardless of state, can we access the internet?) // state of inet connection - 0 not connected, 100 connected private int mInetCondition = 0; @@ -121,6 +131,7 @@ public class NetworkController extends BroadcastReceiver { ArrayList mDataDirectionIconViews = new ArrayList(); ArrayList mDataDirectionOverlayIconViews = new ArrayList(); ArrayList mWifiIconViews = new ArrayList(); + ArrayList mWimaxIconViews = new ArrayList(); ArrayList mCombinedSignalIconViews = new ArrayList(); ArrayList mDataTypeIconViews = new ArrayList(); ArrayList mLabelViews = new ArrayList(); @@ -129,6 +140,7 @@ public class NetworkController extends BroadcastReceiver { int mLastDataDirectionIconId = -1; int mLastDataDirectionOverlayIconId = -1; int mLastWifiIconId = -1; + int mLastWimaxIconId = -1; int mLastCombinedSignalIconId = -1; int mLastDataTypeIconId = -1; String mLastLabel = ""; @@ -164,6 +176,7 @@ public class NetworkController extends BroadcastReceiver { // set up the default wifi icon, used when no radios have ever appeared updateWifiIcons(); + updateWimaxIcons(); // telephony mPhone = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); @@ -200,6 +213,13 @@ public class NetworkController extends BroadcastReceiver { filter.addAction(ConnectivityManager.INET_CONDITION_ACTION); filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED); filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED); + boolean isWimaxConfigEnabled = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_wimaxEnabled); + if(isWimaxConfigEnabled) { + filter.addAction(WimaxManagerConstants.WIMAX_NETWORK_STATE_CHANGED_ACTION); + filter.addAction(WimaxManagerConstants.SIGNAL_LEVEL_CHANGED_ACTION); + filter.addAction(WimaxManagerConstants.NET_4G_STATE_CHANGED_ACTION); + } context.registerReceiver(this, filter); // AIRPLANE_MODE_CHANGED is sent at boot; we've probably already missed it @@ -224,6 +244,9 @@ public class NetworkController extends BroadcastReceiver { public void addWifiIconView(ImageView v) { mWifiIconViews.add(v); } + public void addWimaxIconView(ImageView v) { + mWimaxIconViews.add(v); + } public void addCombinedSignalIconView(ImageView v) { mCombinedSignalIconViews.add(v); @@ -285,6 +308,11 @@ public class NetworkController extends BroadcastReceiver { } else if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) { updateAirplaneMode(); refreshViews(); + } else if (action.equals(WimaxManagerConstants.NET_4G_STATE_CHANGED_ACTION) || + action.equals(WimaxManagerConstants.SIGNAL_LEVEL_CHANGED_ACTION) || + action.equals(WimaxManagerConstants.WIMAX_NETWORK_STATE_CHANGED_ACTION)) { + updateWimaxState(intent); + refreshViews(); } } @@ -735,6 +763,51 @@ public class NetworkController extends BroadcastReceiver { } + // ===== Wimax =================================================================== + + private final void updateWimaxState(Intent intent) { + final String action = intent.getAction(); + boolean wasConnected = mWimaxConnected; + if (action.equals(WimaxManagerConstants.NET_4G_STATE_CHANGED_ACTION)) { + int wimaxStatus = intent.getIntExtra(WimaxManagerConstants.EXTRA_4G_STATE, + WimaxManagerConstants.NET_4G_STATE_UNKNOWN); + mIsWimaxEnabled = (wimaxStatus == + WimaxManagerConstants.NET_4G_STATE_ENABLED)? true : false; + } else if (action.equals(WimaxManagerConstants.SIGNAL_LEVEL_CHANGED_ACTION)) { + mWimaxSignal = intent.getIntExtra(WimaxManagerConstants.EXTRA_NEW_SIGNAL_LEVEL, 0); + } else if (action.equals(WimaxManagerConstants.WIMAX_NETWORK_STATE_CHANGED_ACTION)) { + mWimaxState = intent.getIntExtra(WimaxManagerConstants.EXTRA_WIMAX_STATE, + WimaxManagerConstants.NET_4G_STATE_UNKNOWN); + mWimaxExtraState = intent.getIntExtra( + WimaxManagerConstants.EXTRA_WIMAX_STATE_DETAIL, + WimaxManagerConstants.NET_4G_STATE_UNKNOWN); + mWimaxConnected = (mWimaxState == + WimaxManagerConstants.WIMAX_STATE_CONNECTED) ? true : false; + mWimaxIdle = (mWimaxExtraState == WimaxManagerConstants.WIMAX_IDLE)? true : false; + } + updateWimaxIcons(); + } + private void updateWimaxIcons() { + Slog.d(TAG, "in .... updateWimaxIcons function : "+mIsWimaxEnabled); + if (mIsWimaxEnabled) { + if (mWimaxConnected) { + Slog.d(TAG, "in .... updateWimaxIcons function WiMAX COnnected"); + if (mWimaxIdle) + mWimaxIconId = WimaxIcons.WIMAX_IDLE; + else + mWimaxIconId = WimaxIcons.WIMAX_SIGNAL_STRENGTH[mInetCondition][mWimaxSignal]; + mContentDescriptionWimax = mContext.getString( + AccessibilityContentDescriptions.WIMAX_CONNECTION_STRENGTH[mWimaxSignal]); + } else { + Slog.d(TAG, "in .... updateWimaxIcons function WiMAX Disconnected"); + mWimaxIconId = WimaxIcons.WIMAX_DISCONNECTED; + mContentDescriptionWimax = mContext.getString(R.string.accessibility_no_wimax); + } + } else { + Slog.d(TAG, "in .... updateWimaxIcons function wimax icon id 0"); + mWimaxIconId = 0; + } + } // ===== Full or limited Internet connectivity ================================== private void updateConnectivity(Intent intent) { @@ -761,6 +834,7 @@ public class NetworkController extends BroadcastReceiver { // We want to update all the icons, all at once, for any condition change updateDataNetType(); + updateWimaxIcons(); updateDataIcon(); updateTelephonySignalStrength(); updateWifiIcons(); @@ -945,6 +1019,21 @@ public class NetworkController extends BroadcastReceiver { } } + // the wimax icon on phones + if (mLastWimaxIconId != mWimaxIconId) { + mLastWimaxIconId = mWimaxIconId; + N = mWimaxIconViews.size(); + for (int i=0; i