بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مدیریت فایل های صوتی در raw و پخش فایل متناسب با دکمه ی کلیک شده؟
تعداد زیادی فایل صوتی دارم که میخوام داخل پوشه raw بریزم و (مثلا 20 تا)
بنا به ضرورت، مجبورم که به تعداد فایلها دکمه ی play بزارم یعنی هر فایل صوتی یک دکمه play مربوط به خودش رو توی صفحه ی برنامه داره که با کلیک شدن پخش میشه ،
خب یه راه بهینه میخوام که بفهمم کدوم دکمه پلی شده و فایل مربوطه رو پخش کنم؟
0
0
جواب استفاده از یه متغییر بایت هست ، با یه دستور سوئیچ ، خواستی بگو سورس بدم ، مثلا دکمه اول مقدار بشه 1 ، تو سوئیج اگه 1 بود ، فایل 1 رو بده به مدیا پلیر ! (12 سال پیش)
0
0
منم اینو لازم دارم لطفا برام بفرستید (12 سال پیش)
0
0
یعنی ۲۰ تا دستور case بزارم ؟ اگر ۱۰۰ فایل بود چی؟ میخوام که یه روش بهینه و ساده تری باشه که نخوام هی شرط بزارم. مثلا برای تصاویر درون drawable یک متد هست به اسم get identifier که با یک حلقه میشه id تمام موارد رو گرفت و به راحتی با یک ارایه استفاده کرد همچین چیزی میخوام! (12 سال پیش)
0
0
الان با سورسی که نوشتم ، میتونید راحت تر کار کنید ، مثلا میتونید ID هر عنصر رو با یک حلقه در Tag ذخیره کنید و در همون حلقه بگید ، موقه کلیک بره به PlaySound ، اما در کل ، وقتی برنامه نویس توانایی یا حس و حال (!) پیاده کردن یه چیز عمری رو نداشته باشه ، بله ، شونصدتا شرط هم باشه باید چک بشه (12 سال پیش)
0
0
با توجه به توضیحات بالا، همین کد توی ذهنم بود منتهی فایلهای توی raw اگر زیاد باشه مثلا 100 تا آیا مثل getIdentifier که id تصاویر رو میگرفتیم متدی هست ؟ (12 سال پیش)
0
0
پائین جواب میدم (12 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
مجتبی یگانه
12 سال پیش
+5
0
بفرمائید ! ، یه کد تمیز !
public class ActivityPlayer extends Activity {
public Boolean playSound(String path) {
try {
File SoundFile = new File(path);
MediaPlayer player = new MediaPlayer();
player.setDataSource(SoundFile.toString());
player.prepare();
player.start();
return true;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String SD = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
final ArrayList<String> files = new ArrayList<String>();
for (int i = 0; i < 20; i++) {
files.add(SD + "/" + i + ".mp3");
}
findViewById(R.id.button0).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
playSound(files.get(0));
}
});
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
playSound(files.get(1));
}
});
}
}
پاسخ به سوال
مجتبی یگانه
12 سال پیش
+3
0
جاواسی جان ، شما اسم فایل ها رو از 1.mp3 تا 1000.mp3 بزار ، حالا یا بریز تو یه آرایه از جنس دکمه
ArrayList<Button> butt ArrayList<Button>(); buttons.add((Button) findViewById(R.id.button0)); buttons.add((Button) findViewById(R.id.button1)); buttons.add((Button) findViewById(R.id.button2)); buttons.add((Button) findViewById(R.id.button3));
یا از همون روش لیسنر کلی که استاد گفتن ، برای هر کدوم یه id باید بدی ، که از صفر تا 1000 هست ، پس داخل همون حلقه بگو
buttons.get(i).setTag(i);
حالا رو هر دکمه کلیک شد ، بگو موزیک تگ ام اش رو پخش کن !
البته روش استاد ، از نظر اجرا سریع تر هست
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .