获取位置坐标的更好方法
Better approach for getting the location coordinates
我已经通过像这样调用 requestLocationUpdates 成功地获取了当前的 gps 坐标:
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
if( provider != null){
locationManager.requestLocationUpdates(provider, 400, 1, this);
}
我的 "onLocationChanged" 正在根据我的标准更新此职位。
@Override
public void onLocationChanged(Location location) {
Log.d(TAG, "location is" + location);
double lat = (location.getLatitude());
double lng = (location.getLongitude());
String coordinates = (String.valueOf(lat) + "," + String.valueOf(lng));
longitudeField.setText(coordinates);
}
现在在我的应用程序中,我想将经纬度连同图像和其他一些信息一起传递给 firebase。
所以我有另一种方法,即从捕获的图像中获取 url 并将图像连同两个当前日期和时间的字符串一起发送到 firebase。
private void uploadFile() {
final String dateStamp = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
final String timeStamp = new SimpleDateFormat("HH:mm:ss").format(new Date());
if (mImageUri != null) {
StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
+ "." + getFileExtension(mImageUri));
mUploadTask = fileReference.putFile(mImageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mProgressBar.setProgress(0);
}
}, 500);
Toast.makeText(MainActivity.this, "Upload successful", Toast.LENGTH_LONG).show();
Upload upload = new Upload(
taskSnapshot.getDownloadUrl().toString(), timeStamp, dateStamp);
String uploadId = mDatabaseRef.push().getKey();
mDatabaseRef.child(dateStamp).child(uploadId).setValue(upload);
}
})
问题:
获取字符串形式的纬度和经度的方法如何,以便我可以在我的方法中使用它来将数据传递给 firebase?
我推荐以下方法:
- 在全球范围内跟踪当前纬度和当前经度(通过 member variables, or through the use of shared preferences)。
- 在您的 uploadFile 方法中访问这些以发送它们。
对我来说似乎很简单。
我已经通过像这样调用 requestLocationUpdates 成功地获取了当前的 gps 坐标:
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
if( provider != null){
locationManager.requestLocationUpdates(provider, 400, 1, this);
}
我的 "onLocationChanged" 正在根据我的标准更新此职位。
@Override
public void onLocationChanged(Location location) {
Log.d(TAG, "location is" + location);
double lat = (location.getLatitude());
double lng = (location.getLongitude());
String coordinates = (String.valueOf(lat) + "," + String.valueOf(lng));
longitudeField.setText(coordinates);
}
现在在我的应用程序中,我想将经纬度连同图像和其他一些信息一起传递给 firebase。
所以我有另一种方法,即从捕获的图像中获取 url 并将图像连同两个当前日期和时间的字符串一起发送到 firebase。
private void uploadFile() {
final String dateStamp = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
final String timeStamp = new SimpleDateFormat("HH:mm:ss").format(new Date());
if (mImageUri != null) {
StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
+ "." + getFileExtension(mImageUri));
mUploadTask = fileReference.putFile(mImageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mProgressBar.setProgress(0);
}
}, 500);
Toast.makeText(MainActivity.this, "Upload successful", Toast.LENGTH_LONG).show();
Upload upload = new Upload(
taskSnapshot.getDownloadUrl().toString(), timeStamp, dateStamp);
String uploadId = mDatabaseRef.push().getKey();
mDatabaseRef.child(dateStamp).child(uploadId).setValue(upload);
}
})
问题:
获取字符串形式的纬度和经度的方法如何,以便我可以在我的方法中使用它来将数据传递给 firebase?
我推荐以下方法:
- 在全球范围内跟踪当前纬度和当前经度(通过 member variables, or through the use of shared preferences)。
- 在您的 uploadFile 方法中访问这些以发送它们。
对我来说似乎很简单。