2014-03-02 130 views
0

我想捕獲已通過攝像頭捕獲並存儲到ImageBox變量中的圖像的緯度。使用ExifInterface類,我試圖獲取圖像的緯度並將該信息顯示到LatitudeBox變量中,但是我的語法不正確,請讓我知道我做錯了什麼!下面Android獲取捕獲的圖像元數據

MainActivity.java全碼

import java.io.IOException; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.media.ExifInterface; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 
    //variables 
    Button CameraButton; 
    ImageView ImageBox; 
    EditText LatitudeBox, LongitudeBox; 
    String IMG = ImageBox.toString(); 

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

     CameraButton = (Button) findViewById(R.id.CameraButton); 
     ImageBox = (ImageView) findViewById(R.id.imageView1); 

     LatitudeBox = (EditText) findViewById(R.id.LatitudeBox); 
     LongitudeBox = (EditText) findViewById(R.id.LongitudeBox); 

     //Camera Button Onclick 
     CameraButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(intent, 0); 

       try { 
        ExifInterface exif = new ExifInterface(IMG); 
        LongitudeBox.setText(exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF)); // get longitude 
        LatitudeBox.setText(exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF)); //get latitude 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       }// try catch 
      }// end onclick 
     });// end camera button onclick 





    }// close oncreate 

    //display image inside ImageBox variable using bitmap 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     if(requestCode == 0) 
     { 
     Bitmap TheImage = (Bitmap) data.getExtras().get("data"); 
     ImageBox.setImageBitmap(TheImage); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 







}// close main 

應用程序現在崩潰的發射和不知道是什麼導致了它。這裏是logcat的錯誤

http://s7.postimg.org/4p67papyj/logcat1.png

activity_main.xml中

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="250dp" 
    android:layout_height="200dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="32dp" 
    android:src="@drawable/ic_launcher" /> 

<Button 
    android:id="@+id/CameraButton" 
    android:layout_width="150dp" 
    android:layout_height="35dp" 
    android:layout_below="@+id/imageView1" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="38dp" 
    android:text="@string/Camera_Button" /> 

<TextView 
    android:id="@+id/LatitudeBox" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/CameraButton" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="16dp" 
    android:text="@string/LatitudeBox" 
    android:textColor="#ff0000" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<TextView 
    android:id="@+id/LongitudeBox" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/LatitudeBox" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="21dp" 
    android:text="@string/LongitudeBox" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

回答

1

沒有爲ExifInterface沒有.get()方法的圖像。

LatitudeBox = exif.get(ExifInterface.TAG_GPS_LONGITUDE_REF); 

難道你或許意味着:

LatitudeBox.setText(exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF)); 

編輯:

我發現了它。

看看這裏的最後一個變量:

Button CameraButton; 
ImageView ImageBox; 
EditText LatitudeBox, LongitudeBox; 
String IMG = ImageBox.toString(); 

您還沒有一個值分配給您ImageView ImageBox。所以當你ImageBox.toString(),你會收到一個NullPointerException

IMG的變化初始化是這樣的:

String IMG = "filename.txt"; 
+0

您好,感謝您回覆。我添加了你給我的行,它修復了一切,但現在應用程序只是在加載時崩潰。不知道什麼是錯的 – ssj3goku878

+0

我編輯了主代碼以添加我已更改的內容 – ssj3goku878

+0

如果它崩潰了,您可以使用LogCat輸出更新您的文章嗎? –