2011-11-03 5 views
9

thể trùng lặp:
Programmatically find device support GPS or not?Android séc GPS sẵn có trên thiết bị

Làm thế nào tôi có thể kiểm tra, là GPS có sẵn trên thiết bị?

Khi tôi cố gắng sử dụng các mã tiếp theo

PackageManager pm = context.getPackageManager(); 
boolean hasGps = pm.hasSystemFeature(PackageManager.FEATURE_LOCATION); 

if (hasGps) { 
    Log.d("TAG", "HAS GPS"); 
} else { 
    Log.d("TAG", "HAS NOT GPS"); 
} 

Tôi luôn luôn có được CÓ GPS, nhưng Archos 101IT tôi không có mô-đun GPS. Có cách nào để kiểm tra phần cứng GPS availablity?

Trả lời

23

Sử dụng mã này

boolean hasGps = pm.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS); 

nếu bạn đã phần cứng GPS nhúng cho thiết bị của bạn, nhưng nó không được kích hoạt sau đó sử dụng cá tuyết sau để kích hoạt nó tự động,

LocationManager manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //Ask the user to enable GPS 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Location Manager"); 
    builder.setMessage("Would you like to enable GPS?"); 
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      //Launch settings, allowing user to make a change 
      Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      startActivity(i); 
     } 
    }); 
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      //No location service, no Activity 
      finish(); 
     } 
    }); 
    builder.create().show(); 
} 

Bạn có thể gọi LocationManager.getAllProviders() và kiểm tra xem LocationManager.GPS_PROVIDER có được đưa vào danh sách hay không.

nếu không bạn chỉ cần sử dụng mã này LocationManager.isProviderEnabled(String provider).

nếu trả về false ngay cả trong trường hợp nếu bạn don `t có GPS trong điện thoại của bạn

+2

Tôi có một devide không có GPS, nhưng pm.hasSystemFeature (PackageManager.FEATURE_LOCATION_GPS); luôn trả về True – skayred

+1

xem chỉnh sửa và thử – Karthi

+1

LocationManager.isProviderEnabled (Nhà cung cấp chuỗi) trả về false cho máy tính bảng của tôi, điều đó đúng. Nhưng nếu tôi có GPS bị vô hiệu hóa trên thiết bị cầm tay của tôi với sự hỗ trợ GPS, nó sẽ là sai quá. Tôi cần kiểm tra tính khả dụng của phần cứng, không bật trạng thái vô hiệu hóa – skayred

2

Màn hình hệ thống Cài đặt GPS cho android có thể được gọi giống như bất kỳ hoạt động khác:

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0); 

Để kiểm tra GPS sẵn sàng sử dụng mã mã bên dưới:

(Hoạt động phải thực hiện LocationListener)

LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,1.0f, this); 
boolean isGPS = locationManager.isProviderEnabled (LocationManager.GPS_PROVIDER); 
+0

Làm thế nào đến khi tắt gps của tôi và trên isGPS đoạn mã của bạn luôn đúng? Bạn có chắc chắn rằng điều này phát hiện nếu GPS đang hoạt động, hoặc nó kiểm tra xem GPS có sẵn hoặc cho phép hoặc khác? – portfoliobuilder