Запись во внутреннее хранилище Android Xamarin

323
23 ноября 2017, 00:50

Пишу пробное приложение, простой рекордер стрима со штатной камеры и запись в .mp4. Как можно организовать запись во внутреннее хранилище Android устройства. С внешней памятью (SD Card) нет проблем, там можно выставить манифест. Пишу все в VS 2017. Собственно код:

[Activity(Label = "videoFaceDetect", MainLauncher = true)]
public class MainActivity : Activity
{
    MediaRecorder recorder;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        //Установка основного экрана
        SetContentView(Resource.Layout.Main);
        var record = FindViewById<Button>(Resource.Id.Record);
        var stop = FindViewById<Button>(Resource.Id.Stop);
        var play = FindViewById<Button>(Resource.Id.Play);
        var video = FindViewById<VideoView>(Resource.Id.SampleVideoView);
        string path = Android.OS.Environment.DirectoryMovies  + "/test.mp4";
        record.Click += delegate 
        {
            video.StopPlayback();
            recorder = new MediaRecorder();
            recorder.SetVideoSource(VideoSource.Camera);
            recorder.SetAudioSource(AudioSource.Mic);
            recorder.SetOutputFormat(OutputFormat.Default);
            recorder.SetVideoEncoder(VideoEncoder.Default);
            recorder.SetAudioEncoder(AudioEncoder.Default);
            recorder.SetOutputFile(path);
            recorder.SetPreviewDisplay(video.Holder.Surface);
            recorder.Prepare(); // Вот в этом месте приложение выдает exeption;
            recorder.Start();
        };

        stop.Click += delegate 
        {
            if (recorder != null)
            {
                recorder.Stop();
                recorder.Release();
            }
        };
        play.Click += delegate 
        {
            var uri = Android.Net.Uri.Parse(path);
            video.SetVideoURI(uri);
            video.Start();
        };

    }
    protected override void OnDestroy()
    {
        base.OnDestroy();
        if (recorder != null)
        {
            recorder.Release();
            recorder.Dispose();
            recorder = null;
        }
    }
}

Камера при нажатие на кнопку "Запись" даже не стартует.

READ ALSO
Выбор элемента DataGridView

Выбор элемента DataGridView

Выбирается третий элемент в dataGridVie2, хотя нажимаю на любойКак сделать чтобы в dataGridView2

244
RegistryKey, c# не видит некоторые ключи

RegistryKey, c# не видит некоторые ключи

Здравствуйте, есть проблема с доступом к ключу, который создан через *reg файл

240
WinForms c# . Проложить путь к файлу

WinForms c# . Проложить путь к файлу

Как добавить в своей программе на c# WinForms searcher , при нажатии которого будет выскакивать проводник и нужно будет выбрать файл , после чего содержание...

258
Как сделать так, чтобы маршрутизация не обращала внимания на точку?

Как сделать так, чтобы маршрутизация не обращала внимания на точку?

Мне нужно сделать так, чтобы я типо обращаюсь к какому-то фалу в какой-то папке, прописал сначала такой маршрут:

219