android - setting raw resource as a ringtone -
i have read these 2 posts link1 , 1 link2 code not seem work me.
here code:
file newsoundfile = new file("/sdcard/media/ringtone", "myringtone.oog"); uri muri = uri.parse("android.resource://com.pack.android.myapp/r.raw.song1"); contentresolver mcr = main.this.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(main.this, ringtonemanager.type_ringtone, newuri); } catch (throwable t) { // log.d(tag, "catch exception"); } and getting force close. logcat here:
06-30 03:13:03.731: e/androidruntime(4187): fatal exception: main 06-30 03:13:03.731: e/androidruntime(4187): java.lang.nullpointerexception 06-30 03:13:03.731: e/androidruntime(4187): @ com.pack.android.myapp.main.music(main.java:83) 06-30 03:13:03.731: e/androidruntime(4187): @ com.pack.android.myapp.main$2.onclick(main.java:46) 06-30 03:13:03.731: e/androidruntime(4187): @ android.view.view.performclick(view.java:2538) 06-30 03:13:03.731: e/androidruntime(4187): @ android.view.view$performclick.run(view.java:9152) 06-30 03:13:03.731: e/androidruntime(4187): @ android.os.handler.handlecallback(handler.java:587) 06-30 03:13:03.731: e/androidruntime(4187): @ android.os.handler.dispatchmessage(handler.java:92) 06-30 03:13:03.731: e/androidruntime(4187): @ android.os.looper.loop(looper.java:130) 06-30 03:13:03.731: e/androidruntime(4187): @ android.app.activitythread.main(activitythread.java:3687) 06-30 03:13:03.731: e/androidruntime(4187): @ java.lang.reflect.method.invokenative(native method) 06-30 03:13:03.731: e/androidruntime(4187): @ java.lang.reflect.method.invoke(method.java:507) 06-30 03:13:03.731: e/androidruntime(4187): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:867) 06-30 03:13:03.731: e/androidruntime(4187): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:625) 06-30 03:13:03.731: e/androidruntime(4187): @ dalvik.system.nativestart.main(native method) soundfile seems null. why that? song song1.mpe , in raw folder under res.
permission added in manifest:
<uses-permission android:name="android.permission.write_external_storage"/> <uses-permission android:name="android.permission.write_settings"></uses-permission>
put ringtone sound in assets folder , use code
uri path = uri.parse("android.resource://yourpackagename/raw/yoursoundfile") ringtonemanager.setactualdefaultringtoneuri( getapplicationcontext(), ringtonemanager.type_ringtone, path); log .i("testt", "ringtone set resource: "+ path.tostring()); ringtonemanager.getringtone(getapplicationcontext(), path) .play(); add permission androidmanifest.xml:
<uses-permission android:name="android.permission.write_settings" />
Comments
Post a Comment