我想使用Android手机摄像头点击图片,然后在另一个活动中使用它。我找不到任何确切的方法,所以我试图获取保存图片的路径,然后在其他活动中使用它。
private OnClickListener cameraBclicked = new OnClickListener() {
public void onClick(View v) {
Intent m_Intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(m_Intent, TAKE_PICTURE);
}
};
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
if ( requestCode == TAKE_PICTURE)
{
Uri selectedImage = data.getData();
Intent intent1 = new Intent(picsource.this,NewScreen.class);
intent1.putExtra("path", selectedImage);
startActivity(intent1);
}
现在,问题是uri出来是null。 请更正以上代码..
答案 0 :(得分:1)
要开始相机活动,您可以使用以下代码
Intent cameraIntent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
在对图像进行限制后,您将在onActivityResult方法中以位图格式获取捕获的图像。现在,当您获得位图时,在外部存储中写入位图,并将图像的路径传递给您想要传递的其他活动。从第二个活动中,您可以打开文件并获取图像。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray(); // convert camera photo to byte array
// save it in your external storage.
FileOutputStream fo = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/_camera.png"));
fo.write(byteArray);
fo.flush();
fo.close();
}
}
答案 1 :(得分:1)
我已经遇到过这个问题, 这是我的代码错误
Bitmap photo = (Bitmap) data.getData();// This code return null
通过修改代码
解决了我的问题Bitmap photo = (Bitmap) data.getExtras().get("data");