Android/Monodroidカスタム着メロの質問
-
29-09-2019 - |
質問
Assetsフォルダー(Androidassetとして含まれる)からオーディオファイルを使用する方法を見つけて、この呼び出しを行うときに表示される着信音のリストに追加しようとしています。
this.StartActivity(new Intent(Android.Media.RingtoneManager.ActionRingtonePicker));
この通話で着信音を追加しています:
InputStream inputstream = Assets.Open("filename.mp3");
誰かがこれがどのように達成されるか知っていますか?私はすべてを探していて、それを理解していません。ありがとうございました
解決
このようなもの:
private void setAsRingtone(){
try {
//Open the InputStream from the Assets
InputStream fis = Assets.Open("filename.mp3");
if (fis == null)
return;
//Open a File to save the ringtone in the SD (/sdcard/Android/data/com.your.package/)
File path = new
File(Environment.getExternalStorageDirectory().getAbsolutePath() +
"/Android/data/com.your.package/");
if(!path.exists())
path.mkdirs();
//Create the proper file
File f = new File(path, "YourTitle" + ".mp3");
//Dump the InputStream in the File
OutputStream fos = new FileOutputStream(f);
byte[] buf =new byte[1024];
int len;
while((len=fis.read(buf))>0){
fos.write(buf,0,len);
}
fos.close();
fis.close();
//Here are the metadata of the ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, f.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "YourTitle");
values.put(MediaStore.MediaColumns.SIZE, f.length());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "YourArtist");
//values.put(MediaStore.Audio.Media.DURATION, ""); This is not needed
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);
//We put in the DDBB of MediaStore
Uri uri =
MediaStore.Audio.Media.getContentUriForPath(f.getAbsolutePath());
Uri newUri = getBaseContext().getContentResolver().insert(uri, values);
//Set as default
RingtoneManager.setActualDefaultRingtoneUri(
getBaseContext(),
RingtoneManager.TYPE_RINGTONE,
newUri);
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
所属していません StackOverflow