在UMTS中,我得到了getCid()
(大於允許值)返回的大數。這是UTRAN小區身份(UC-ID)嗎?getCid返回的UTRAN小區標識()
UC-Id = RNC-Id + C-Id
有人知道嗎?如何從UC-Id
獲得C-Id
?
感謝和, 尼
在UMTS中,我得到了getCid()
(大於允許值)返回的大數。這是UTRAN小區身份(UC-ID)嗎?getCid返回的UTRAN小區標識()
UC-Id = RNC-Id + C-Id
有人知道嗎?如何從UC-Id
獲得C-Id
?
感謝和, 尼
嘗試 (小區ID%65536) 它爲我工作。
如果網絡類型爲UMTS/HSxPA/HSPA +,則RNC標識是4字節小區標識(3GPP 25.401,第6.1.5節)的前2個字節。「
我有權訪問運營商網絡,在系統檢查,它的真實和正確的
此基礎上,請看看我的代碼,你怎麼能輕易得到RNCID + CID:
轉換CID到的ByteArray:
public static byte[] convertByteArray__p(int p_int){
byte[] l_byte_array = new byte[4];
int MASK_c = 0xFF;
for (short i=0; i<=3; i++){
l_byte_array[i] = (byte) ((p_int >> (8*i)) & MASK_c);
}
return l_byte_array;
}
獲取RNCID和CID:
public int getRNCID_or_CID__p(byte[] p_bytes, short p_which){
int MASK_c = 0xFF;
int l_result = 0;
if (p_which == Constants.CID_C) {
l_result = p_bytes[0] & MASK_c ;
l_result = l_result + ((p_bytes[1] & MASK_c) << 8);
} else if (p_which == Constants.RNCID_C){
l_result = p_bytes[2] & MASK_c ;
l_result = l_result + ((p_bytes[3] & MASK_c) << 8);
} else {
g_FileHandler.putLog__p('E', "getRNCID_or_CID__p invalid parameter");
}
return l_result;
}
比你可以輕鬆地調用這樣的:
byte[] l_byte_array = new byte[4];
l_byte_array = convertByteArray__p(l_cid);
int l_RNC_ID = getRNCID_or_CID__p(l_byte_array,Constants.RNCID_C);
int l_real_CID = getRNCID_or_CID__p(l_byte_array,Constants.CID_C);
常量RNCID_C(1)和CID_C(2)僅contants只是對我來說,單獨哪個參數將傳遞。
這比這更簡單。單元ID在getCid()返回值的低位寄存器中,RNC是該值的高位寄存器(http://developer.android.com/reference/android/telephony/gsm/GsmCellLocation.html#getCid())。 所以:
getCid()== RNC < < 16 | CID
CID = getCid()& 0xFFFF的
RNC =(getCid()>> 16)& 0xFFFF的
如果CID是> 65536,這是不實際的小區ID,但真正的CellID和RNC-ID的線性組合:
UTRAN_CELL_ID = RNCID x 65536 + CellID
要提取的CellID,使用模運算:
CellID = UTRAN_CELL_ID % 65536
要提取RNCID,得到的整數部分:
RNCID = UTRAN_CELL_ID/65536
RNCID應該等於(UTRAN_CELL_ID - UTRAN_CELL_ID%65536)/ 65536 – vladiz
我覺得沒有人真的瞭解你的問題的核心,請更具體 – barmaley
好了,在GSM getCid()返回的CELLID細胞。據我所知,在UMTS中,接收的值包括RNC的標識符和小區的標識符。這意味着UMTS網絡中由getCid()返回的長整數(7-9數字)包含兩個數字,但我只想要CellId。我認爲方式如下:C-Id = UC-Id%65536和RnC-Id =(UC-Id) - (C-Id)/ 65536。或者爲什麼UMTS中的返回值是一個大於65536的數字,如果android文檔是正確的,那麼這是最大允許值。 – Benny