2013-11-01 15 views
5

Xin chào, tôi đang phát triển ứng dụng Android mà tôi muốn người dùng hiện tại có vị trí đủ chính xác. Vì vậy, tôi có 2 tùy chọn để thực hiện điều nàyNhận người dùng hiện tại Vị trí android

Truy xuất vị trí hiện tại. http://developer.android.com/training/location/retrieve-current.html

Nhận Location cập nhậthttp://developer.android.com/training/location/receive-location-updates.html

Vì vậy, đây là vấn đề của tôi. Tôi đã đi qua Lấy vị trí hiện tại và tôi nhận ra ở cuối nó mang lại cho tôi người dùng vị trí được biết đến gần đây nhất. Nhưng yêu cầu của tôi là vị trí hiện tại của người dùng.

Vì vậy, tôi di chuyển về phía Cập nhật vị trí nhận. Tôi mặc dù tôi có thể nhận được bản cập nhật đầu tiên và tôi sẽ ngừng cập nhật. Nhưng đây cũng là lần đầu tiên nó mang lại cho tôi vị trí cuối cùng không phải là địa điểm mới. và sau khi đọc nó bắt đầu gps để cung cấp cho các bản cập nhật liên tiếp. Nhưng tôi chỉ quan tâm đến bản cập nhật đầu tiên.

Vì vậy, tôi cần giải pháp tốt sẽ cung cấp cho tôi người dùng vị trí hiện tại chính xác. Hoặc sử dụng gps hoặc mạng hoặc wifi bất kỳ một trong đó là có sẵn.

Nếu tôi làm sai điều gì, vui lòng sửa. Cần giúp đỡ. cảm ơn bạn.

Trả lời

1

GPS listener solution bạn cần.

Thêm vào trình xử lý vị trí, nhưng chọn GPS. Chỉ public void onLocationChanged(Location loc) mới có vị trí hiện tại.

+0

Cảm ơn bạn đã đề xuất. Tôi muốn thông qua giải pháp của bạn. Nhưng những gì tôi cảm thấy nó sẽ không cung cấp sự linh hoạt nhiều. Tôi có nghĩa là API mà tôi đề cập đến những người chăm sóc của nhà cung cấp vị trí cũng có. Điều đó có nghĩa là nếu gps không có sẵn thì nó sẽ tự động lấy vị trí bằng cách sử dụng nhà cung cấp khác. Vì vậy, tôi sẽ bỏ lỡ những tính năng đó. Chắc chắn tôi sẽ thử giải pháp của bạn. – nilkash

2

Vì vậy, đây là cách tôi có được vị trí hiện tại của người dùng để sử dụng cho bản đồ Google của tôi.

if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
      mMap.setMyLocationEnabled(true); 
      Criteria criteria = new Criteria(); 
      LocationManager locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE); 
      String provider = locationManager.getBestProvider(criteria, false); 
      Location location = locationManager.getLastKnownLocation(provider); 
      double lat = location.getLatitude(); 
      double lng = location.getLongitude(); 
      LatLng coordinate = new LatLng(lat, lng); 
      CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(coordinate, 13); 
      mMap.animateCamera(yourLocation); 

     } else { 
      final AlertDialog alertDialogGPS = new AlertDialog.Builder(getActivity()).create(); 

      alertDialogGPS.setTitle("Info"); 
      alertDialogGPS.setMessage("Looks like you have not given GPS permissions. Please give GPS permissions and return back to the app."); 
      alertDialogGPS.setIcon(android.R.drawable.ic_dialog_alert); 
      alertDialogGPS.setButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 

        Intent intentSettings = new Intent(Settings.ACTION_APPLICATION_SETTINGS); 
        startActivity(intentSettings); 
        alertDialogGPS.dismiss(); 
       } 

      }); 

      alertDialogGPS.show(); 
     } 
Các vấn đề liên quan