获得位置坐标的更好方法

问题描述 投票:-4回答:1

我已成功设法通过调用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);


                    }
                })

题:

如何以String的形式获取经度和纬度,以便我可以在我的方法中使用它来将数据传递给firebase?

android firebase-realtime-database android-gps
1个回答
0
投票

我建议采用以下方法:

  • 全局跟踪当前的纬度和电流(无论是通过member variables,还是通过使用shared preferences)。
  • 在uploadFile方法中访问它们以发送它们。

对我来说似乎很简单。

© www.soinside.com 2019 - 2024. All rights reserved.