我正在将手机相机中的照片添加到片段中。我将文件路径包含在我希望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;相机的一点。
答案 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;
}