public class MainActivity extends Activity {
TextView mView;
final int REQ_CODE_SELECT_IMAGE=100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mView = (TextView) findViewById(R.id.textview);
Button picture = (Button) findViewById(R.id.Btn_Find);
picture.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){ // 클릭하면 ACTION_PICK 연결로 기본 갤러리를 불러옵니다.
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, REQ_CODE_SELECT_IMAGE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(getBaseContext(), "resultCode : "+resultCode,Toast.LENGTH_SHORT).show();
if(requestCode == REQ_CODE_SELECT_IMAGE)
{
if(resultCode==Activity.RESULT_OK)
{
try {
//Uri에서 이미지 이름을 얻어온다.
String name_Str = getImageNameToUri(data.getData());
String filename = Environment.getExternalStorageDirectory()
.getPath() + name_Str;
try {
ExifInterface exif = new ExifInterface(filename);
getExif(exif);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "Error!", Toast.LENGTH_LONG).show();
}
//이미지 데이터를 비트맵으로 받아온다.
Bitmap image_bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData());
ImageView image = (ImageView)findViewById(R.id.SelectedImage);
//배치해놓은 ImageView에 set
image.setImageBitmap(image_bitmap);
Toast.makeText(getBaseContext(), "name_Str : "+name_Str , Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
}
public String getImageNameToUri(Uri data)
{
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(data, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String imgPath = cursor.getString(column_index);
String imgName = imgPath.substring(imgPath.lastIndexOf("/")+1);
return imgName;
}
private void getExif(ExifInterface exif) {
String myAttribute = "[Exif information] \n\n";
myAttribute += getTagString(ExifInterface.TAG_DATETIME, exif);
myAttribute += getTagString(ExifInterface.TAG_FLASH, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LATITUDE, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LATITUDE_REF, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LONGITUDE, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LONGITUDE_REF, exif);
myAttribute += getTagString(ExifInterface.TAG_IMAGE_LENGTH, exif);
myAttribute += getTagString(ExifInterface.TAG_IMAGE_WIDTH, exif);
myAttribute += getTagString(ExifInterface.TAG_MAKE, exif);
myAttribute += getTagString(ExifInterface.TAG_MODEL, exif);
myAttribute += getTagString(ExifInterface.TAG_ORIENTATION, exif);
myAttribute += getTagString(ExifInterface.TAG_WHITE_BALANCE, exif);
mView.setText(myAttribute);
}
private String getTagString(String tag, ExifInterface exif) {
return (tag + " : " + exif.getAttribute(tag) + "\n");
}
}
우선 코드를 이렇게 짰는데
String filename = Environment.getExternalStorageDirectory()
.getPath() + name_Str;
try {
ExifInterface exif = new ExifInterface(filename);
getExif(exif);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "Error!", Toast.LENGTH_LONG).show();
}
이부분에서 자꾸 에러토스트로 자꾸빠집니다...
사진이 이미지뷰에 띄워지면서 그밑에 exif정보들을 텍스트뷰로 띄우려면 어떻게 해야하죠????