mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 19:38:08 +00:00
Revert using notification channel to play incoming calls ringtone
This commit is contained in:
parent
be5428aa08
commit
2a5b5d368c
6 changed files with 86 additions and 12 deletions
|
|
@ -26,7 +26,7 @@ update_presence_model_timestamp_before_publish_expires_refresh=1
|
|||
[sound]
|
||||
#remove this property for any application that is not Linphone public version itself
|
||||
ec_calibrator_cool_tones=1
|
||||
disable_ringing=1
|
||||
disable_ringing=0
|
||||
|
||||
[audio]
|
||||
android_disable_audio_focus_requests=1
|
||||
|
|
|
|||
|
|
@ -544,10 +544,21 @@ class NotificationsManager
|
|||
Log.e("$TAG Failed to delete notification channel ID [${channel.id}]: $e")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
val oldId = context.getString(R.string.notification_channel_without_ringtone_incoming_call_id)
|
||||
val oldChannel = notificationManager.getNotificationChannel(oldId)
|
||||
if (oldChannel != null) {
|
||||
Log.i("$TAG Deleting notification channel ID [$oldId]")
|
||||
notificationManager.deleteNotificationChannel(oldId)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e("$TAG Failed to check if deprecated incoming call notification channel exists: $e")
|
||||
}
|
||||
}
|
||||
|
||||
createThirdPartyAccountKeepAliveServiceChannel()
|
||||
createIncomingCallNotificationChannel()
|
||||
createIncomingCallNotificationChannelWithoutRingtone()
|
||||
createMissedCallNotificationChannel()
|
||||
createActiveCallNotificationChannel()
|
||||
createMessageChannel()
|
||||
|
|
@ -1170,7 +1181,7 @@ class NotificationsManager
|
|||
}
|
||||
|
||||
val channelId = if (isIncoming) {
|
||||
context.getString(R.string.notification_channel_incoming_call_id)
|
||||
context.getString(R.string.notification_channel_without_ringtone_incoming_call_id)
|
||||
} else {
|
||||
context.getString(R.string.notification_channel_call_id)
|
||||
}
|
||||
|
|
@ -1607,6 +1618,18 @@ class NotificationsManager
|
|||
notificationManager.createNotificationChannel(channel)
|
||||
}
|
||||
|
||||
@MainThread
|
||||
private fun createIncomingCallNotificationChannelWithoutRingtone() {
|
||||
val id = context.getString(R.string.notification_channel_without_ringtone_incoming_call_id)
|
||||
val name = context.getString(R.string.notification_channel_incoming_call_name)
|
||||
|
||||
val channel = NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH).apply {
|
||||
description = name
|
||||
lockscreenVisibility = Notification.VISIBILITY_PUBLIC
|
||||
}
|
||||
notificationManager.createNotificationChannel(channel)
|
||||
}
|
||||
|
||||
@MainThread
|
||||
private fun createMissedCallNotificationChannel() {
|
||||
val id = context.getString(R.string.notification_channel_missed_call_id)
|
||||
|
|
|
|||
|
|
@ -19,10 +19,11 @@
|
|||
*/
|
||||
package org.linphone.ui.main.settings.fragment
|
||||
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.media.RingtoneManager
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
|
@ -38,13 +39,17 @@ import org.linphone.databinding.SettingsFragmentBinding
|
|||
import org.linphone.ui.main.fragment.GenericMainFragment
|
||||
import org.linphone.utils.ConfirmationDialogModel
|
||||
import org.linphone.ui.main.settings.viewmodel.SettingsViewModel
|
||||
import org.linphone.utils.AppUtils
|
||||
import org.linphone.utils.DialogUtils
|
||||
import org.linphone.utils.Event
|
||||
import java.lang.Exception
|
||||
|
||||
@UiThread
|
||||
class SettingsFragment : GenericMainFragment() {
|
||||
companion object {
|
||||
private const val TAG = "[Settings Fragment]"
|
||||
|
||||
private const val RINGTONE_PICKER_INTENT_ID = 89
|
||||
}
|
||||
|
||||
private lateinit var binding: SettingsFragmentBinding
|
||||
|
|
@ -158,19 +163,31 @@ class SettingsFragment : GenericMainFragment() {
|
|||
}
|
||||
|
||||
viewModel.goToIncomingCallNotificationChannelSettingsEvent.observe(viewLifecycleOwner) {
|
||||
it.consume {
|
||||
Log.w("$TAG Going to incoming call channel settings")
|
||||
it.consume { currentRingtone ->
|
||||
try {
|
||||
/*
|
||||
Log.w("$TAG Going to incoming call channel settings")
|
||||
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply {
|
||||
putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName)
|
||||
putExtra(
|
||||
Settings.EXTRA_CHANNEL_ID,
|
||||
getString(R.string.notification_channel_incoming_call_id)
|
||||
getString(R.string.notification_channel_without_ringtone_incoming_call_id)
|
||||
)
|
||||
}
|
||||
startActivity(intent)
|
||||
} catch (anfe: ActivityNotFoundException) {
|
||||
Log.e("$TAG Failed to go to notification channel settings: $anfe")
|
||||
*/
|
||||
val intent = Intent(RingtoneManager.ACTION_RINGTONE_PICKER).apply {
|
||||
putExtra(
|
||||
RingtoneManager.EXTRA_RINGTONE_TYPE,
|
||||
RingtoneManager.TYPE_RINGTONE
|
||||
)
|
||||
putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currentRingtone)
|
||||
putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, AppUtils.getString(R.string.settings_calls_change_ringtone_pick_title))
|
||||
}
|
||||
startActivityForResult(intent, RINGTONE_PICKER_INTENT_ID)
|
||||
} catch (e: Exception) {
|
||||
Log.e("$TAG Failed start ringtone picker: $e")
|
||||
// TODO: show error to user
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -308,6 +325,20 @@ class SettingsFragment : GenericMainFragment() {
|
|||
startPostponedEnterTransition()
|
||||
}
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (resultCode == Activity.RESULT_OK && requestCode == RINGTONE_PICKER_INTENT_ID) {
|
||||
val uri: Uri? = data?.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
|
||||
if (uri != null) {
|
||||
Log.i("$TAG Ringtone picker result is OK, URI found in intent is [$uri]")
|
||||
viewModel.setRingtoneUri(uri)
|
||||
} else {
|
||||
Log.e("$TAG Ringtone picker result is OK but URI is null!")
|
||||
// TODO: show error to user
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
|
|
|
|||
|
|
@ -19,9 +19,12 @@
|
|||
*/
|
||||
package org.linphone.ui.main.settings.viewmodel
|
||||
|
||||
import android.media.RingtoneManager
|
||||
import android.net.Uri
|
||||
import android.os.Vibrator
|
||||
import androidx.annotation.UiThread
|
||||
import androidx.annotation.WorkerThread
|
||||
import androidx.core.net.toUri
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||
|
|
@ -87,7 +90,7 @@ class SettingsViewModel
|
|||
|
||||
val autoRecordCalls = MutableLiveData<Boolean>()
|
||||
|
||||
val goToIncomingCallNotificationChannelSettingsEvent = MutableLiveData<Event<Boolean>>()
|
||||
val goToIncomingCallNotificationChannelSettingsEvent = MutableLiveData<Event<Uri>>()
|
||||
|
||||
// Conversations settings
|
||||
val showConversationsSettings = MutableLiveData<Boolean>()
|
||||
|
|
@ -445,7 +448,21 @@ class SettingsViewModel
|
|||
|
||||
@UiThread
|
||||
fun changeRingtone() {
|
||||
goToIncomingCallNotificationChannelSettingsEvent.value = Event(true)
|
||||
coreContext.postOnCoreThread { core ->
|
||||
val defaultDeviceRingtone = RingtoneManager.getActualDefaultRingtoneUri(coreContext.context, RingtoneManager.TYPE_RINGTONE)
|
||||
val coreRingtone = core.ring?.toUri()
|
||||
Log.i("$TAG Currently set ringtone in Core is [$coreRingtone], device default ringtone is [$defaultDeviceRingtone]")
|
||||
val currentRingtone = coreRingtone ?: defaultDeviceRingtone
|
||||
goToIncomingCallNotificationChannelSettingsEvent.postValue(Event(currentRingtone))
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun setRingtoneUri(ringtone: Uri) {
|
||||
coreContext.postOnCoreThread { core ->
|
||||
core.ring = ringtone.toString()
|
||||
Log.i("$TAG Newly set ringtone is [${core.ring}]")
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
|
|
|
|||
|
|
@ -200,6 +200,7 @@
|
|||
<string name="settings_calls_vibrate_while_ringing_title">Vibration lors de l\'appel</string>
|
||||
<string name="settings_calls_auto_record_title">Enregistrement automatique des appels</string>
|
||||
<string name="settings_calls_change_ringtone_title">Changer de sonnerie</string>
|
||||
<string name="settings_calls_change_ringtone_pick_title">Choisissez la sonnerie</string>
|
||||
<string name="settings_conversations_title">Conversations</string>
|
||||
<string name="settings_conversations_auto_download_title">Télécharger automatiquement les fichiers</string>
|
||||
<string name="settings_conversations_auto_export_media_to_native_gallery_title">Rendre visible dans la galerie les médias téléchargés</string>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
<string name="notification_channel_missed_call_id" translatable="false">linphone_6.0_notification_missed_call_id</string>
|
||||
<string name="notification_channel_service_id" translatable="false">linphone_6.0_notification_service_id</string>
|
||||
<string name="notification_channel_chat_id" translatable="false">linphone_6.0_notification_chat_id</string>
|
||||
<string name="notification_channel_without_ringtone_incoming_call_id" translatable="false">linphone_6.0.1_notification_incoming_call_id</string>
|
||||
|
||||
<string name="emoji_love" translatable="false">❤️</string>
|
||||
<string name="emoji_thumbs_up" translatable="false">👍</string>
|
||||
|
|
@ -239,6 +240,7 @@
|
|||
<string name="settings_calls_vibrate_while_ringing_title">Vibrate while incoming call is ringing</string>
|
||||
<string name="settings_calls_auto_record_title">Automatically start recording calls</string>
|
||||
<string name="settings_calls_change_ringtone_title">Change ringtone</string>
|
||||
<string name="settings_calls_change_ringtone_pick_title">Pick ringtone</string>
|
||||
<string name="settings_conversations_title">Conversations</string>
|
||||
<string name="settings_conversations_auto_download_title">Auto-download files</string>
|
||||
<string name="settings_conversations_auto_export_media_to_native_gallery_title">Make downloaded media public</string>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue