Android 从摄影机意图将图像设置为2图像视图
我有两个imageView,我想在其中设置来自摄影机的图像。当我希望有人能帮助启发我时,我有以下问题Android 从摄影机意图将图像设置为2图像视图,android,android-intent,android-camera-intent,Android,Android Intent,Android Camera Intent,我有两个imageView,我想在其中设置来自摄影机的图像。当我希望有人能帮助启发我时,我有以下问题 当我拍摄第一张应该设置为imageView1的照片时,它设置为imageView2。第一张照片应该设置为imageView1 当我拍摄第二张照片并将相机中的图像保存到imageView1时,我的应用程序崩溃。第二张照片应该设置为imageView2 我使用的代码如下 public void Camera (View view) { Intent intent = new
public void Camera (View view) {
Intent intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE);
file1 = Uri.fromFile(getOutputMediaFile());
intent.putExtra(MediaStore.EXTRA_OUTPUT, file1);
startActivityForResult(intent, 100);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent
data) {
if (requestCode == 100) {
if (resultCode == RESULT_OK && imageView1 == null) {
imageView1.setImageURI(file1);
} else {
imageView2.setImageURI(file1);
}
}
}
public void Camera (View view) {
Intent intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE);
if (file1 == null) {
file1 = Uri.fromFile(getOutputMediaFile());
intent.putExtra(MediaStore.EXTRA_OUTPUT, file1);
startActivityForResult(intent, 1);
} else {
file2 = Uri.fromFile(getOutputMediaFile());
intent.putExtra(MediaStore.EXTRA_OUTPUT, file2);
startActivityForResult(intent, 2);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
imageView1.setImageURI(file1);
}
} else {
imageView2.setImageURI(file2);
}
}
日志:
E/AndroidRuntime:致命异常:主
java.lang.OutOfMemoryError
在android.graphics.BitmapFactory.NativeDecodeseam(本机方法)
位于android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:623)
位于android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
位于android.graphics.drawable.drawable.createFromResourceStream(drawable.java:832)
位于android.graphics.drawable.drawable.createFromStream(drawable.java:783)
在android.widget.ImageView.resolveUri(ImageView.java:673)上
在android.widget.ImageView.setImageURI(ImageView.java:407)上
位于MainActivity.onActivityResult(MainActivity.java:117)
位于android.app.Activity.dispatchActivityResult(Activity.java:5563)
位于android.app.ActivityThread.deliverResults(ActivityThread.java:3514)
位于android.app.ActivityThread.handleSendResult(ActivityThread.java:3561)
在android.app.ActivityThread.access$1200(ActivityThread.java:168)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1377)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:5493)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1209)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
在dalvik.system.NativeStart.main(本机方法)
谢谢 我已经成功获得了我想要的结果,将这两幅图像设置为各自的ImageView。我的修订代码如下
public void Camera (View view) {
Intent intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE);
file1 = Uri.fromFile(getOutputMediaFile());
intent.putExtra(MediaStore.EXTRA_OUTPUT, file1);
startActivityForResult(intent, 100);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent
data) {
if (requestCode == 100) {
if (resultCode == RESULT_OK && imageView1 == null) {
imageView1.setImageURI(file1);
} else {
imageView2.setImageURI(file1);
}
}
}
public void Camera (View view) {
Intent intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE);
if (file1 == null) {
file1 = Uri.fromFile(getOutputMediaFile());
intent.putExtra(MediaStore.EXTRA_OUTPUT, file1);
startActivityForResult(intent, 1);
} else {
file2 = Uri.fromFile(getOutputMediaFile());
intent.putExtra(MediaStore.EXTRA_OUTPUT, file2);
startActivityForResult(intent, 2);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
imageView1.setImageURI(file1);
}
} else {
imageView2.setImageURI(file2);
}
}
但是,如果我拍摄第三张照片,它将设置为imageView2…需要纠正这一点
如果我启动另一个应用而不关闭此应用,当我返回到它时,图像将不再显示在ImageView上。如果(…imageView1==null){imageView1.setImageURI(file1);}发布日志。这是打字错误吗?它会以这种方式与NPE崩溃。但这不是你的logcat显示的错误。logcat补充道。Tks!嗨,罗布,不是打字错误。这是我的编码错误。Tks!如果(resultCode==RESULT_OK){imageView1.setImageURI(file1);,我将其更改为此。它现在确实将第一张照片设置为imageView1,但在保存第二张照片时应用程序崩溃。