Как получить доступ к микрофону в эмуляторе Xamarin - PullRequest
0 голосов
/ 06 февраля 2020

Возможно ли или в любом случае, что я могу получить доступ к микрофону и использовать его для проверки своего кода?

Я включил все это в расширенных элементах управления моего эмулятора для микрофона: enter image description here

У меня также есть эти разрешения в моем AndroidManifest. xml:


    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

Это код:


using System;
using System.ComponentModel;
using Plugin.AudioRecorder;
using Xamarin.Forms;

namespace AudioDemo
{

    [DesignTimeVisible(true)]
    public partial class MainPage : ContentPage
    {
        AudioRecorderService recorder;
        AudioPlayer player;

        public MainPage()
        {
            InitializeComponent();

            recorder = new AudioRecorderService
            {
                StopRecordingAfterTimeout = true,
                TotalAudioTimeout = TimeSpan.FromSeconds(15),
                AudioSilenceTimeout = TimeSpan.FromSeconds(2)
            };

            player = new AudioPlayer();
            player.FinishedPlaying += Finaliza_Reproducao;
        }

        async void Record_Clicked(object sender, EventArgs e)
        {
            try
            {
                if (!recorder.IsRecording) 
                {
                    recorder.StopRecordingOnSilence = TimeoutSwitch.IsToggled;

                    RecordButton.IsEnabled = false;
                    PlayButton.IsEnabled = false;

                    //Start recording
                    var audioRecordTask = await recorder.StartRecording();

                    RecordButton.Text = "Parar Gravação";
                    RecordButton.IsEnabled = true;

                    await audioRecordTask;

                    RecordButton.Text = "Record";
                    PlayButton.IsEnabled = true;
                }
                else 
                {
                    RecordButton.IsEnabled = false;

                    //stop recording ...
                    await recorder.StopRecording();

                    RecordButton.IsEnabled = true;
                }
            }
            catch (Exception ex)
            {
                //blow up the app!
                await DisplayAlert("Erro", ex.Message, "OK");
            }
        }

        async void Play_Clicked(object sender, EventArgs e)
        {
            try
            {
                var filePath = recorder.GetAudioFilePath();

                if (filePath != null)
                {
                    PlayButton.IsEnabled = false;
                    RecordButton.IsEnabled = false;

                    player.Play(filePath);
                }
            }
            catch (Exception ex)
            {
                //blow up the app!
                await DisplayAlert("Error", ex.Message, "OK");
            }
        }

        void Finaliza_Reproducao(object sender, EventArgs e)
        {
            PlayButton.IsEnabled = true;
            RecordButton.IsEnabled = true;
        }
    }
}

Этот код работает когда я использую телефон для его запуска, но когда я просто использую эмулятор (моего ноутбука), он не работает.

1 Ответ

1 голос
/ 06 февраля 2020

Невозможно записать звук в эмуляторе, потому что эмулятор android пока не поддерживает его. Этот код должен работать только на телефоне.

Примечание. Эмулятор Android не может записывать звук. Обязательно протестируйте свой код на реальном устройстве, которое может записывать.

Это официальный документ

https://developer.android.com/guide/topics/media/mediarecorder?hl=en

...