Tôi đã đọc rất nhiều câu hỏi liên quan đến vấn đề này. Một số tương tự với những gì tôi đang trải qua; Tôi đã thử các câu trả lời không thành công. Mã hoạt động trên HTC Android 4.2 và không hoạt động trên Nexus 7 Android 4.4. Tôi đã sửa đổi thư mục lưu trữ để hoạt động trên Android 4.4, vì vậy đây không phải là vấn đề.Máy ảnh Mục đích không quay lại gọi điện thoại Hoạt động
camera Mục đích không bao giờ trở lại nếu tôi sử dụng
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
và không trở lại nếu tôi sử dụng
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoFile);
nhưng nó không lưu các tập tin.
Đây là mã đầy đủ. Gọi mục đích
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(manager) != null)
{
try
{
final File photoFile = createImageFile();
if (photoFile != null)
{
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
//takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoFile);
startActivityForResult(takePictureIntent, 1);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
Tên tập tin
private File createImageFile() throws IOException
{
if (mStorageDirectory == null)
{
createInitialStorageDirectory();
setupFolders();
mScrollList.notifyDataSetInvalidated();
}
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "slide_" + timeStamp;
File storageDir = new File(mStorageDirectory);
File image = File.createTempFile(imageFileName, ".jpg", storageDir);
// image.setWritable(true, false);
// Save a path for use with ACTION_VIEW intents
mCurrentPhotoPath = image.getAbsolutePath();
return image;
}
Các hàm callback
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == -1)
{
}
}
Các thư mục gốc cộng với lưu thư mục
static String mBasePath = "/slides/";
private String getRootDirectory()
{
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state))
{
if (Build.VERSION.SDK_INT >= 19)
return mView.getContext().getFilesDir() + mBasePath;
else
return Environment.getExternalStorageDirectory() + "/Android/data/com.hdms.manager" + mBasePath;
//return Environment.getExternalStorageDirectory() + mBasePath;
}
return mBasePath;
}
Bất kỳ suy nghĩ w ould được đánh giá cao.
nhờ, mã này làm việc :) – chathura