رفتن به مطلب
  • 0

ذخیره یک فایل صوتی در گوشی و تنظیم به عنوان اهنگ زنگ


amir mahdizadeh

سوال

سلام دوستان وقتتون بخیر

من یه لیست ویو سفارشی ساختم با اموزش اقای شاهدی که توش customarrayadapter استفاده کردم

هرکدام از ایتم های این لیست ویو یه  باتن توش هست که من میخوام وقتی روش کلیک شد اون اهنگی که اسمش داخل لیست ویو نوشته شده به عنوان اهنگ زنگ انتخاب بشه

set_as_ringtone.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {
                final Integer[] list_music = { R.raw.music0 , R.raw.music1 , R.raw.music2 };
                    try {
                        String path = Environment.getExternalStorageDirectory() + "/file";
                        File dir = new File(path);
                        if (dir.mkdirs() || dir.isDirectory()) {
                            String str_song_name = "music" + position + ".mp3";
                            CopyRAWtoSDCard(list_music[position], path + File.separator + str_song_name);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

            }
        });
private void CopyRAWtoSDCard(int id, String path) throws IOException {

        FileOutputStream out = new FileOutputStream(path);
        byte[] buff = new byte[1024];
        int read = 0;
        try {
             {
                out.write(buff, 0, read);
            }
        } finally {
            out.close();
        }
    }

این کد ها رو نوشتم برای قسمت ذخیره فایل داخل گوشی اما مشکل داره

ممنون میشم کمکم کنید مشکلمو برطرف کنم

:heart::53:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

2 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام ، این متد رو تست   نکردم فقط کداشو پیدا کردم و یکم جمع و جورش کردم و   به شکلی که شما  میخواین تغییرش دادم ،  یه کانتکست میگیره برای دسترسی به  ContentResolver و  یه Int به عنوان id فایل raw میگیره و یه آدرس ،   فایل رو کپی میکنه و اون رو به عنوان Ringtone قرار میده 

void copyRawAndSetRingtone(Context context,int RawID, String path){
        try{
            InputStream in = context.getResources().openRawResource(RawID);
            FileOutputStream out = new FileOutputStream(path);
            byte[] buff = new byte[1024];
            int read = 0;
            try {
                while ((read = in.read(buff)) > 0) {
                    out.write(buff, 0, read);
                }
            } finally {
                in.close();
                out.close();
            }
        }catch (Exception x){
            x.printStackTrace();
        }
        File f = new File(path);
        ContentValues values = new ContentValues();
        values.put(MediaStore.MediaColumns.DATA, f.getAbsolutePath());
        values.put(MediaStore.MediaColumns.TITLE, "My Song title"); // ye  esm be onvane title
        values.put(MediaStore.MediaColumns.SIZE, 215454);
        values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
        values.put(MediaStore.Audio.Media.ARTIST, "Band Name"); // ye  esm be onvane brand
        values.put(MediaStore.Audio.Media.DURATION, 230);
        values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
        values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
        values.put(MediaStore.Audio.Media.IS_ALARM, false);
        values.put(MediaStore.Audio.Media.IS_MUSIC, false);
        Uri uri = MediaStore.Audio.Media.getContentUriForPath(f.getAbsolutePath());
        Uri newUri = context.getContentResolver().insert(uri, values);
        RingtoneManager.setActualDefaultRingtoneUri(
                context,
                RingtoneManager.TYPE_RINGTONE,
                newUri
        );
    }

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ببخشید دوستان لازم دونستم  اینو بگم که این کد ها رو داخل یه کلاس به اسم custom array adapter نوشتم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...