将文件路径添加到MediaStore.ACTION_IMAGE_CAPTURE意图时遇到问题

时间:2014-05-06 04:09:31

标签: android camera

我正在将手机相机中的照片添加到片段中。我将文件路径包含在我希望pic保存在相机意图(MediaStore.ACTION_IMAGE_CAPTURE)中的位置。

我的问题是,在启动相机并拍摄照片后,我无法返回到我的应用程序。屏幕停留在用户可以选择接受图片或拍摄另一张照片的部分。手机没有挂起或崩溃,我可以通过按下后退按钮返回我的应用程序,但是当我回到应用程序时,它没有图片。

我希望我的问题清楚,如果不让我知道,我会尽力解释。我附上(我认为)相关的代码。让我知道你是否需要再看到代码。

启动相机意图:

void takePic()
{
  if(isExternalStorageWritable() && isExternalStorageReadable()) 
  {
      Log.w("Rakshak", "in the take pic");

      File file = getPicStoragePath();

      Uri uriSavedImage=Uri.fromFile(file);

      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
      intent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
      startActivityForResult(intent, CAMERA_IMAGE_ACTIVITY_REQUEST_CODE);
  }
 }

public File getPicStoragePath() {

     Log.w("Rakshak", "in the get pic file");
     File root = android.os.Environment.getExternalStorageDirectory();
     File dir = new File (root.getAbsolutePath() + File.separator +"YAN");
     if(!dir.exists())
         dir.mkdirs();
     File file = new File(dir,getPicName());
     return file;
    }

 public String getPicName()
 {
     Log.w("Rakshak", "in the get pic name");

     if(title.getText().toString().trim().length() == 0)
     {
         Log.w("Rakshak", "no title");
         Calendar cal=Calendar.getInstance();//get an instance of the calendar 
         return String.format("%1$te %1$tB %1$tY,%1$tI:%1$tM:%1$tS %1$Tp",cal);// get the data/time when the note was created
     }
     else 
     {
         return title.getText().toString().trim();
     }   
 }

我在清单中有这些权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

来自onActivityResult的相关位:

case CAMERA_IMAGE_ACTIVITY_REQUEST_CODE:
              Log.w("Rakshak", "in the camera case");
             myBitmap = data.getExtras().getParcelable("data");                      
             photo.setVisibility(View.VISIBLE);
             photo.setImageBitmap(myBitmap);
             update_pic = true;
             return;

LogCat中没有错误消息。我在那里找不到任何注意事项。

如果我没有为相机意图添加文件路径,我就可以将图片插入到图像视图中。只有当我添加文件路径时才会停留在&#34;接受图片&#34;相机的一点。

1 个答案:

答案 0 :(得分:0)

您的getPicStoragePath()可能是个问题。尝试这样的事情:

private File createImageFile() throws IOException {
    // Create an image file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "JPEG_" + timeStamp + "_";
    File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);

    File image = File.createTempFile(
            imageFileName,  /* prefix */
            ".jpg",         /* suffix */
            storageDir      /* directory */
    );

    // Save a file: path for use with ACTION_VIEW intents
    mCurrentPhotoPath = image.getAbsolutePath();
    return image;
}