지금까지 내 앱에서 SD 카드에 새 폴더를 만들고 새 폴더에 pictuers를 저장하는 사진을 찍었습니다.새로운 활동에서 Android 디스플레이 카메라 이미지
사진을 찍은 후에는 "사용"또는 "다시 촬영"이라고 표시된 두 개의 버튼이있는 새로운 활동에 표시됩니다. 지금까지 이미지 저장은 완벽하게 잘 작동하지만 일단 이미지를 가져 와서 새로운 Activity를 열면 Camera Activity에 그대로 유지되고 표면보기가있는만큼 사용할 수없는 이미지가 표시됩니다.
내 LogCat에서 그림을 찾을 수없는 경우 표시하도록 설정된 "오, 참조 없음"오류가 발생합니다. 그 이유는 내가 올바른 위치에서 사진을 호출하지 않기 때문일 수 있습니다. 내 Punch.java에.
그래서 나는 새로운 활동 "Punch.java"를 열고 방금 찍은 이미지를 표시하기 위해 이미지를 앱에 가져 가려고했습니다. Lumis에
UPDATE 감사 (아래 코드는 업데이트되었습니다)
여전히 수 없습니다 지금 새로운 활동을 엽니 다
intent.putExtra("filepath",uriSavedImage.toString());
에
intent.putExtra("filepath",uriSavedImage);
을 변경하지만, 이미지를 참조하십시오.
UPDATE 2 Punch.java
나는 내가 그 이미지를 볼 수 있지만 난 그냥 있던 이미지에 referance에 필요 (myRef)
"/sdcard/Punch/image_0.jpg"
에 변경하는 경우 새로운 코드로 내 Punch.java를 업데이트 이 라인과 함께 할 수있는 뭔가가 카메라로 촬영 한 생각 intent.putExtra("filepath",uriSavedImage.toString());
업데이트 3
거의 지금은 완벽하게 작동하여 intent.putExtra("filepath",Uri.parse(output.getAbsolutePath()).toString());
하지만 어떤 이유로 든 여전히 시작하고있다. sdcard/
이제는 사진을 찍는 동안 sdcard가 컴퓨터에 마운트되었을 때 Ok/mnt/sdcard가 작동합니다. 내 카메라 활동에서
내가
PictureCallback myPictureCallback_JPG = new PictureCallback(){
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
/*Bitmap bitmapPicture
= BitmapFactory.decodeByteArray(arg0, 0, arg0.length); */
int imageNum = 0;
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "Punch");
imagesFolder.mkdirs(); // <----
String fileName = "image_" + String.valueOf(imageNum) + ".jpg";
File output = new File(imagesFolder, fileName);
while (output.exists()){
imageNum++;
fileName = "image_" + String.valueOf(imageNum) + ".jpg";
output = new File(imagesFolder, fileName);
}
Uri uriSavedImage = Uri.fromFile(output);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
imageFileOS.write(arg0);
imageFileOS.flush();
imageFileOS.close();
Toast.makeText(AndroidCamera.this,
"Image saved",
Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent intent = new Intent(getBaseContext(), Punch.class);
intent.putExtra("filepath",uriSavedImage.toString());
//just using a request code of zero
int request=0;
startActivityForResult(intent,request);
}};
이 그리고 다음 활동 내 Punch.java은 다음과 같습니다
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.punch);
String myRef = this.getIntent().getStringExtra("filepath");
File imgFile = new File(myRef);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imagepunch);
myImage.setImageBitmap(myBitmap);
}
}
가}
저는 mnt가 정상이라고 생각합니다.이 질문에 대한 대답을 확인하십시오 : http://stackoverflow.com/questions/7102104/android-how-to-access-a-file -in-the-sd-card 그것은해야한다. tever Environment.getExternalStorageDirectory() returns ... – Lumis