1010import android .telephony .CellInfoGsm ;
1111import android .telephony .CellInfoLte ;
1212import android .telephony .CellInfoWcdma ;
13+ import android .telephony .CellInfoNr ;
14+ import android .telephony .CellIdentityNr ;
15+ import android .telephony .CellSignalStrength ;
16+ import android .telephony .CellSignalStrengthNr ;
1317import android .telephony .TelephonyManager ;
1418import android .util .JsonWriter ;
1519import android .util .Log ;
@@ -28,6 +32,18 @@ public class TelephonyAPI {
2832 private static void writeIfKnown (JsonWriter out , String name , int value ) throws IOException {
2933 if (value != Integer .MAX_VALUE ) out .name (name ).value (value );
3034 }
35+ private static void writeIfKnown (JsonWriter out , String name , long value ) throws IOException {
36+ if (value != Long .MAX_VALUE ) out .name (name ).value (value );
37+ }
38+ private static void writeIfKnown (JsonWriter out , String name , int value []) throws IOException {
39+ if (value != null ) {
40+ out .name (name );
41+ out .beginArray ();
42+ for (int i = 0 ; i < value .length ; i ++) out .value (value [i ]);
43+ out .endArray ();
44+
45+ }
46+ }
3147
3248 static void onReceiveTelephonyCellInfo (TermuxApiReceiver apiReceiver , final Context context , final Intent intent ) {
3349 ResultReturner .returnData (apiReceiver , intent , new ResultReturner .ResultJsonWriter () {
@@ -76,6 +92,40 @@ public void writeJson(JsonWriter out) throws Exception {
7692 writeIfKnown (out , "tac" , lteInfo .getCellIdentity ().getTac ());
7793 writeIfKnown (out , "mcc" , lteInfo .getCellIdentity ().getMcc ());
7894 writeIfKnown (out , "mnc" , lteInfo .getCellIdentity ().getMnc ());
95+
96+ writeIfKnown (out , "rsrp" , lteInfo .getCellSignalStrength ().getRsrp ());
97+ writeIfKnown (out , "rsrq" , lteInfo .getCellSignalStrength ().getRsrq ());
98+ writeIfKnown (out , "rssi" , lteInfo .getCellSignalStrength ().getRssi ());
99+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .R ) {
100+ writeIfKnown (out , "bands" , lteInfo .getCellIdentity ().getBands ());
101+ }
102+ } else if ((Build .VERSION .SDK_INT >= Build .VERSION_CODES .Q ) && (cellInfo instanceof CellInfoNr )) {
103+ CellInfoNr nrInfo = (CellInfoNr ) cellInfo ;
104+ CellIdentityNr nrcellIdent = (CellIdentityNr ) nrInfo .getCellIdentity ();
105+ CellSignalStrength ssInfo = nrInfo .getCellSignalStrength ();
106+ out .name ("type" ).value ("nr" );
107+ out .name ("registered" ).value (cellInfo .isRegistered ());
108+
109+ out .name ("asu" ).value (ssInfo .getAsuLevel ());
110+ out .name ("dbm" ).value (ssInfo .getDbm ());
111+ writeIfKnown (out , "level" , ssInfo .getLevel ());
112+ writeIfKnown (out , "nci" , nrcellIdent .getNci ());
113+ writeIfKnown (out , "pci" , nrcellIdent .getPci ());
114+ writeIfKnown (out , "tac" , nrcellIdent .getTac ());
115+ out .name ("mcc" ).value (nrcellIdent .getMccString ());
116+ out .name ("mnc" ).value (nrcellIdent .getMncString ());
117+ if (ssInfo instanceof CellSignalStrengthNr ) {
118+ CellSignalStrengthNr nrssInfo = (CellSignalStrengthNr ) ssInfo ;
119+ writeIfKnown (out , "csi_rsrp" , nrssInfo .getCsiRsrp ());
120+ writeIfKnown (out , "csi_rsrq" , nrssInfo .getCsiRsrq ());
121+ writeIfKnown (out , "csi_sinr" , nrssInfo .getCsiSinr ());
122+ writeIfKnown (out , "ss_rsrp" , nrssInfo .getSsRsrp ());
123+ writeIfKnown (out , "ss_rsrq" , nrssInfo .getSsRsrq ());
124+ writeIfKnown (out , "ss_sinr" , nrssInfo .getSsSinr ());
125+ }
126+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .R ) {
127+ writeIfKnown (out , "bands" , nrcellIdent .getBands ());
128+ }
79129 } else if (cellInfo instanceof CellInfoCdma ) {
80130 CellInfoCdma cdmaInfo = (CellInfoCdma ) cellInfo ;
81131 out .name ("type" ).value ("cdma" );
@@ -269,6 +319,10 @@ public void writeJson(JsonWriter out) throws Exception {
269319 networkTypeName = "unknown" ;
270320 break ;
271321 default :
322+ if ((Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) && (networkType == TelephonyManager .NETWORK_TYPE_NR )) {
323+ networkTypeName = "nr" ;
324+ break ;
325+ }
272326 networkTypeName = Integer .toString (networkType );
273327 break ;
274328 }
0 commit comments