以下のコードを使用してカスタム着信音を設定しようとしています:
private void registerRingtone(String ringtoneFilePath) {
// Create File object for the specified ring tone path
File ringtoneFile = new File(ringtoneFilePath);
// Insert the ringtone to the content provider
ContentValues value = new ContentValues();
value.put(MediaStore.MediaColumns.DATA, ringtoneFile.getAbsolutePath());
value.put(MediaStore.MediaColumns.TITLE, ringtoneFile.getName());
value.put(MediaStore.MediaColumns.SIZE, ringtoneFile.length());
value.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
value.put(MediaStore.Audio.Media.ARTIST, "myapp");
value.put(MediaStore.Audio.Media.IS_ALARM, false);
value.put(MediaStore.Audio.Media.IS_MUSIC, false);
value.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
value.put(MediaStore.Audio.Media.IS_RINGTONE, true);
ContentResolver cr = context.getContentResolver();
Uri ringtoneUri = MediaStore.Audio.Media.getContentUriForPath(ringtoneFile.getAbsolutePath());
System.out.println("Path to ringtone= " + ringtoneUri);
Uri addedUri = cr.insert(ringtoneUri, value);
System.out.println("addedUri= " + addedUri);
}
public static void setDefaultRingtone(Context context, String ringtoneFilePath) {
Uri ringtoneUri = Uri.parse(ringtoneFilePath);
// Set default ring tone
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, ringtoneUri);
}
registerRingtone メソッドを呼び出して、着信音パスを渡しています (例: "/storage/emulated/0/test/ringtones/14546548681.mp3")。
今、私は奇妙な問題に直面しています。デュアル SIM を搭載した携帯電話の着信音を設定しようとすると、コードが機能する (着信音を設定する) 場合と機能しない (着信音を設定しない) 場合があります。たとえば、デュアル SIM である MotoG では機能しますが、デュアル SIM を備えた他のほとんどすべての電話 (つまり、SONY Experia C、HTC Desire、Lenovo K4 Note) では機能しません。
SIM 1 - Ringtone1 と SIM -2 - Ringtone 2 の両方の SIM に異なる着信音を設定するオプションを提供する電話は、着信音の設定に失敗し、以前の選択も削除されるという結論に達しました。
SIM 固有の着信音を選択できるデバイスのカスタム着信音を設定するにはどうすればよいですか?
誰か助けてくれませんか?