So far I have my app taking a picture AndroidCamera.java using the camera and then saving the image and displaying it in a new Activity Punch.java which works fine. On this screen there are then two options too use the image or retake the image if the button retake is clicked it will go back to the AndroidCamera.java Activity and if use is clicked it will then go to the Activity BeatEmUp.java which is the new Activity I want to show the image on again.
I just cant figure out what to put in the BeatEmUp.java Activity to display the image again in this new Activity you can see on the code below that I am passing the string from AndroidCamera.java to Punch.java but don’t think I can do this again from the Punch.java to BeatEmUp.java?
Update Adil Soomro
BeatEmUp.java Activity now force closes when Use button is clicked.
Ok code below has been updated I had to change intent.putExtra("filepath",imagePath); to
Use.putExtra("filepath",imagePath); as with intent at the start it was giving me an error I have also added the BeatEmUp.java as I am not sure if this is correct i thought it would just be the same code as I use to show the image on Punch.java
AndroidCamera.java
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",Uri.parse(output.getAbsolutePath()).toString());
//just using a request code of zero
int request=0;
startActivityForResult(intent,request);
}};
Punch.java
String imagePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.punch);
imagePath = this.getIntent().getStringExtra("filepath");
Button buse = (Button) findViewById(R.id.buse);
buse.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent Use = new Intent(Punch.this, BeatEmUp.class);
Use.putExtra("filepath",imagePath);
startActivity(Use);
}
});
Button bretake = (Button) findViewById(R.id.bretake);
bretake.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent Retake = new Intent(Punch.this, AndroidCamera.class);
startActivity(Retake);
}
});
String myRef = this.getIntent().getStringExtra("filepath");
File imgFile = new File(myRef);
Log.e(">>>", myRef);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imagepunch);
myImage.setImageBitmap(myBitmap);
}
}
}
BeatEmUp.java
String myRef = this.getIntent().getStringExtra("filepath");
File imgFile = new File(myRef);
Log.e(">>>", myRef);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imagepunch);
myImage.setImageBitmap(myBitmap);
Yes. You can pass that image
URIagain to nextActivity.You just need to store image path in class level variable in
Punch.javaclass, and when startingBeatEmUp Activity, put that Image path again in theIntentand get it inBeatEmUpEdit:
Take a class level
StringinPunch.javaand inside
onCreate()and when starting
BeatEmUpActivity