Java 使用相机拍摄无SD卡的照片
在没有SD卡的情况下,我无法使用相机 当有SD卡时,使用相机很简单,例如 +其他例子太多了 但是,我需要使我的应用程序可用于没有SD卡的设备(例如,索尼Xperia系列)。我已经尝试修改代码,以便使用内部存储(我认为):Java 使用相机拍摄无SD卡的照片,java,android,camera,sd-card,Java,Android,Camera,Sd Card,在没有SD卡的情况下,我无法使用相机 当有SD卡时,使用相机很简单,例如 +其他例子太多了 但是,我需要使我的应用程序可用于没有SD卡的设备(例如,索尼Xperia系列)。我已经尝试修改代码,以便使用内部存储(我认为): Intent Intent=新意图(MediaStore.ACTION\u IMAGE\u CAPTURE); File File=新文件(getDir(“myDirec”,Context.MODE_WORLD_WRITEABLE),“tmp_photo_”+String.va
Intent Intent=新意图(MediaStore.ACTION\u IMAGE\u CAPTURE);
File File=新文件(getDir(“myDirec”,Context.MODE_WORLD_WRITEABLE),“tmp_photo_”+String.valueOf(System.currentTimeMillis())+”.jpg);
createNewFile();
mImageCaptureUri=Uri.fromFile(文件);
intent.putExtra(android.provider.MediaStore.EXTRA_输出,mImageCaptureUri);
intent.putExtra(“返回数据”,true);
然而,结果是:
@覆盖
ActivityResult上受保护的void(int-requestCode、int-resultCode、Intent-intentReturn){
if(resultCode!=结果\u确定)
返回;
字符串路径=mImageCaptureUri.getPath();
位图位图=BitmapFactory.decodeFile(路径);
...
位图
为空
这让我相信有一些权限问题…也许
我尝试了其他一些内部存储选项,例如getFilesDir()
,但结果相同:nullbitmap
有没有人在没有SD卡的情况下成功地使用过相机?试试这个。它很管用
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();
}
}
}
}