PDA

View Full Version : گرفتن id فایل صوتی به صورت دینامیک جهت پخش کردن



rezano
دوشنبه 15 تیر 1394, 22:43 عصر
با سلام

چطور می تونم id یک فایل صوتی رو با استفاده از نام فایل بگیرم؟

به کد زیر توجه کنید:

MediaPlayer player = MediaPlayer.create(getApplicationContext(), R.raw.mymusic);
player.start();


کد بالا فایل mymusic رو پخش میکنه
من می خوام توسط یک EditText نام فایل رو از کابر بگیرم و اون فایل رو اجرا کنم.
حالا چطور میشه id یک فایل که فقط نامش رو داریم بدست بیاریم؟

و سوال دوم اینکه توی کد بالا حتما باید mymusic توی پوشه raw باشه و اگر توی یه پوشه در زیرشاخه raw باشه شناسایی نمیشه.
آیا حتما باید همه فایل های صوتی توی شاخه اصلی در raw باشن یا میشه اونا رو درون raw، پوشه بندی کرد؟

#root#
دوشنبه 15 تیر 1394, 23:18 عصر
int id = getResources().getIdentifier("mymusic", "raw", getPackageName());

امکان پوشه بندی تا جایی که اطلاع دارم وجود نداره (بجز در پوشه assets)

rezano
دوشنبه 15 تیر 1394, 23:49 عصر
متاسفانه این دستور id رو برای من برنمی گردونه و پیغام خطای زیر رو میده



07-07 00:31:39.148 31131-31131/rezano.com.test020 W/ResourceType﹕ No package identifier when getting value for resource number 0x00000000
07-07 00:31:39.150 31131-31131/rezano.com.test020 W/System.err﹕ android.content.res.Resources$NotFoundException: Resource ID #0x0


اینم کد برنامه

try {
int id1 = getResources().getIdentifier(myText_txt.getText(). toString().trim(), "raw", getPackageName());
MediaPlayer player = MediaPlayer.create(getApplicationContext(), id1);
if(!player.isPlaying()) {
player.start();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}

rezano
دوشنبه 15 تیر 1394, 23:52 عصر
آقا درست شد ممنون :قلب:
با تابع .toLowerCase() حروف رو کوچیک کردم و مشکلم حل شد.