انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
دانلود فایل mp3 و قرار دادن برای رینگتون (در برنامه نویسی اندروید)

دانلود فایل mp3 و قرار دادن برای رینگتون (در برنامه نویسی اندروید)

#1
سلام
وقت بخیر
من فایل mp3 رو از روی سرور با کدهای زیر از سرور به روی SD کارت ذخیره می کنم :

کد پی‌اچ‌پی:
private void startDownload() {
        
String url music;
        new 
DownloadFileAsync().execute(url);
    }
    @
Override
    
protected Dialog onCreateDialog(int id) {
        switch (
id) {
        case 
DIALOG_DOWNLOAD_PROGRESS:
            
mProgressDialog = new ProgressDialog(this);
            
mProgressDialog.setMessage("Downloading file..");
            
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            
mProgressDialog.setCancelable(false);
            
mProgressDialog.show();
            return 
mProgressDialog;
        default:
            return 
null;
        }
    }

class 
DownloadFileAsync extends AsyncTask<StringStringString> {

    @
Override
    
protected void onPreExecute() {
        
super.onPreExecute();
        
showDialog(DIALOG_DOWNLOAD_PROGRESS);
    }
    @
Override
    
protected String doInBackground(String... aurl) {
        
int count;

    try {
    
URL url = new URL(aurl[0]);
    
URLConnection conexion url.openConnection();
    
conexion.connect();
    
int lenghtOfFile conexion.getContentLength();
    
Log.d("ANDRO_ASYNC""Lenght of file: " lenghtOfFile);

    
InputStream input = new BufferedInputStream(url.openStream());
    
File sdCard Environment.getExternalStorageDirectory();
    
File dir = new File (sdCard.getAbsolutePath() + "/myfoldername/dir3");
    
dir.mkdirs();
    
File file = new File(dirmyringtonename ".mp3");
    
FileOutputStream output = new FileOutputStream(file);
    
byte data = new byte[1024];
    
long total 0;
        while ((
count input.read(data)) != -1) {
            
total += count;
            
publishProgress(""+(int)((total*100)/lenghtOfFile));
            
output.write(data0count);
        }
        
output.flush();
        
output.close();
        
input.close();
    } catch (
Exception e) {}
    return 
null;
    }
    protected 
void onProgressUpdate(String... progress) {
         
Log.d("ANDRO_ASYNC",progress[0]);
         
mProgressDialog.setProgress(Integer.parseInt(progress[0]));
    }
    @
Override
    
protected void onPostExecute(String unused) {
        
dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
    }


و برای ست کردن این فایل بر روی رینگتون دیفالت از این کدها استفاده می کنم :

کد پی‌اچ‌پی:
private void setrington() {
            
String path getFilesDir()+"/sdcard/myfoldername/dir3/";
            
File k = new File(pathmyringtonename ".mp3"); // path is a file to /sdcard/media/ringtone
            
ContentValues values = new ContentValues();
            
values.put(MediaStore.MediaColumns.DATAk.getAbsolutePath());
            
values.put(MediaStore.MediaColumns.TITLE"My Song title");
            
values.put(MediaStore.MediaColumns.SIZE215454);
            
values.put(MediaStore.MediaColumns.MIME_TYPE"audio/mp3");
            
values.put(MediaStore.Audio.Media.ARTIST"Madonna");
            
values.put(MediaStore.Audio.Media.DURATION230);
            
values.put(MediaStore.Audio.Media.IS_RINGTONEtrue);
            
values.put(MediaStore.Audio.Media.IS_NOTIFICATIONfalse);
            
values.put(MediaStore.Audio.Media.IS_ALARMfalse);
            
values.put(MediaStore.Audio.Media.IS_MUSICfalse);
            
Uri uri MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
Uri newUri Etelaat.this.getContentResolver().insert(urivalues);
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(),RingtoneManager.TYPE_RINGTONE,newUri);

        } 

دانلود کامل کار میکنه اما فایل رو روی حافظه گوشی ذخیره می کنه نه روی SD کارت و همینطور کد های ست کردن رینگتون هم کار نمیکنه و من این رو در لاگ کت میبینم :

کد پی‌اچ‌پی:
05-19 01:26:23.841V/Provider/Settings(3485):  from settings cache name sound_effects_enabled value 0
05
-19 01:26:23.848D/ActivityThread(3485): hoder:android.app.IActivityManager$ContentProviderHolder@42ce86c0,provider,holder.Provider:android.content.ContentProviderProxy@42ce9098
05
-19 01:26:23.979D/Provider/Settings(3485): put string name ringtone value content://media/internal/audio/media/142 userHandle = 0
05-19 01:26:24.031I/RingtoneManager(3485): Set actual default ringtone uricontent://media/internal/audio/media/142 

من این کدها رو هم استفاده کردم در ست کردن رینگتون :

کد پی‌اچ‌پی:
File sdCard Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/myfoldername/dir3");
dir.mkdirs();
File file = new File(dirmyringtonename ".mp3"); 

که این کد هم کار نمیکنه و این رو در لاگ کت میبینم :

کد پی‌اچ‌پی:
05-19 01:36:22.478V/Provider/Settings(7367):  from settings cache name sound_effects_enabled value 0
05
-19 01:36:22.494D/ActivityThread(7367): hoder:android.app.IActivityManager$ContentProviderHolder@42cce4c8,provider,holder.Provider:android.content.ContentProviderProxy@42cceea0
05
-19 01:36:22.606D/Provider/Settings(7367): put string name ringtone value null userHandle 0
05
-19 01:36:22.631I/RingtoneManager(7367): Set actual default ringtone urinull 
پاسخ


پیام‌های این موضوع
دانلود فایل mp3 و قرار دادن برای رینگتون (در برنامه نویسی اندروید) - توسط parniaznet - ۱۳۹۴/۰۲/۲۹, ۱۱:۲۳ ق.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان