Tôi là người lập trình Android mới và tôi gặp vấn đề với yêu cầu cập nhật cho bản địa hóa của tôi.Cách thức hoạt động - requestLocationUpdates() + LocationRequest/Listener
Tôi làm việc với các hướng dẫn từ http://developer.android.com/training/location/receive-location-updates.html.
Ứng dụng của tôi có thể xử lý các ngoại lệ, nhận vĩ độ và lâu dài đúng cách và trình mã hóa địa lý có thể xử lý việc hiển thị địa chỉ. Nhưng tôi chỉ yêu cầu vị trí một lần - hoặc khi thay đổi vị trí. Tôi muốn làm khoảng thời gian. Hiện tại, tôi đã bắt đầu triển khai mã từ các hướng dẫn và có vẻ như sau:
public class MainActivity extends Activity implements
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener,
LocationListener {
private static final int MILLISECONDS_PER_SECOND = 1000;
public static final int UPDATE_INTERVAL_IN_SECONDS = 5;
private static final long UPDATE_INTERVAL =
MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;
private static final int FASTEST_INTERVAL_IN_SECONDS = 1;
private static final long FASTEST_INTERVAL =
MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;
private TextView tvStatus;
private TextView tvLatitude;
private TextView tvLongitude;
LocationRequest mLocationRequest;
LocationClient mLocationClient;
Location mCurrentLocation;
boolean bNetworkEnabled;
boolean bGPSEnabled;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvStatus = (TextView)findViewById(R.id.tvStatus);
tvLatitude = (TextView)findViewById(R.id.tvLatitude);
tvLongitude = (TextView)findViewById(R.id.tvLongitude);
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
mLocationClient = new LocationClient(this, this, this);
checkProviders();
}
Vì vậy, đã có khoảng thời gian thực hiện và yêu cầu vị trí. Nhưng trong liên kết tôi đã đưa ra trước khi có một bình luận rằng tôi nên sử dụng một nơi nào đó requestLocationUpdates()
(có lẽ onCreate()
, onStart()
và loại bỏ yêu cầu trên onStop()
), nhưng tôi có vấn đề với nó. Vì vậy, Eclipse cho tôi thấy 3 phương pháp:
requestLocationUpdates(LocationRequest request, LocationListener listener)
requestLocationUpdates(LocationRequest request, PendingIntent CallbackIntent)
requestLocationUpdates(LocationRequest request, LocationListener listener, Looper looper)
Vì vậy, cái đầu tiên tôi nghĩ là phù hợp nhất ở nơi này. Tôi nên đặt gì trong khe LocationListener
? Tôi yêu cầu giúp đỡ với giải thích nhỏ như thế nào nó hoạt động.
Chính xác những gì tôi đã làm sai.Cảm ơn bạn. :) –
Vì vậy, tôi biết 'requestLocationUpdates' sẽ trả về Vị trí cho PendingIntent nhưng tôi có thể truy cập vào vị trí đã trả về ở đâu? – geckob
Để gọi yêu cầu này, bạn cần một lớp học để triển khai LocationUpdates. Triển khai này có phương thức OnLocationChanged (Location location). Đây là nơi bạn truy cập vị trí được trả lại. lớp công khai MyLocationListener triển khai LocationListener {...} – Totalys