Как воспроизвести аудио в формах xamarin? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь воспроизвести аудиофайл, который хранится локально.Я использую Xam.Plugin.SimpleAudioPlayer для воспроизведения звука.Для UWP и Android добавили файлы в папку «Ресурсы», установив для параметра «Действие сборки» соответственно «Содержимое» и «Актив Android».

Мой код:

private void PlayAudio()
    {
        try
        {
            var stream = GetStreamFromFile("audio.mp3");
            var audio = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
            audio.Load(stream);
            audio.Play();
        }
        catch (Exception e)
        {
            Debug.WriteLine("exception:>>" + e);
        }
    }

    Stream GetStreamFromFile(string filename)
    {
        var assembly = typeof(App).GetTypeInfo().Assembly;

        var stream = assembly.GetManifestResourceStream("AudioPlay." + filename);

        return stream;
    }

Но, получив исключение в Android и UWP, не зарегистрировался в IOS.

Исключение Android:

[0:] исключение: >> System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.в плагине.PlayAudio () [0x00014] в F: \ AudioPlay \ AudioPlay \ AudioPlay \ MainPage.xaml.cs: 63

Я использую файл .mp3.Я что-то упустил в этой реализации?Пожалуйста, помогите мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Вам просто нужно напрямую поместить mp3-файл в общий проект.И вызываю метод

var stream = GetStreamFromFile("xxx.mp3");
var audio = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
audio.Load(stream );
audio.Play();
Stream GetStreamFromFile(string filename)
{
   var assembly = typeof(App).GetTypeInfo().Assembly;

   var stream = assembly.GetManifestResourceStream("yourprojectname." + filename);

   return stream;
}

Обновление

Я проверяю вашу демонстрацию, и если вы хотите воспроизвести mp3-файл в вашем проекте.Вам необходимо установить действие по сборке mp3 как Встроенный ресурс

Щелкните правой кнопкой мыши файл mp3 -> Свойство

enter image description here

0 голосов
/ 27 сентября 2019

попробуйте это для xamarin.android

var u = Android.Net.Uri.Parse("filepath");
MediaPlayer _player = MediaPlayer.Create(this, u);
_player.Start();

или используйте плагин XamarinMediaManager

https://github.com/martijn00/XamarinMediaManager

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...