Xamarin.Android 10 Q, как скопировать / получить доступ к пользовательскому звуку в / из MediaStore - PullRequest
0 голосов
/ 13 октября 2019

Я не знаю, нахожусь ли я на правильном пути (пожалуйста, исправьте меня, если я нет), и я не уверен, как использовать MediaStore на Android, но моя цель - сохранить звук в MediaStore, а затем использовать этот звук для pushуведомления. Я не нахожу документацию для Android Q.

Мне нужна помощь при использовании MediaStore. Читая документацию для Android, я понимаю, что не могу просто сохранить звук во внешнем хранилище, как раньше (и это сработало), а затем установить этот звук для своего канала push-уведомлений. Теперь доступ к внешнему хранилищу ограничен. Я понимаю, что следует использовать MediaStore вместо медиа-файлов. Я пытаюсь сохранить звук в MediaStore.

Вопросы:

  1. Как скопировать звук в хранилище мультимедиа, поскольку мой метод, приведенный ниже, не завершен.
  2. Как получить / получить доступ к этому звуку из хранилища данных, чтобы установить его в качестве звука по умолчанию для канала push-уведомлений. Доступ по-прежнему осуществляется через Uri или другим способом?
  3. Как настроитьэтот wav-звук, который я скопировал в Media Store в качестве звука по умолчанию для моего канала push-уведомлений?

Пока это мой код:

Param filePath - это путь к файлу вкаталог AppData Xamarin Essentials и выглядит следующим образом:

/ data / user / 0 / com.company.appname / files / customalert.wav

В идеале я хочу вернутьсяUri файла после вставки в MediaStore, если это возможно, чтобы установить его для канала уведомлений, но предложить другое, если это не способ сделать это.

public Android.Net.Uri InsertCustomSoundInMediaStore(string filePath)
        {
            ContentValues values = new ContentValues();
            ContentResolver contentResolver = CrossCurrentActivity.Current.AppContext.ContentResolver;

            var appName = AppInfo.Name;

            values.Put(MediaStore.MediaColumns.Title, "customalert");
            values.Put(MediaStore.MediaColumns.MimeType, "audio/wav");
            values.Put(MediaStore.MediaColumns.Size, GetDuration(filePath));
            values.Put(MediaStore.Audio.Media.InterfaceConsts.Artist, appName);
            values.Put(MediaStore.Audio.Media.InterfaceConsts.IsRingtone, true);
            values.Put(MediaStore.Audio.Media.InterfaceConsts.IsNotification, true);
            values.Put(MediaStore.Audio.Media.InterfaceConsts.IsAlarm, true);
            values.Put(MediaStore.Audio.Media.InterfaceConsts.IsMusic, false);

            Android.Net.Uri newUri = contentResolver.Insert(MediaStore.Audio.Media.ExternalContentUri, values);   

            try
            {
                   // copy file from cache to OS (MediaStore)?
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

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