Saya memiliki kode berikut:
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
Masalahnya adalah, ketika saya menjalankan kode ini, ia mulai memutar semua file audio di direktori aset, dalam urutan abjad, bukan hanya memutar file audio yang saya minta. Apa yang saya lakukan salah? Apakah ada cara yang lebih baik untuk memutar file audio dari direktori aset?
Pertanyaan tindak lanjut: Apakah ada perbedaan antara menyimpan file audio di direktori aset dan menyimpannya di direktori res / raw? Selain fakta bahwa mereka tidak mendapatkan id jika berada di direktori aset. Jika saya memindahkan file audio ke folder res / raw maka saya memiliki masalah dengan menggunakan kembali MediaPlayer
s karena tidak ada parameter id untuk setDataSource()
. Saya tidak dapat menemukan pedoman yang baik untuk menangani masalah seperti ini.
sumber
Fungsi ini akan bekerja dengan baik :)
sumber
MediaPlayer m
pasti adastatic
atau punya referensi lain . Jika Anda memilikim
fungsi tanpa referensi apa pun,GC
akan "mengumpulkan" ituBerikut versi statis saya:
sumber
Perbaiki fungsi di atas untuk putar dan jeda
sumber
mulai suara
metode
sumber
ini bekerja untuk saya:
Dalam aktivitas utama, saat membuat:
cara menggunakan dalam kode (saat klik tombol):
sumber