2009-05-17 35 views
7

Công cụ/Env .: C++, VS2008, WM6.1Cách lấy Thông tin Tháp Di động trên Điện thoại Di động Windows Mobile

Tôi hiện chỉ có điện thoại HTC Diamond Windows Mobile để thử và thử như tôi có thể, với tất cả sức mạnh hack của tôi, tôi vẫn không thể hoàn thành nhiệm vụ mua lại các chi tiết còn lại của Cell ID và LAC, để hoàn thành chương trình dựa trên vị trí di động của tôi.

Tôi đã quản lý để nhận được MCCMNC, nhưng số Cell ID và LAC vẫn bị ẩn với tôi. Có phải là cách để thực hiện những điều này, vì chính điện thoại không nghi ngờ gì khi sử dụng chúng cho những thứ khác. :/

Để nhắc lại những gì tôi đã cố gắng, nó sẽ là như sau:

RIL_GetCellTowerInfo (g_hRIL); // doesn't even signal the 'ResultCallback' function. 

RIL_GetCurrentOperator (g_hRIL, RIL_OPFORMAT_NUM); // calls the 'ResultCallback' function and only with this am I able to at least get the MCC and MNC. 

thử các mã kiểm tra sau quá, và không có gì làm việc.

//constants and structures for cell ID 
#define RIL_DEVSPECIFICPARAM_ENABLECELLIDSUPPORT 26 
#define RIL_DEVSPECIFICPARAM_DISABLECELLIDSUPPORT 27 

bool mode = true; 
DWORD dwFuncID=0; 

if (mode) 
    dwFuncID = RIL_DEVSPECIFICPARAM_ENABLECELLIDSUPPORT; 
else 
    dwFuncID = RIL_DEVSPECIFICPARAM_DISABLECELLIDSUPPORT; 

m_hrCellIdRequest_ = RIL_DevSpecific (g_hRIL,(LPBYTE) &dwFuncID, sizeof(DWORD)); 

// no 'ResultCallback' triggered either. 


BYTE req[4]= {24, 0, 0, 0}; 
m_hrCellIdRequest_ = RIL_DevSpecific (g_hRIL, req, 4); 
req[0]=26; 
m_hrCellIdRequest_ = RIL_DevSpecific (g_hRIL, req, 4); 

Tôi thậm chí đã thử gửi các lệnh AT nối tiếp để nhận lại thứ gì đó. ví dụ. "AT+CCED=0\r" Tôi chỉ nhận được kết quả không thành công của '4 \ r'.

Tôi đã đọc rằng tùy chọn cuối cùng sẽ là đọc bộ nhớ trong của nó. Nhưng đó không phải là một phương pháp chung mà có thể làm việc cho các điện thoại khác. Và bên cạnh đó, tôi thậm chí không biết bắt đầu từ đâu.

Vì vậy, cuối cùng tôi đã chia tay với một lời kêu gọi giúp đỡ cộng đồng tuyệt vời này nếu bạn bằng cách nào đó quản lý thông tin này từ điện thoại này, bạn có thể chia sẻ với chúng tôi không?

Hoặc nếu không thể nhận được, bạn có thể giải thích chi tiết tại sao điều đó có thể xảy ra không?

Tôi chỉ muốn đóng cửa điều này một lần và cho tất cả. :)

Trả lời

1

Kiểm tra ra câu trả lời đầu tiên ở đây (tôi chỉ cố gắng nó trên một HTC Touch Diamond và nó làm việc tốt): msdn discussion board

+0

Đó là chỉ cho MNC và MCC. Tôi đã có rồi. Tôi cần giá trị Cell ID và LAC ngay bây giờ từ HTC Diamond. Bạn đã quản lý để có được những người? –

+0

Không, nó trả về cấu trúc rilcelltowerinfo, có MNC, MCC, Cell ID và LAC, trong số những thứ khác. – hemisphire

+0

Điều này thật kỳ lạ. Bởi vì tôi đã sao chép và dán toàn bộ mã và tôi thậm chí không nhận được ResultCallback (..) được gọi. Tôi có HTC Diamond (phiên bản CDMA). Có thể bạn là phiên bản GSM? Không biết điều đó có quan trọng không. –

5

Vì vậy, sau chưa nhiều đào bới xung quanh và bướng bỉnh "googling", có vẻ như rằng lý do cho RIL_ gốc * mã không làm việc trên điện thoại của tôi là tôi đang trên một CDMA (UMTS) mạng, và không một mạng GSM.

Mạng GSM, như tôi đã học, cung cấp điện thoại với các giá trị cho MCC, MNC, Cell ID và LAC.

Mặt khác, Mạng CDMA cung cấp một nhóm số khác là BID, NID, and SID.

ví dụ: CID -> BID, LAC -> NID, MNC -> SID, MCC -> MCC

Mã giao diện RIL_ * ở trên phổ biến vì có nhiều điện thoại/mạng GSM trên thế giới hơn CDMA (chủ yếu ở Bắc Mỹ).

Hiện không có điện thoại GSM thực sự, tôi không thể kiểm tra mã giao diện RIL_ * mà tôi có. Công cụ giả lập di động SDK WM6.1 gọn gàng, nhưng không đủ để phát hành một sản phẩm.

Điều này sau đó để lại cho tôi một lần nữa yêu cầu bất kỳ trợ giúp nào từ chuyên gia di động về cách truy xuất giá trị BID, NID và SID từ điện thoại HTC Diamond của chúng tôi. ID và LAC.

Google Mobile Maps trên điện thoại của tôi bằng cách nào đó quản lý để thực hiện cảnh tượng này. Tôi chỉ có thể đoán rằng họ phải tìm ra cách trên mạng CDMA để lấy thông tin về tháp di động.

Mọi trợ giúp đều được đánh giá cao. :)

+1

CDMA không có một khái niệm về các tế bào đó là lý do tại sao bạn không nhận được điều đó. Đây là một thuộc tính radio điện tử, không phải là một vấn đề phần mềm. Hiệu quả điện thoại của bạn có thể được chọn trên nhiều ăng-ten từ công ty điện thoại và sử dụng một bộ khác (1 hoặc nhiều hơn) để truyền tải, đó là lý do phạm vi của CDMA được cải thiện đáng kể qua GSM (chúng tôi có mạng CDMA ở Úc cùng một lý do). Tôi đoán họ không trả lại thông tin vì không có tương đương trong CDMA như vậy, bạn chỉ đơn giản là trong vùng phủ sóng hay không. – Spence

+1

Bất kỳ ý tưởng nào về cách Google thực hiện? Họ có thể đang sử dụng IP di động của tôi để định vị địa lý quá, nhưng kết quả vị trí dường như quá chính xác từ chỉ IP. –

0

Trade điện thoại CDMA của bạn trong cho một phiên bản GSM :)

3

Dường như Google không thực sự sử dụng IP di động của bạn cho vị trí, và không có sự hỗ trợ cho CDMA: source

+0

Yup, đã làm điều đó. Cảm ơn nhiều. :) –

Các vấn đề liên quan