Камера Motorola Android 2.2 игнорирует параметр EXTRA_OUTPUT

Я программно открываю камеру для видео. Я говорю, что камера помещает видеофайл в указанное место, используя следующий код:

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); File out = new File("/sdcard/camera.mp4"); Uri uri = Uri.fromFile(out); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(intent, GlobalUtility.CAMERA_VIDEO); 

Он хорошо работает на телефоне HTC. Но на мой moto defy он просто игнорирует параметр MediaStore.EXTRA_OUTPUT и помещает видео в место по умолчанию. Поэтому я использую этот код в функции onActivityResult () для решения проблемы:

 private String getRealPathFromURI(Uri contentUri) { String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(contentUri, proj, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } String realPath; try { File file = new File("/sdcard/camera.mp4"); if (!file.exists()) { Uri videoUri = data.getData(); realPath = getRealPathFromURI(videoUri); } } catch (Exception ex) { Uri videoUri = data.getData(); realPath = getRealPathFromURI(videoUri); } 

Надеюсь, это поможет некоторым другим.

Просто потому, что /sdcard/ является каталогом sdcard на одном телефоне, а одна сборка Android не означает, что она останется неизменной.

Вы хотите использовать Environment.getExternalStorageDirectory() как предлагает комментарий Франкенштейна. Это всегда будет работать, чтобы получить каталог SD-карты.

Вы также захотите проверить, что SD-карта в настоящее время смонтирована, поскольку телефон может находиться в режиме USB-хранения.

Попробуй что-нибудь вроде …

 if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ Log.d(TAG, "No SDCARD"); } else { File out = new File(Environment.getExternalStorageDirectory()+File.separator+"camera.mp4"); } 

Я сделал это и до сих пор не нашел никакой ошибки. Попробуйте это у вас «moto defy», чтобы я мог узнать реальность.

Чтобы называть намерение:

 Intent intent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE); startActivityForResult(intent,2323); 

В действии по результату:

 Uri contentUri = data.getData(); String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(contentUri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); String tmppath = cursor.getString(column_index); videoView.setVideoPath(path); 
Intereting Posts