Как использовать MediaPlayer, который воспроизводит музыку c, хранящуюся в папке, найденной в активе - PullRequest
0 голосов
/ 18 июня 2020

Я создаю приложение android в студии android.

Я намерен создать функцию для воспроизведения разных песен в зависимости от строкового аргумента.

 MediaPlayer mysound;
public void play(String song){
mysound = Mediaplayer.create(this, "../../../../asset/soundlib/" + song);
mysound.play();
}

I попробовал R.assets.song. Это просто не работает.

Есть ли способ присвоить песне имя C .mp3? В нем говорится, что они не должны быть заглавными, и все аргументы в основном представляют собой аккорды вроде C A F ...

Спасибо

w

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Для android java используйте

void test_mp(String file_name)
{
    MediaPlayer mediaPlayer = null;


            mediaPlayer = new MediaPlayer();
            try {
                AssetFileDescriptor afd = act.getAssets().openFd(file_name);
                mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                afd.close();
                mediaPlayer.prepare();
            } catch (final Exception e) {
                e.printStackTrace();
            }
            mediaPlayer.start();
        }

Итак, для вашего случая вы можете называть его как test_mp("SoundLib/A.mp3");

0 голосов
/ 18 июня 2020

Попробуйте следующий код для песни с активами для воспроизведения:

 fun playSound(context: Context, assetsFileName: String?) {
        try {
            val mediaPlayer = MediaPlayer()
            val descriptor: AssetFileDescriptor = context.getAssets().openFd(assetsFileName!!)
            mediaPlayer.setDataSource(
                descriptor.getFileDescriptor(),
                descriptor.getStartOffset(),
                descriptor.getLength()
            )
            descriptor.close()
            mediaPlayer.prepare()
            mediaPlayer.isLooping = false
            mediaPlayer.start()
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

Спасибо

...