我正在创建一个用于将歌曲设置为通话的应用程序。可以为标准呼叫以及警报和通知设置铃声。以及每个人的联系方式。
我正在使用RingtoneManager.setactualDefaultRingtoneUri()。
fun setRingtone(localAudio: Song,typeManager: Int) {
val context = App.instance
if (context.contentResolver == null) {
throw NullPointerException("content resolver is null")
}
val cr = context.contentResolver
val values = Contentvalues()
values.put(MediaStore.MediaColumns.DATA,localAudio.data)
values.put(MediaStore.MediaColumns.TITLE,localAudio.title)
values.put(MediaStore.MediaColumns.SIZE,File(localAudio.data).length())
values.put(MediaStore.MediaColumns.MIME_TYPE,"audio/mp3")
values.put(MediaStore.Audio.Media.ARTIST,localAudio.artist)
values.put(MediaStore.Audio.Media.DURATION,localAudio.duration)
values.put(MediaStore.Audio.Media.IS_RINGTONE,true)
values.put(MediaStore.Audio.Media.IS_ALARM,true)
values.put(MediaStore.Audio.Media.IS_NOTIFICATION,true)
values.put(MediaStore.Audio.Media.IS_MUSIC,true)
val uri = MediaStore.Audio.Media.getcontenturiForPath(localAudio.data)
cr.delete(uri,MediaStore.MediaColumns.DATA + "=\"" + localAudio.data +
"\"",null)
val newUri = cr.insert(uri,values)
if (newUri == null) {
throw NullPointerException("uri is null")
} else {
when (typeManager) {
TYPE_RINGTONE -> setRingtone(typeManager,context,newUri)
TYPE_ALARM -> setRingtone(typeManager,newUri)
TYPE_NOTIFICATION -> setRingtone(typeManager,newUri)
}
}
}
fun setRingtone(type:Int,context: Context,uri:Uri){
RingtoneManager.setactualDefaultRingtoneUri(context,type,uri)
}
根据我的期望,此代码应将歌曲设置为通知,呼叫或闹钟。问题是,如果这首歌已经在通话中,并且我发出了通知,则该歌曲将从通话中消失。而且仅保留在通知上。