2017-04-01 76 views
0

我想從使用android.media.ExifInterface庫的地理標記圖像檢索經度和緯度值。但是,儘管圖像是地理標記的,getLatLong總是返回false。這是我的代碼: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; 

    } 
} 

正如你所看到的,我初始化EXIF對象從返回的URI路徑,它包含像「/外部/圖像/媒體/ 2330」的路徑。當我調用getLatLong時,它總是返回false。我也嘗試了this page的示例,但仍然無效。任何幫助,將不勝感激。

銀河S6邊緣 的Android SDK版本25

回答

1

getPath()僅適用於一個Urifile方案。你有一個content計劃。另外,您正在使用帶有安全缺陷的ExifInterface

com.android.support:exifinterface:25.3.1庫添加到您的dependencies

接下來,將您的android.media.ExifInterface進口替換爲android.support.media.ExifInterface

然後,替換:

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

有:

ExifInterface exif = new ExifInterface(getContentResolver().openInputStream(selectedImage)); 
+0

謝謝!它完美的工作! – user30646