これまでのところ、私のアプリはSDカードに新しいフォルダを作成し、新しいフォルダに画像を保存しています。新しいアクティビティでAndroidディスプレイカメラ画像
私はそれを取得しようとしていますが、写真が撮られたら、「使用」または「再撮影」と言う2つのボタンを使って新しいアクティビティで表示されます。これまで画像の保存は完全にうまくいきましたが、画像が取得されて新しいアクティビティを開こうとすると、カメラのアクティビティにそのまま残り、サーフェスビューを持っているので使用できない画像が表示されます。
私のLogCatで、私が正しい場所から画像を呼び出さないために画像が見つからない場合に表示されるように設定されているエラー "Oh、no reference"が表示されます私のPunch.javaで。
私は一度、画像が新しいアクティビティ "Punch.java"を開き、ちょうど取られた画像を表示するためにアプリを取ったことがあります。今、新たな活動を開きますが、まだできない
intent.putExtra("filepath",uriSavedImage.toString());
へ
UPDATE Lumisのおかげ(以下のコードは更新されている)
変更
intent.putExtra("filepath",uriSavedImage);
画像を参照してください。
UPDATE 2 Punch.java
私は私が"/sdcard/Punch/image_0.jpg"
に(myRef)
を変更した場合、私はその画像を見ることができる、新しいコードのように私のPunch.javaを更新しましたが、私はそれだけだった画像にreferanceする必要がありますこの行には何かがあるカメラで撮影したと思いintent.putExtra("filepath",uriSavedImage.toString());
アップデート3
ほぼ完璧に今働いて使用してintent.putExtra("filepath",Uri.parse(output.getAbsolutePath()).toString());
が何らかの理由でまだ起動していますが、何らかの理由で起動時にsdcard/
が正常に動作しています。ここでは、画像を撮っている間に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それはwhaでなければならないtever Environment.getExternalStorageDirectory()returns ... – Lumis