Первое решение.
Код: Выделить всё
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_RESULT_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case CAMERA_RESULT_CODE:
if (resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
String FilePath = getPath(selectedImageUri);
}
break;
}
}
Код: Выделить всё
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
if(column_index!=-1){
return cursor.getString(column_index);
}
else
return uri.getPath();
}
}
Второе решение. Добавляем к первому параметр с указанием пути к сохраняемому файлу.
Код: Выделить всё
File storageDir = new File(Environment.getExternalStorageDirectory()+ "/Directory/");
if (!storageDir.exists()) {
storageDir.mkdirs();
}
File image = new File(storageDir, "image.jpg");
mCurrentPhotoPath = image.getAbsolutePath();
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
startActivityForResult(cameraIntent, CAMERA_RESULT_CODE);
Данное решение прекрасно работает на планшетах, но на телефонах получаем RuntimeException и поэтому onActivityResult не получает код Result_Ok. Файл при этом не всегда создается по указанному пути.
В общем вопрос заключается в том, чтобы найти решение адекватно работающее на телефонах и планшетах)
P.S. http://mobile.tutsplus.com/tutorials/an ... he-camera/
http://developer.android.com/training/c ... asics.html