Android, Xamarin: получите mp3 из определенного места на SD-карте и конвертируйте в URI для воспроизведения - PullRequest
0 голосов
/ 04 октября 2018

В настоящее время я работаю над небольшим приложением, которое воспроизводит музыку.Чтобы протестировать мое приложение, я хочу воспроизвести mp3, который хранится на моей SD-карте в:

SD-Card/Music/MYFILE.mp3

Это должно соответствовать:

private void InitPlayer() {
    mediaPlayer = MediaPlayer.Create(this, "URI TO MY FILE");
}

Так что мне нужно получитьссылка на мой файл.Я не нашел способ добраться до него.Кто-нибудь может мне помочь?

Спасибо :)

1 Ответ

0 голосов
/ 04 октября 2018

Я нашел сообщение, содержащее следующий метод на форумах Xamarin.

https://forums.xamarin.com/discussion/103478/how-to-get-path-to-external-sd-card

public static string GetBaseFolderPath( bool getSDPath = false )
{
   string baseFolderPath = "";

   try
   {
      Context context = Application.Context;
      Java.IO.File[] dirs = context.GetExternalFilesDirs( null );

      foreach ( Java.IO.File folder in dirs )
      {
        bool IsRemovable = Android.OS.Environment.InvokeIsExternalStorageRemovable( folder );
        bool IsEmulated = Android.OS.Environment.InvokeIsExternalStorageEmulated( folder );

        if ( getSDPath ? IsRemovable && !IsEmulated : !IsRemovable && IsEmulated )
            baseFolderPath = folder.Path;
      }
   }
   catch ( Exception ex )
   {
      Console.WriteLine( "GetBaseFolderPath caused the follwing exception: {0}", ex );
   }

   return baseFolderPath;
}

Когда будет получено basefolderPath, вы можете получить доступ к своей музыкальной папке и файлу, добавив это к адресу (basefolderPath-string).

Например,

baseFolderPath += "/YOUR_MUSIC_FOLDER/YOUR_MUSIC_FILE"

ДОБАВЛЕНИЕ В ВАШ ВТОРОЙ ВОПРОС

Чтобы попасть в одну папку хранения, используйте следующий метод:

Android.OS.Environment.getExternalStorageDirectory()

Перед использованием этого метода вам может понадобиться добавить следующее разрешение в манифест

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