У меня очень неприятная проблема. Я использую камеру Android для запуска видеокамеры и записи видео.Цель камеры для Android никогда не возвращается в приложение
Что я ожидаю: Когда я нажимаю стоп, я хочу вернуться к моей деятельности приложений через onActivityResult, чтобы сделать некоторые вещи, как дисплей большого пальца изображение записи видео и т.д.
Что происходит: Когда я нажимаю кнопку остановки, экран мигает, как будто возвращается в приложение, но затем просто продолжает показывать камеру. Я поместил журнал внутри onActivityResult, и он никогда не перезванивает сюда! Обратите внимание, что это не проблема, когда данные о намерениях == null. Это проблема, когда метод никогда не вызывается вообще. Когда я заглядываю в свой медиа-каталог, видеофайл на самом деле там, поэтому запись действительно состоялась и хранит там файл.
, что им делать: Я зову намерение камеры от нажатия кнопки внутри моей деятельности:
public class MainActivity extends Activity {
public void startVideo(){
//set the path
String fileName = "MyVid_" + new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) + ".mp4";
File externalFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES), fileName);
Uri videoUri = Uri.fromFile(externalFile)
//setup up the video intent
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);
takeVideoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, maxStorage); //set the max file size - variable calculated elsewhere
takeVideoIntent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, Configuration.ORIENTATION_LANDSCAPE); //set the camera orientation
takeVideoIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, CamcorderProfile.QUALITY_480P); //set the camera resolution
takeVideoIntent.putExtra(MediaStore.EXTRA_SHOW_ACTION_ICONS, true); //set the camera btns
//start the intent
if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takeVideoIntent, VIDEO_INTENT);
}
}
//then i have the onActivtyResult - this part is never called, regardless of whether data is null or not
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("***1 LOG onActivityResult - requestCode: ", String.valueOf(requestCode));
}
}
Мои права доступа следующим образом:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
и моя деятельность, которая запускает намерение объявляется как портретный вид в манифесте, хотя намерение камеры устанавливается как пейзаж в коде, как показано выше:
<activity
android:theme="@style/AppTheme"
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
</activity>
Я делаю что-то подобное для фотографий, которые работают как шарм. Этот код также отлично работает на эмуляторе, но при тестировании на моем устройстве (Galaxy S3) он дает такое поведение и только для видео. Я искал высоко и низко для решения, но не мог найти что-либо, любые советы, указатели или ссылки были бы очень благодарны !!
Я нашел решение этой проблемы, перейдите по ссылке: http://stackoverflow.com/a/36640559/3819836 –