آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مدیریت فایل های صوتی در raw و پخش فایل متناسب با دکمه ی کلیک شده؟

javac  12 سال پیش  12 سال پیش
+2 0

تعداد زیادی فایل صوتی دارم که میخوام داخل پوشه 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));
            }

        });
 }
}
0 0
مجتبی چطور میتونم یه Array بسازم و بگم تمام فایلهای داخل raw رو به لیست خودت اضافه کن بر اساس نامشون؟ یه مشکل دیگه هم که هست نمیشه فایلهای داخل raw رو اسمشون عدد بدی تو R ارور میگیره (12 سال پیش)
0 0
بايد آرايه اي از integer ها بسازي ، براي نامگذاري ، بايد از قوانين جاوا در نامگذاري متغيرها پيروي كني (12 سال پیش)
0 0
مثل همین کد بالا دیگه؟ یه سری رادیوباتن دارم که میخوام رو هر کدوم کلیک شد یه آهنگ از Array بگیره و پخش کنه..بهترین کار و ساده ترین کار چیه؟ (12 سال پیش)
0 0
همين روش بالا روش خوبيه ، ايدي موزيك ها رو توي ارايه ذخيره ميكني ، بعد هر دكمه اي كليك شد خونه ي مربوطه از ارايه رو play ميكني (12 سال پیش)
پاسخ به سوال 
مجتبی یگانه  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);

حالا رو هر دکمه کلیک شد ، بگو موزیک تگ ام اش رو پخش کن !

البته روش استاد ، از نظر اجرا سریع تر هست 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .