Parse Getallcellinfo Values From Telephony Manager
i'm using the following function to get Allcellinfo of an device network and im getting the values as an string now i need to parse it in order to get the CellSignalStrengthLte dat
Solution 1:
I also noticed that CellinfoLTE and CellIdentityLTE is not so great at the moment, so I just wrote my own parsing class. Only tested this a few times, and didn't have problems, but more testing should display if additional future tweaking will be necessary.
Here's the class:
publicclassLTEStruct
{
publicstaticfinalintUNKNOWN= Integer.MAX_VALUE; //Default value for unknown fieldspublicboolean isRegistered;
publiclong timeStamp;
publicint MCC;
publicint MNC;
publicint CID;
publicint PCI;
publicint TAC;
publicint SS;
publicint RSRP;
publicint RSRQ;
publicint RSSNR;
publicint CQI;
publicint tAdvance;
Context mContext;
//Public constructorpublicLTEStruct(Context context)
{
mContext = context; //not used at the moment but possibly for future function
}
publicvoidparse(String inTest)
{
//get isRegisteredintindex= inTest.indexOf("mRegistered=") + ("mRegistered=").length();
if(inTest.substring(index,index + 3).contains("YES"))
isRegistered = true;
elseisRegistered=false;
//getTimestamp
timeStamp = getValue(inTest,"mTimeStamp=", "ns");
//get Cell Identity paramters
MCC = (int) getValue(inTest,"mMcc=", " "); //get Mcc
MNC = (int) getValue(inTest,"mMnc=", " "); //get MNC
CID = (int) getValue(inTest,"mCi=", " "); //get CID
PCI = (int) getValue(inTest,"mPci="," "); //get PCI
TAC = (int) getValue(inTest,"mTac=","}"); //get TAC//get RF related parameters
SS = (int) getValue(inTest," ss="," "); //get SS
RSRP = (int)getValue(inTest,"rsrp=", " "); //get RSRP
RSRQ = (int)getValue(inTest,"rsrq=", " "); //get RSRQ
RSSNR = (int)getValue(inTest,"rssnr=", " "); //get RSSNR
CQI = (int)getValue(inTest," cqi=", " "); //get CQI
tAdvance = (int)getValue(inTest," ta=", "}"); //get timing advance
}
//internal function to help with parsing of raw LTE stringsprivatelonggetValue(String fullS, String startS, String stopS)
{
intindex= fullS.indexOf(startS) + (startS).length();
intendIndex= fullS.indexOf(stopS,index);
return Long.parseLong(fullS.substring(index,endIndex).trim());
}
}
So if I implement this very basically with the input LTE string:
//permission checkif (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) !=PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions((Activity)this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},1);
//get cell infoTelephonyManager tel = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
List<CellInfo> infos = tel.getAllCellInfo();
for (int i =0; i<infos.size(); ++i)
{
try
{
CellInfo info = infos.get(i);
if (info instanceof CellInfoLte) {
LTEStruct lte = new LTEStruct(this);
lte.parse(info.toString());
//write out parsed results for what it's worthLog.i("LTE parseOutput", "tAdvance: "+ lte.tAdvance +"\r\nCQI: "+ lte.CQI+"\r\nRSSNR: "+ lte.RSSNR+"\r\nRSRP: "+ lte.RSRP+"\r\nSS: "+ lte.SS+"\r\nCID: "+ lte.CID+"\r\nTimestamp: "+ lte.timeStamp +"\r\nTAC: "+ lte.TAC+"\r\nPCI: "+ lte.PCI+"\r\nMNC: "+ lte.MNC+"\r\nMCC: "+ lte.MCC+"\r\nRegistered: "+ lte.isRegistered);
} elseLog.i("LTE testing", "not LTE cell info measured");
} catch (Exception ex) {
Log.i("neighboring error: ", ex.getMessage());
}
}
Hope it helps ;)
Post a Comment for "Parse Getallcellinfo Values From Telephony Manager"