回答
最後,我設法默認鈴聲設置爲一個,我下載。 下載代碼不包含在下面,只需將其設置爲默認鈴聲即可。
File k = new File(path, "mysong.mp3"); // path is a file to /sdcard/media/ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "My Song title");
values.put(MediaStore.MediaColumns.SIZE, 215454);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "Madonna");
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);
//Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
Uri newUri = this.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(
myActivity,
RingtoneManager.TYPE_RINGTONE,
newUri
);
無論如何,我不完全明白這段代碼在做什麼。
鈴聲經理需要一個URI給將被設置爲新的鈴聲文件。但是這個uri不能像「/sdcard/media/ringtones/mysong.mp3」那樣直接進入sdcard。這不行!
你需要的是這可能是像 「/外部/音頻/媒體/ 46」
的46是在MediaStore數據庫中的列的ID文件的外部文件的URI,因此多數民衆贊成爲什麼需要首先將sdcard文件添加到數據庫中。
總之,如何mediastore保持其IDS?這個數字可能會變得非常高,因爲您多次執行此操作。
我是否需要刪除此行我的自我?問題是有時候我甚至不控制文件的刪除,因爲它可以通過filebrowser直接從SD卡中刪除。
您可以使用內置的RingtonePreference類。 AndroidGuys在這個here上有一個很好的教程。
嗯,謝謝你的呼喊,但是RingtonePreference允許用戶選擇*你*應用程序中使用鈴聲資源。它不設置系統鈴聲。 – CommonsWare 2009-08-14 01:27:21
好了,可能是我錯過了,但引用不明確的告訴。我想知道除非應用程序正在處理來電,否則有人會在他的應用程序中使用鈴聲做什麼。 – russoue 2009-08-14 13:29:04
我從Android的媒體應用程序中找到了這段代碼。
Settings.System.putString(resolver,
Settings.System.RINGTONE, ringUri.toString());
這個作品形成我的。
public void setRingtone() {
String ringtoneuri = Environment.getExternalStorageDirectory().getAbsolutePath() + "/media/ringtone";
File file1 = new File(ringtoneuri);
file1.mkdirs();
File newSoundFile = new File(ringtoneuri, "myringtone.mp3");
Uri mUri = Uri.parse("android.resource://globalapps.funnyringtones/raw/sound_two.mp3");
ContentResolver mCr = 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 i = fis.read(readData);
while (i != -1) {
fos.write(readData, 0, i);
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/mp3");
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 {
Uri rUri = RingtoneManager.getValidRingtoneUri(this);
if (rUri != null)
ringtoneManager.setStopPreviousRingtone(true);
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(this, "New Rigntone set", Toast.LENGTH_SHORT).show();
} catch (Throwable t) {
Log.e("sanjay in catch", "catch exception"+e.getMessage());
}
}
這將幫助您從原始文件夾,你已經把設置鈴聲所有ringtones.It工作正常進行我也 – 2015-01-12 06:35:26
soundFile = mCr.openAssetFileDescriptor(mUri,「r」); 你能告訴我爲什麼你寫了這行。 – 2015-03-02 11:16:06
這是什麼globalapps? – AndroidHacker 2015-08-09 14:27:01
這是我使用的代碼!我希望它有幫助..
這也是link。
String exStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath();
String path=(exStoragePath +"/media/alarms/");
saveas(RingtoneManager.TYPE_RINGTONE);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+path+filename+".mp3"
+ Environment.getExternalStorageDirectory())));
File k = new File(path, filename);
ContentValues values = new ContentValues(4);
long current = System.currentTimeMillis();
values.put(MediaStore.MediaColumns.DATA, path + filename );
values.put(MediaStore.MediaColumns.TITLE, filename);
values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current/1000));
values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp");
//new
values.put(MediaStore.Audio.Media.ARTIST, "cssounds ");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
// Insert it into the database
this.getContentResolver()
.insert(MediaStore.Audio.Media.getContentUriForPath(k
.getAbsolutePath()), values);
HAPPY CODING!
我不能評論的解決辦法,因爲我沒有對堆棧溢出足夠的聲譽......我想只是添加的方式來添加音頻文件到媒體數據庫,而不直接訪問到數據庫中,從而避免重複獲得。 該解決方案是基於MediaScannerConnection,這是我使用的代碼:
String[] files = { audioFullPath };
MediaScannerConnection.scanFile(
getApplicationContext(),
files,
null,
new OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
Log.v("myapp", "file " + path + " was scanned seccessfully: " + uri);
}
}
);
回答王廟過長,並將其添加要設置歌曲作爲鈴聲,每次重複的條目。相反,你應該試試這個
Uri newUri=Uri.parse("content://media/external/audio/media/"+ID);
try {
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
}
catch (Throwable t) {
}
- 1. 如何使用鈴聲管理器在Android中設置鈴聲?
- 2. Android:鈴聲正在保存,但沒有設置爲活動/默認鈴聲
- 3. 如何通過Android應用程序設置鈴聲?
- 4. 無法設置鈴聲通知android
- 5. 在android中通知的動態鈴聲
- 6. android - 如何將MP3設置爲鈴聲
- 7. Android設置鈴聲FileInputStream nullpointerexception?
- 8. Android鈴聲設置錯誤
- 9. 設置爲鈴聲android
- 10. Android設置鈴聲失敗
- 11. 設置MP3爲鈴聲android?
- 12. 如何在android中設置設備鈴聲?
- 13. 需要通過我的應用更改iPhone的鈴聲設置
- 14. 無法通過Android代碼設置鈴聲
- 15. 在android中設置鈴聲響鈴時間
- 16. 在Android設置鈴聲不工作
- 17. Android更改鈴聲從活動
- 18. 如何在Android中設置鈴聲以下載音頻?
- 19. 如何在android中設置自定義鬧鐘鈴聲
- 20. 如何在Android中將音頻文件設置爲鈴聲?
- 21. 如何以編程方式從鈴聲設置默認鈴聲
- 22. 如何在UILocalNotfication中設置來自用戶鈴聲的聲音?
- 23. Android:如何在我的設置中傳遞鈴聲並將其設置爲默認設置
- 24. 如何使用RingtoneManager.ACTION_RINGTONE_PICKER設置鈴聲?
- 25. 如何設置鈴聲第二SIM卡
- 26. 如何設置短信鈴聲
- 27. 如何設置iPhone壁紙和鈴聲
- 28. 儘管當前的短信鈴聲設置,我如何更改Android短信鈴聲?
- 29. 在iPhone SDK中設置鈴聲
- 30. 如何爲Android上的單個聯繫人設置鈴聲?
在上面的代碼中與媒體內容提供商交互會每次創建一個新條目。您可能想跟蹤您生成的URI,因此可以避免重新下載,並直接跳到「RingtoneManager」。 – 2011-10-19 10:49:26
什麼是'main'在這一行'Uri newUri = main.getContentResolver()。insert(uri,values);'我得到新的Uri爲null爲什麼我不不。請幫助我.. – 2014-05-19 12:18:30
我用'getApplicationContext()'代替'main'是對的,還有什麼我可以用來解決這個問題.. – 2014-05-20 10:00:48