gpt4 book ai didi

java - 使用相机 Intent 在没有 sd 卡的情况下拍照

转载 作者:行者123 更新时间:2023-11-29 21:48:45 25 4
gpt4 key购买 nike

当没有 SD 卡时,我无法使用相机。

当有sdcard时,使用相机就很简单了,例如

http://www.vogella.com/articles/AndroidCamera/article.html + 大量其他示例。

但是,我需要让没有 SD 卡的设备(例如 Sony Xperia 系列)可以使用我的应用程序。我尝试修改代码,以便使用内部存储(我认为) :

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(getDir("myDirec", Context.MODE_WORLD_WRITEABLE), "tmp_photo_" + String.valueOf(System.currentTimeMillis()) + ".jpg");
file.createNewFile();
mImageCaptureUri = Uri.fromFile(file);

intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
intent.putExtra("return-data", true);

然而,根据结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intentReturn) {
if (resultCode != RESULT_OK)
return;

String path = mImageCaptureUri.getPath();
Bitmap bitmap = BitmapFactory.decodeFile(path);

...

位图为空。

这让我相信存在一些权限问题......也许?

我已经尝试了一些其他的内部存储选项,http://developer.android.com/guide/topics/data/data-storage.html#filesInternal例如getFilesDir() 但结果相同:null bitmap

有没有人在没有 sdcard 的情况下成功使用相机?

最佳答案

试试这个。它有效..

  private Uri imageUri;

public void onClick(View arg0) {
switch (arg0.getId()) {
case R.id.btnImageCapture:

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File dir = context.getDir("directory", Context.MODE_PRIVATE);
File photo = new File(dir, "Pic.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photo));
imageUri = Uri.fromFile(photo);
startActivityForResult(intent, OPEN_CAMERA);
break;
}
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case OPEN_CAMERA:
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = imageUri;
getContentResolver().notifyChange(selectedImage, null);
ImageView imageView = (ImageView) findViewById(R.id.ImageView);
ContentResolver cr = getContentResolver();
Bitmap bitmap;
try {
bitmap = android.provider.MediaStore.Images.Media
.getBitmap(cr, selectedImage);

imageView.setImageBitmap(bitmap);
Toast.makeText(this, selectedImage.toString(),
Toast.LENGTH_LONG).show();

} catch (Exception e) {
Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT)
.show();

}
}
}
}

关于java - 使用相机 Intent 在没有 sd 卡的情况下拍照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15019879/

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