getLatLong总是返回false

时间:2017-04-01 18:24:55

标签: android exif

我正在尝试使用android.media.ExifInterface库从地理标记的图像中检索经度和纬度值。但是,尽管图像已进行地理标记,但getLatLong始终返回false。这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button galleryButton = (Button) findViewById(R.id.galleryButton);

    galleryButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Intent pickPhoto = new Intent(Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(pickPhoto , 1);


        }

    });


}


protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {

    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

    switch(requestCode) {
        case 0:
            if(resultCode == RESULT_OK){
                Uri selectedImage = imageReturnedIntent.getData();
                ExifInterface exif = new ExInterface(selectedImage.getPath());
                float[] latlong = null;
                bool result = exif.getLatLong(latlong);


            }

            break;

    }
}

正如您所看到的,我正在使用返回URI的路径初始化exif对象,它包含类似“/ external / images / media / 2330”的路径。当我调用getLatLong时,它总是返回false。我也尝试过this page中的示例,但仍然无效。任何帮助将不胜感激。

Galaxy S6 Edge Android SDK版本25

1 个答案:

答案 0 :(得分:1)

getPath()仅适用于Uri的{​​{1}}计划。你的有file计划。另外,您正在使用带有安全漏洞的content

ExifInterface库添加到com.android.support:exifinterface:25.3.1

接下来,将dependencies导入替换为android.media.ExifInterface

然后,替换:

android.support.media.ExifInterface

使用:

ExifInterface exif = new ExInterface(selectedImage.getPath());