gpt4 book ai didi

Android携带相机图像到新 Activity

转载 作者:行者123 更新时间:2023-11-30 04:24:32 26 4
gpt4 key购买 nike

到目前为止,我的应用程序使用相机拍摄照片 AndroidCamera.java,然后保存图像并将其显示在新的 Activity Punch.java 中,效果很好.在此屏幕上有两个选项,使用图像或重新拍摄图像,如果单击按钮重新拍摄,它将返回到 AndroidCamera.java Activity ,如果单击使用,它将转到Activity BeatEmUp.java 这是我要再次显示图像的新 Activity。

我只是不知道要在 BeatEmUp.java Activity 中放入什么才能在这个新 Activity 中再次显示图像,您可以在下面的代码中看到我正在传递来自 的字符串AndroidCamera.javaPunch.java 但我认为我不能再从 Punch.javaBeatEmUp.java?

更新 Adil Soomro

BeatEmUp.java Activity 现在在点击 Use 按钮时强制关闭。

好的,下面的代码已经更新,我不得不更改 intent.putExtra("filepath",imagePath);
Use.putExtra("filepath",imagePath); 就像开始时的 Intent 一样,它给了我一个错误我还添加了 BeatEmUp.java因为我不确定这是否正确,所以我认为它与我用来在 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);

最佳答案

是的。您可以将该图像 URI 再次传递给下一个 Activity

您只需要将图像路径存储在 Punch.java 类的类级变量中,并在启动 BeatEmUp Activity 时,将该图像路径再次放入 Intent 并在 BeatEmUp

中获取

编辑:

Punch.java中取类级别String

String imagePath;

onCreate()

内部
imagePath = this.getIntent().getStringExtra("filepath");

并且在启动 BeatEmUp Activity 时

Intent Use = new Intent(Punch.this, BeatEmUp.class);
intent.putExtra("filepath",imagePath);
startActivity(Use);

关于Android携带相机图像到新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8725510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com