2017-04-01 19 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; 

    } 
} 

あなたが見ることができるように、私は返さURIからのパスでEXIFオブジェクトを初期化することだし、それは「/外部/画像/メディア/ 2330」のようなパスが含まれています。 getLatLongを呼び出すと、常にfalseが返されます。私もthis pageから例を試しましたが、それでも動作しません。どんな助けもありがとう。

ギャラクシーS6エッジ のAndroid SDKのバージョン25

答えて

1

getPath()fileスキームでUriに取り組んでいます。あなたのスキームはcontentです。加えて、あなたはExifInterfaceをセキュリティ上の欠陥と共に使用しています。

com.android.support:exifinterface:25.3.1ライブラリをdependenciesに追加してください。

次に、の1つでandroid.media.ExifInterfaceのインポートを置き換えます。その後

、置き換えますと

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

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

ありがとうございます!それは完全に動作します! – user30646

関連する問題