Set raw resource as ringtone in Android -
in android application, want set audio file raw
folder ringtone. wrote below code, not working.
please me solve issue. thank you.
code :
string name =best_song_ever.mp3; file newsoundfile = new file("/sdcard/media/ringtone", "myringtone.mp3"); uri muri = uri.parse("android.resource://" + context.getpackagename() + "/raw/" + name); contentresolver mcr = context.getcontentresolver(); assetfiledescriptor soundfile; try { soundfile = mcr.openassetfiledescriptor(muri, "r"); } catch (filenotfoundexception e) { soundfile = null; } try { byte[] readdata = new byte[1024]; fileinputstream fis = soundfile.createinputstream(); fileoutputstream fos = new fileoutputstream(newsoundfile); int = fis.read(readdata); while (i != -1) { fos.write(readdata, 0, i); = fis.read(readdata); } fos.close(); } catch (ioexception io) { } contentvalues values = new contentvalues(); values.put(mediastore.mediacolumns.data, newsoundfile.getabsolutepath()); values.put(mediastore.mediacolumns.title, "my ringtone"); values.put(mediastore.mediacolumns.mime_type, "audio/oog"); values.put(mediastore.mediacolumns.size, newsoundfile.length()); values.put(mediastore.audio.media.artist, r.string.app_name); values.put(mediastore.audio.media.is_ringtone, true); values.put(mediastore.audio.media.is_notification, true); values.put(mediastore.audio.media.is_alarm, true); values.put(mediastore.audio.media.is_music, false); uri uri = mediastore.audio.media .getcontenturiforpath(newsoundfile.getabsolutepath()); uri newuri = mcr.insert(uri, values); try { ringtonemanager.setactualdefaultringtoneuri(context, ringtonemanager.type_ringtone, newuri); } catch (throwable t) { } toast.maketext(context, name + " set ringtone.", toast.length_long).show(); }
the following code solved problem:
string name = "your_raw_audio_name"; file file = new file(environment.getexternalstoragedirectory(),"/myringtonfolder/audio/"); if (!file.exists()) { file.mkdirs(); } string path = environment.getexternalstoragedirectory() .getabsolutepath() + "/myringtonfolder/audio/"; file f = new file(path + "/", name + ".mp3"); uri muri = uri.parse("android.resource://" + context.getpackagename() + "/raw/" + name); contentresolver mcr = context.getcontentresolver(); assetfiledescriptor soundfile; try { soundfile = mcr.openassetfiledescriptor(muri, "r"); } catch (filenotfoundexception e) { soundfile = null; } try { byte[] readdata = new byte[1024]; fileinputstream fis = soundfile.createinputstream(); fileoutputstream fos = new fileoutputstream(f); int = fis.read(readdata); while (i != -1) { fos.write(readdata, 0, i); = fis.read(readdata); } fos.close(); } catch (ioexception io) {} contentvalues values = new contentvalues(); values.put(mediastore.mediacolumns.data, f.getabsolutepath()); values.put(mediastore.mediacolumns.title, name); values.put(mediastore.mediacolumns.mime_type, "audio/mp3"); values.put(mediastore.mediacolumns.size, f.length()); values.put(mediastore.audio.media.artist, r.string.app_name); values.put(mediastore.audio.media.is_ringtone, true); values.put(mediastore.audio.media.is_notification, true); values.put(mediastore.audio.media.is_alarm, true); values.put(mediastore.audio.media.is_music, true); uri uri = mediastore.audio.media.getcontenturiforpath(f.getabsolutepath()); uri newuri = mcr.insert(uri, values); try { ringtonemanager.setactualdefaultringtoneuri(context, ringtonemanager.type_ringtone, newuri); settings.system.putstring(mcr, settings.system.ringtone,newuri.tostring()); } catch (throwable t) {}
Comments
Post a Comment