从捕获中获取图像,并使用android中的另一个活动在另一个版面中显示图像
我想通过单击第一个活动中的“捕获”按钮显示捕获后的图像,并使用第二个活动在第二个活动(布局)中显示图像 第一个活动从捕获中获取图像,并使用android中的另一个活动在另一个版面中显示图像,android,android-camera,Android,Android Camera,我想通过单击第一个活动中的“捕获”按钮显示捕获后的图像,并使用第二个活动在第二个活动(布局)中显示图像 第一个活动 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); Button take_photo = (Button) findViewById(R.id.btn_c
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Button take_photo = (Button) findViewById(R.id.btn_capture);
take_photo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(i);
}
});
}
首先布局活动
> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/btn_capture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="21dp"
android:text="Capture" />
</RelativeLayout>
活动秒
> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/view_photo"
android:layout_width="260dp"
android:layout_height="374dp" />
</LinearLayout>
>
获取存储的映像的路径,并将其作为额外的使用意图传递给onActivityResult()中的其他活动。
希望这能对你有所帮助
public void onClick(View v)
{
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),
"image" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
try
{
startActivityForResult(intent, PICK_FROM_CAMERA);
}
catch (ActivityNotFoundException e)
{
e.printStackTrace();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode != RESULT_OK) return;
switch (requestCode)
{
case PICK_FROM_CAMERA:
Bitmap photo = null;
Bundle extras = data.getExtras();
if (extras != null)
{
photo = extras.getParcelable("data");
}
Intent i = new Intent(this,SecondActivity.class);
i.putExtra("image", photo);
startActivity(i);
break;
}
在第二项活动中:
bMap = getIntent().getParcelableExtra("image");
mImageView.setImageBitmap(bMap);
使用startActivityForResult()代替startActivity()
下一步在下一个活动中尝试使用此
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//intialize the image view
Bitmap bitmap = getIntent().getExtras().getParcelable("name");
//set the image here.
}
希望这可以帮助您您可以使用以下代码来解决这些问题: 您的第一项活动:
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Button take_photo = (Button) findViewById(R.id.btn_capture);
take_photo.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
// create Intent to take a picture and return control to the calling application
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE)
{
Bitmap imageData = null;
if (resultCode == RESULT_OK)
{
imageData = (Bitmap) data.getExtras().get("data");
Intent i = new Intent(this, SecondActivity.class);
i.putExtra("name", imageData );
startActivity(i);
}
else if (resultCode == RESULT_CANCELED)
{
// User cancelled the image capture
}
else
{
// Image capture failed, advise user
}
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bitmap bitmap = getIntent().getExtras().getParcelable("name");
ImageView view = (ImageView) findViewById(R.id.view_photo);
view.setImageBitmap(bitmap);
}
第二项活动:
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Button take_photo = (Button) findViewById(R.id.btn_capture);
take_photo.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
// create Intent to take a picture and return control to the calling application
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE)
{
Bitmap imageData = null;
if (resultCode == RESULT_OK)
{
imageData = (Bitmap) data.getExtras().get("data");
Intent i = new Intent(this, SecondActivity.class);
i.putExtra("name", imageData );
startActivity(i);
}
else if (resultCode == RESULT_CANCELED)
{
// User cancelled the image capture
}
else
{
// Image capture failed, advise user
}
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bitmap bitmap = getIntent().getExtras().getParcelable("name");
ImageView view = (ImageView) findViewById(R.id.view_photo);
view.setImageBitmap(bitmap);
}
并在Manifest.xml文件中使用以下权限:
<uses-feature android:name="android.hardware.camera" />
我希望这能在我使用的menifest中很好地工作,阅读这篇文章哦,先生,我不知道如何接受,因为我只知道如何完整地询问我上面的代码?两周前我试图找到解决办法,但我做不到。你能完成这个项目吗?非常感谢您找到了我们建议的相同解决方案吗?哦,现在已经完成了,我使用@Febi M Felix编码。提前谢谢,很抱歉给你添麻烦,你走得更近了,呃。。。在我捕获后,它不会保存到我的SD卡中。是的,三星Galaxy Tab 2 10.1和使用android 4.0.3的仿真器它不知道这个摄像头图片请求,但我尝试了这个“私人静态最终整型摄像头图片请求=0;”在第二个活动“view.setImageBitmap(位图);”中它打开相机并在拍摄后停留在第一个活动中,在第二个活动中不显示图像您是否使用startActivityForResult(意图、相机图片请求);在第一个activity.private final int CAMERA_PIC_REQUEST=1;够了。我们不需要使用static.use startActivityforResult(i,somerequestcode)代替startActivity(i);当我们调用startActivityforresult()时,相机应用程序将启动并转到onactivityforresult()。我使用start public void onClick(视图v){Intent I=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);startActivityforresult(I,相机图片_请求);}但在捕获之后。应用程序说,令人难忘的是,摄像头已停止。请在清单文件中声明新活动并再次检查。但它无法保存到我的SD卡。你能回答这个问题吗