2011-08-30 11 views
5

यूएमटीएस में मुझे getCid() (अनुमत मूल्य से बड़ा) द्वारा बड़ी संख्या में लौटाया गया है। क्या यह यूट्रान सेल पहचान (यूसी-आईडी) है?यूट्रान सेल पहचान getCid द्वारा लौटाई गई()

UC-Id = RNC-Id + C-Id 

क्या कोई इसे जानता है? से C-Id कैसे प्राप्त करें?

धन्यवाद और सर्वश्रेष्ठ, बेनी

+1

मुझे लगता है कि कोई भी वास्तव में समझने के है अपने प्रश्न के मूल, कृपया अधिक विशिष्ट – barmaley

+2

ठीक है, जीएसएम getCid (में) हो की CellID रिटर्न सेल। जहां तक ​​मुझे यूएमटीएस में पता है कि प्राप्त मूल्य में आरएनसी के पहचानकर्ता और सेल के पहचानकर्ता शामिल हैं। इसका मतलब यह है कि एक यूएमटीएस नेटवर्क में getCid() द्वारा लौटाया गया लंबा (7-9 अंक) संख्या दोनों में शामिल है, लेकिन मैं सिर्फ सेलआईडी चाहता हूं। मुझे लगता है कि रास्ता निम्न है: सी-आईडी = यूसी-आईडी% 65536 और आरएनसी-आईडी = (यूसी-आईडी) - (सी-आईडी)/65536।या यूएमटीएस में लौटाया गया मूल्य कितना बड़ा है जो 65536 बड़ा है, जो एंड्रॉइड दस्तावेज सही होने पर अधिकतम अनुमत मूल्य है। – Benny

उत्तर

3

(सेल आईडी% 65536) यह मेरे लिए काम किया प्रयास करें।

6

आरएनसी आईडी 4 बाइट सेल आईडी (3 जीपीपी 25.401, सेक्शन 6.1.5) का पहला 2 बाइट है, यदि नेटवर्क प्रकार यूएमटीएस/एचएसएक्सपीए/एचएसपीए + है। "
मेरे पास ऑपरेटर नेटवर्क तक पहुंच है और मैं प्रणाली में जाँच की और यह सत्य और सही है
कि मेरे कोड कृपया देखें कैसे आप आसानी से RNCID + सीआईडी ​​प्राप्त कर सकते हैं के आधार पर:।
Convert सीआईडी ​​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 और सीआईडी ​​जाओ

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 हैं।

2

यह इससे कहीं अधिक सरल है। सेल आईडी वैल्यू getid() रिटर्न के कम रजिस्टर में है, आरएनसी इस मान का उच्च रजिस्टर है (http://developer.android.com/reference/android/telephony/gsm/GsmCellLocation.html#getCid())। तो:

getCid() == RNC < < 16 | सीआईडी ​​

CID = getCid() & 0xffff

RNC = (getCid() >> 16) & 0xffff

2

तो सीआईडी> 65536 है, यह नहीं है वास्तव में सेल ID, लेकिन एक असली CellID और RNC-आईडी रैखिक संयोजन:

UTRAN_CELL_ID = RNCID x 65536 + CellID 

CellID निकालने के लिए, सापेक्ष आपरेशन का उपयोग करें:

CellID = UTRAN_CELL_ID % 65536 

RNCID निकालने के लिए, पूर्णांक हिस्सा मिलता है:

RNCID = UTRAN_CELL_ID/65536 
+0

आरएनसीआईडी ​​बराबर होना चाहिए (UTRAN_CELL_ID - UTRAN_CELL_ID% 65536)/65536 – vladiz

संबंधित मुद्दे