2013-04-25 32 views
5

Tôi thấy rằng chúng tôi có các lớp dành cho CDMACellLocation và GSMCellLocation, nhưng không có gì cụ thể cho LTE. Tôi có thể nhận vị trí ô di động LTE cụ thể cho ngữ cảnh dịch vụ điện thoại của mình không? Cảm ơn!cách nhận vị trí ô LTE trong Android?

+0

Bạn chỉ có thể nhận thông tin LTE trong API 17 –

+0

Cảm ơn bạn đã trả lời! Tôi đang trên API 17. Những gì tôi muốn biết là làm thế nào để có được extarct CellInfo từ arraylist trả về bởi hàm GetAllCellInfo() của TelephonyManager. – user1985703

Trả lời

-1

Bạn có thể lặp qua danh sách danh sách trả về bởi getAllCellInfo() và kiểm tra xem CellInfo là một CellInfoLte hay không bằng cách

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
List<CellInfo> cellInfoList = tm.getAllCellInfo(); 
for (CellInfo cellInfo : cellInfoList) 
{ 
    if (cellInfo instanceof CellInfoLte) 
    { 
     // cast to CellInfoLte and call all the CellInfoLte methods you need 
    } 
} 
+1

Điều này không trả lời được câu hỏi. Một khi bạn có một đối tượng CellInfoLte, làm thế nào để bạn có được thông tin vị trí? – DataDino

0

Hãy cẩn thận ở đây - Mặc dù các API có thể cung cấp một giao diện để biết tế bào, nó thực sự phụ thuộc vào người vận chuyển. Không giống như CDMA có thể cung cấp thông tin vị trí khóa học như là một phần của đầu ra RADIUS của nó, LTE thay đổi theo cách thực hiện. Chỉ có mức "thấp hơn" của mạng LTE biết bạn có thể ở đâu, và điều đó là mờ nhất. Nếu không biết cơ sở hạ tầng của nhà cung cấp dịch vụ của bạn, MME hoạt động như thế nào, bạn có thể nhận được thông tin, nhưng tôi không tin vào thông tin vị trí địa lý.

Ngoài ra, tùy thuộc vào cách cuộc thăm dò của nhà cung cấp dịch vụ của bạn. Tùy thuộc vào cấu hình thiết bị, bạn có thể được thăm dò ý kiến ​​mỗi phút một lần, cứ năm phút một lần, cứ sau hai giờ một lần. Nếu bạn đang chuyển vùng, bạn có thể không nhận được gì ngoài rác vì không có tiêu chuẩn tốt cho các giá trị.

0

bạn có thể lấy thông tin từ kết nối LTE, với một dàn diễn viên cụ thể trên các phiên bản thuộc danh sách của CellInfo.

MobileInfoRecognizer mobileInfoRecognizer = new MobileInfoRecognizer(); 
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
List<CellInfo> cellInfos = tm.getAllCellInfo(); 
additional_info = mobileInfoRecognizer.getCellInfo(cellInfos.get(0)); 

Trong ứng dụng của tôi, tôi nhận thấy rằng bạn có thể chỉ mất phần tử đầu tiên trong danh sách của bạn; Tôi chỉ cho bạn lớp tùy chỉnh của tôi:

public class MobileInfoRecognizer { 
    public String getCellInfo(CellInfo cellInfo) { 
      String additional_info; 
      if (cellInfo instanceof CellInfoGsm) { 
       CellInfoGsm cellInfoGsm = (CellInfoGsm) cellInfo; 
       CellIdentityGsm cellIdentityGsm = cellInfoGsm.getCellIdentity(); 
       additional_info = "cell identity " + cellIdentityGsm.getCid() + "\n" 
         + "Mobile country code " + cellIdentityGsm.getMcc() + "\n" 
         + "Mobile network code " + cellIdentityGsm.getMnc() + "\n" 
         + "local area " + cellIdentityGsm.getLac() + "\n"; 
      } else if (cellInfo instanceof CellInfoLte) { 
       CellInfoLte cellInfoLte = (CellInfoLte) cellInfo; 
       CellIdentityLte cellIdentityLte = cellInfoLte.getCellIdentity(); 
       additional_info = "cell identity " + cellIdentityLte.getCi() + "\n" 
         + "Mobile country code " + cellIdentityLte.getMcc() + "\n" 
         + "Mobile network code " + cellIdentityLte.getMnc() + "\n" 
         + "physical cell " + cellIdentityLte.getPci() + "\n" 
         + "Tracking area code " + cellIdentityLte.getTac() + "\n"; 
      } else if (cellInfo instanceof CellInfoWcdma){ 
       CellInfoWcdma cellInfoWcdma = (CellInfoWcdma) cellInfo; 
       CellIdentityWcdma cellIdentityWcdma = cellInfoWcdma.getCellIdentity(); 
       additional_info = "cell identity " + cellIdentityWcdma.getCid() + "\n" 
         + "Mobile country code " + cellIdentityWcdma.getMcc() + "\n" 
         + "Mobile network code " + cellIdentityWcdma.getMnc() + "\n" 
         + "local area " + cellIdentityWcdma.getLac() + "\n"; 
      } 
      return additional_info; 
    } 
} 

Vì vậy, nếu thiết bị được thử nghiệm không hỗ trợ LTE, bạn luôn có thể có được thông tin liên quan khác về kết nối của thiết bị. Hy vọng bạn có thể tìm thấy nó hữu ích.

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