Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用相机拍摄无SD卡的照片_Java_Android_Camera_Sd Card - Fatal编程技术网

Java 使用相机拍摄无SD卡的照片

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

在没有SD卡的情况下,我无法使用相机

当有SD卡时,使用相机很简单,例如

+其他例子太多了

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

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()
,但结果相同:null
bitmap

有没有人在没有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();

            }
        }
    }
}