我正在从设备相机捕捉图像并通过Uri将其保存到我的外部存储器中,并且我将该Uri传递给下一个活动以便在那里显示。我能够成功地将Uri传递给下一个活动,但我无法将其设置为imageview。我带头去解决这个问题,参考几乎所有的节奏,但我无法解决这个问题。请帮助我。 这是我的相机活动代码
package kumar.anish.sunset_logistics;
public class underConstruction extends Activity {
ImageView image;
Uri ak;
File photofile;
// ArrayList arrayList1;
File imageStorageFolder;
static final int CAPTURE_IMAGE_THUMBNAIL_ACTIVITY_REQUEST_CODE = 1888;
public static final int CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE = 1777;
String TAG="Log";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_under_construction);
image=(ImageView)findViewById(R.id.Imc);
File photostorage = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
photofile = new File(photostorage, (System.currentTimeMillis()) + ".jpg");
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //intent to start camera
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photofile));
startActivityForResult(i, CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
//Check that request code matches ours:
if (requestCode == CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE)
{
saving();
Intent confirmBMP = new Intent(this,ImagePreview.class);
Log.e("my dir pass", ak.toString());
confirmBMP.setData(ak);
startActivity(confirmBMP);
}
}
public void saving()
{
String root = Environment.getExternalStorageDirectory().toString();
File newDir = new File(root + "/Anish Roger");
newDir.mkdirs();
Random gen = new Random();
int n = 10000;
n = gen.nextInt(n);
// String fotoname = "Photo-"+ n +".jpg";
String fotoname = "Photo.jpg";
File file = new File (newDir, fotoname);
if (file.exists ()) file.delete ();
ak=Uri.fromFile(file);
Log.e("my dir", ak.toString());
}
}
这是我下一次尝试在imageview中设置捕获图像的活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_preview);
imageView=(ImageView)findViewById(R.id.IMcam);
Intent intent = getIntent();
Uri uri = getIntent().getData();
Log.e("Uri in ImagePr",uri.toString());
imageView.setImageURI(uri);
}
请帮帮我。
答案 0 :(得分:0)
在“保存”方法中,您似乎没有在文件中写入任何内容(事实上,如果存在,则将其删除)。
下一个活动可能是获取一个URI,该URI指的是一个不存在的文件,因此调用imageView.setImageURI(uri)将无效。
您可能希望将相机应用程序捕获的文件复制到“ak”URI指向“保存”方法中的文件中。
查看FileInputStream和FileOutputStream类,或使用this answer中的代码复制文件。