Xamarin SimpleAudioPlayer возвращает System.NullReferenceException - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь воспроизвести файл .wav на Xamarin.

Файл найден, но с помощью этого кода я получаю приведенное ниже исключение. Как это возможно, поскольку он находит файл emailalert.wav и должен получить поток?
System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.

Случается на этой линии:

audio.Load(stream);

        public void Play()
        {
            String path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            String filename2 = "Folder1/emailalert.wav"; String filenameB = Path.Combine(path, filename2);
          
            if (File.Exists(filenameB))
            {
                var stream = GetStreamFromFile(filenameB);
                var audio = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
                audio.Load(stream);
                audio.Play();
            }
        }

1 Ответ

0 голосов
/ 16 февраля 2020

Я нашел решение встроить файл прямо в папку ресурсов и затем использовать этот код. Я также в свойствах .wav-файла выбрал «Build Action» и «Embedded Resource».

Теперь этот код проигрывает файл красиво:

        public void Play()
        {
            System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
            string[] resources = assembly.GetManifestResourceNames();
            foreach (string resource in resources)
            {
                if (resource.Contains("emailalert.wav"))
                {
                    Stream stream = assembly.GetManifestResourceStream(resource);
                    if (stream != null)
                    {
                        var audio = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
                        audio.Load(stream);
                        audio.Play(); break;
                    }
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...