Как получить Широту и Долготу из фотографии, сохраненной с помощью MediaStore.ACTION_IMAGE_CAPTURE? - PullRequest
0 голосов
/ 29 апреля 2019

Из приложения снимок сделан с помощью кода:

    values = new ContentValues();
    values.put(MediaStore.Images.Media.TITLE, "DogWalker");
    values.put(MediaStore.Images.Media.DESCRIPTION, "DogWalker");
    imageUri = getActivity().getContentResolver().insert(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

    //Save the Uri in order to get it back on getPictureResults. In most of the cases this would work
    //without passing the Uri, but when the app is removed from memory imageUri is lost and the app
    //can not recover the picture.
    String stringUri = imageUri.toString();
    SharedPreferences.Editor editor = mContext.getSharedPreferences(Global.MY_PREFS_NAME, 0).edit();
    editor.putString(Global.EXTRA_PICTURE_URI, stringUri);
    editor.apply();

По результатам активности:

    //on ActivityResult method
public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    switch (requestCode)
    {
        case takePictureRequestCode:
            getPictureResults(resultCode, intent);
            break;
    }
}

private void getPictureResults(int resultCode, Intent intent) {

    if (resultCode == Activity.RESULT_OK)
    {
        try {
            //Get Saved URI
            Bitmap dogWalkPicture;
            SharedPreferences prefs = mContext.getSharedPreferences(Global.MY_PREFS_NAME, 0);
            String stringUri = prefs.getString(Global.EXTRA_PICTURE_URI, "");
            imageUri = Uri.parse(stringUri);

            String filePath = mGlobal.getRealPathFromURI(mContext, imageUri);
            ExifInterface exif = new ExifInterface(filePath);
            float[] latLng = new float[2];
            boolean hasLatLong = exif.getLatLong(latLng);
            if (hasLatLong) {
                System.out.println("Latitude: " + latLng[0]);
                System.out.println("Longitude: " + latLng[1]);
            }

Проблема в том, что hasLatLong всегда возвращает false.Правильно, на картинке нет информации от latlng, я проверил с помощью приложения android photos.Когда я делаю снимок с помощью камеры (из приложения), там есть последние данные.

Есть идеи?Заранее спасибо.

...