mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 11:28:06 +00:00
Moved print logs in logcat & file sharing URL settings to developper section, added logs upload file sharing server URL setting, added setting to disable crashlytics logs collection
This commit is contained in:
parent
2634945b8d
commit
344afdfcfa
11 changed files with 209 additions and 90 deletions
|
|
@ -495,6 +495,9 @@ class CoreContext
|
|||
|
||||
private var logcatEnabled: Boolean = corePreferences.printLogsInLogcat
|
||||
|
||||
private var crashlyticsEnabled: Boolean = corePreferences.sendLogsToCrashlytics
|
||||
private var crashlyticsAvailable = true
|
||||
|
||||
private val loggingServiceListener = object : LoggingServiceListenerStub() {
|
||||
@WorkerThread
|
||||
override fun onLogMessageWritten(
|
||||
|
|
@ -512,7 +515,9 @@ class CoreContext
|
|||
else -> android.util.Log.d(domain, message)
|
||||
}
|
||||
}
|
||||
FirebaseCrashlytics.getInstance().log("[$domain] [${level.name}] $message")
|
||||
if (crashlyticsEnabled) {
|
||||
FirebaseCrashlytics.getInstance().log("[$domain] [${level.name}] $message")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -532,9 +537,12 @@ class CoreContext
|
|||
Factory.instance().loggingService.addListener(loggingServiceListener)
|
||||
} catch (e: Exception) {
|
||||
Log.e("$TAG Failed to instantiate Crashlytics: $e")
|
||||
crashlyticsEnabled = false
|
||||
crashlyticsAvailable = false
|
||||
}
|
||||
} else {
|
||||
Log.i("$TAG Crashlytics is disabled")
|
||||
crashlyticsAvailable = false
|
||||
}
|
||||
Log.i("=========================================")
|
||||
Log.i("==== Linphone-android information dump ====")
|
||||
|
|
@ -1057,11 +1065,6 @@ class CoreContext
|
|||
core.setUserAgent(userAgent, sdkUserAgent)
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
fun enableLogcat(enable: Boolean) {
|
||||
logcatEnabled = enable
|
||||
}
|
||||
|
||||
// Migration between versions related
|
||||
|
||||
@WorkerThread
|
||||
|
|
@ -1137,4 +1140,19 @@ class CoreContext
|
|||
Log.i("$TAG Removing previous grammar files (without .belr extension)")
|
||||
corePreferences.clearPreviousGrammars()
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
fun isCrashlyticsAvailable(): Boolean {
|
||||
return crashlyticsAvailable
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
fun updateLogcatEnabledSetting(enabled: Boolean) {
|
||||
logcatEnabled = enabled
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
fun updateCrashlyticsEnabledSetting(enabled: Boolean) {
|
||||
crashlyticsEnabled = enabled
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import android.content.Context
|
|||
import androidx.annotation.AnyThread
|
||||
import androidx.annotation.UiThread
|
||||
import androidx.annotation.WorkerThread
|
||||
import org.linphone.BuildConfig
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
|
|
@ -53,6 +54,13 @@ class CorePreferences
|
|||
config.setBool("app", "debug", value)
|
||||
}
|
||||
|
||||
@get:WorkerThread @set:WorkerThread
|
||||
var sendLogsToCrashlytics: Boolean
|
||||
get() = config.getBool("app", "send_logs_to_crashlytics", BuildConfig.CRASHLYTICS_ENABLED)
|
||||
set(value) {
|
||||
config.setBool("app", "send_logs_to_crashlytics", value)
|
||||
}
|
||||
|
||||
@get:WorkerThread @set:WorkerThread
|
||||
var firstLaunch: Boolean
|
||||
get() = config.getBool("app", "first_6.0_launch", true)
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ import org.linphone.R
|
|||
import org.linphone.contacts.ContactLoader.Companion.NATIVE_ADDRESS_BOOK_FRIEND_LIST
|
||||
import org.linphone.core.Core
|
||||
import org.linphone.core.CoreListenerStub
|
||||
import org.linphone.core.Factory
|
||||
import org.linphone.core.VersionUpdateCheckResult
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.ui.GenericViewModel
|
||||
|
|
@ -47,8 +46,6 @@ class HelpViewModel
|
|||
private const val TAG = "[Help ViewModel]"
|
||||
}
|
||||
|
||||
val logcat = MutableLiveData<Boolean>()
|
||||
|
||||
val version = MutableLiveData<String>()
|
||||
|
||||
val appVersion = MutableLiveData<String>()
|
||||
|
|
@ -159,7 +156,6 @@ class HelpViewModel
|
|||
coreContext.postOnCoreThread { core ->
|
||||
core.addListener(coreListener)
|
||||
|
||||
logcat.postValue(corePreferences.printLogsInLogcat)
|
||||
checkUpdateAvailable.postValue(corePreferences.checkForUpdateServerUrl.isNotEmpty())
|
||||
uploadLogsAvailable.postValue(!core.logCollectionUploadServerUrl.isNullOrEmpty())
|
||||
}
|
||||
|
|
@ -192,17 +188,6 @@ class HelpViewModel
|
|||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun toggleLogcat() {
|
||||
val newValue = logcat.value == false
|
||||
coreContext.postOnCoreThread {
|
||||
corePreferences.printLogsInLogcat = newValue
|
||||
coreContext.enableLogcat(newValue)
|
||||
Factory.instance().enableLogcatLogs(newValue)
|
||||
logcat.postValue(newValue)
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun cleanLogs() {
|
||||
coreContext.postOnCoreThread { core ->
|
||||
|
|
|
|||
|
|
@ -117,7 +117,6 @@ class SettingsAdvancedFragment : GenericMainFragment() {
|
|||
|
||||
override fun onPause() {
|
||||
viewModel.updateDeviceName()
|
||||
viewModel.updateFileSharingServerUrl()
|
||||
viewModel.updateRemoteProvisioningUrl()
|
||||
|
||||
super.onPause()
|
||||
|
|
|
|||
|
|
@ -60,4 +60,10 @@ class SettingsDeveloperFragment : GenericMainFragment() {
|
|||
|
||||
startPostponedEnterTransition()
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
viewModel.updateSharingServersUrl()
|
||||
|
||||
super.onPause()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,12 +197,13 @@ class SettingsViewModel
|
|||
// Advanced settings
|
||||
val showAdvancedSettings = MutableLiveData<Boolean>()
|
||||
|
||||
val sendLogsToCrashlytics = MutableLiveData<Boolean>()
|
||||
val isCrashlyticsAvailable = MutableLiveData<Boolean>()
|
||||
val startAtBoot = MutableLiveData<Boolean>()
|
||||
val keepAliveThirdPartyAccountsService = MutableLiveData<Boolean>()
|
||||
val useSmffForCallRecording = MutableLiveData<Boolean>()
|
||||
|
||||
val deviceName = MutableLiveData<String>()
|
||||
val fileSharingServerUrl = MutableLiveData<String>()
|
||||
val remoteProvisioningUrl = MutableLiveData<String>()
|
||||
|
||||
val expandAdvancedCalls = MutableLiveData<Boolean>()
|
||||
|
|
@ -234,6 +235,9 @@ class SettingsViewModel
|
|||
// Developer settings
|
||||
val showDeveloperSettings = MutableLiveData<Boolean>()
|
||||
|
||||
val logcat = MutableLiveData<Boolean>()
|
||||
val fileSharingServerUrl = MutableLiveData<String>()
|
||||
val logsSharingServerUrl = MutableLiveData<String>()
|
||||
val createEndToEndEncryptedConferences = MutableLiveData<Boolean>()
|
||||
|
||||
private val coreListener = object : CoreListenerStub() {
|
||||
|
|
@ -257,6 +261,8 @@ class SettingsViewModel
|
|||
core.addListener(coreListener)
|
||||
|
||||
isTunnelAvailable.postValue(core.tunnelAvailable())
|
||||
isCrashlyticsAvailable.postValue(coreContext.isCrashlyticsAvailable())
|
||||
|
||||
showConversationsSettings.postValue(!corePreferences.disableChat)
|
||||
showMeetingsSettings.postValue(!corePreferences.disableMeetings)
|
||||
ldapAvailable.postValue(core.ldapAvailable())
|
||||
|
|
@ -338,11 +344,11 @@ class SettingsViewModel
|
|||
setupTunnel()
|
||||
}
|
||||
|
||||
sendLogsToCrashlytics.postValue(corePreferences.sendLogsToCrashlytics)
|
||||
startAtBoot.postValue(corePreferences.autoStart)
|
||||
keepAliveThirdPartyAccountsService.postValue(corePreferences.keepServiceAlive)
|
||||
|
||||
deviceName.postValue(corePreferences.deviceName)
|
||||
fileSharingServerUrl.postValue(core.fileTransferServer)
|
||||
remoteProvisioningUrl.postValue(core.provisioningUri)
|
||||
|
||||
acceptEarlyMedia.postValue(corePreferences.acceptEarlyMedia)
|
||||
|
|
@ -355,6 +361,9 @@ class SettingsViewModel
|
|||
setupAudioDevices()
|
||||
setupCodecs()
|
||||
|
||||
logcat.postValue(corePreferences.printLogsInLogcat)
|
||||
fileSharingServerUrl.postValue(core.fileTransferServer)
|
||||
logsSharingServerUrl.postValue(core.logCollectionUploadServerUrl)
|
||||
createEndToEndEncryptedConferences.postValue(corePreferences.createEndToEndEncryptedMeetingsAndGroupCalls)
|
||||
}
|
||||
}
|
||||
|
|
@ -728,6 +737,17 @@ class SettingsViewModel
|
|||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun toggleSendLogsToCrashlytics() {
|
||||
val newValue = sendLogsToCrashlytics.value == false
|
||||
|
||||
coreContext.postOnCoreThread {
|
||||
corePreferences.sendLogsToCrashlytics = newValue
|
||||
sendLogsToCrashlytics.postValue(newValue)
|
||||
coreContext.updateCrashlyticsEnabledSetting(newValue)
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun toggleStartAtBoot() {
|
||||
val newValue = startAtBoot.value == false
|
||||
|
|
@ -884,13 +904,19 @@ class SettingsViewModel
|
|||
}
|
||||
|
||||
@UiThread
|
||||
fun updateFileSharingServerUrl() {
|
||||
fun updateSharingServersUrl() {
|
||||
coreContext.postOnCoreThread { core ->
|
||||
val newFileSharingServerUrl = fileSharingServerUrl.value.orEmpty().trim()
|
||||
if (newFileSharingServerUrl.isNotEmpty()) {
|
||||
Log.i("$TAG Updated file sharing server URL to [$newFileSharingServerUrl]")
|
||||
core.fileTransferServer = newFileSharingServerUrl
|
||||
}
|
||||
|
||||
val newLogsSharingServerUrl = logsSharingServerUrl.value.orEmpty().trim()
|
||||
if (newLogsSharingServerUrl.isNotEmpty()) {
|
||||
Log.i("$TAG Updated logs upload server URL to [$newLogsSharingServerUrl]")
|
||||
core.logCollectionUploadServerUrl = newLogsSharingServerUrl
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1064,6 +1090,17 @@ class SettingsViewModel
|
|||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun toggleLogcat() {
|
||||
val newValue = logcat.value == false
|
||||
coreContext.postOnCoreThread {
|
||||
corePreferences.printLogsInLogcat = newValue
|
||||
coreContext.updateLogcatEnabledSetting(newValue)
|
||||
Factory.instance().enableLogcatLogs(newValue)
|
||||
logcat.postValue(newValue)
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun toggleConferencesEndToEndEncryption() {
|
||||
val newValue = createEndToEndEncryptedConferences.value == false
|
||||
|
|
|
|||
|
|
@ -64,34 +64,6 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/back" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:onClick="@{() -> viewModel.toggleLogcat()}"
|
||||
android:id="@+id/logcat_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:text="@string/help_troubleshooting_print_logs_in_logcat"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
app:layout_constraintTop_toTopOf="@id/logcat_switch"
|
||||
app:layout_constraintBottom_toBottomOf="@id/logcat_switch"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/logcat_switch"/>
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
style="@style/material_switch_style"
|
||||
android:id="@+id/logcat_switch"
|
||||
android:onClick="@{() -> viewModel.toggleLogcat()}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:checked="@{viewModel.logcat}"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/tertiary_button_label_style"
|
||||
android:id="@+id/clean_logs"
|
||||
|
|
@ -140,7 +112,7 @@
|
|||
app:flow_horizontalStyle="spread_inside"
|
||||
app:constraint_referenced_ids="clean_logs, send_logs"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/logcat_switch" />
|
||||
app:layout_constraintTop_toBottomOf="@id/title" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/app_version_icon"
|
||||
|
|
|
|||
|
|
@ -61,6 +61,35 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:id="@+id/crashlytics_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:text="@string/settings_advanced_print_logs_crashlytics_title"
|
||||
android:maxLines="3"
|
||||
android:ellipsize="end"
|
||||
android:visibility="@{viewModel.isCrashlyticsAvailable ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toTopOf="@id/crashlytics_switch"
|
||||
app:layout_constraintBottom_toBottomOf="@id/crashlytics_switch"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/crashlytics_switch"/>
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
style="@style/material_switch_style"
|
||||
android:id="@+id/crashlytics_switch"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:checked="@{viewModel.sendLogsToCrashlytics}"
|
||||
android:onClick="@{() -> viewModel.toggleSendLogsToCrashlytics()}"
|
||||
android:visibility="@{viewModel.isCrashlyticsAvailable ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:id="@+id/start_at_boot_title"
|
||||
|
|
@ -86,7 +115,7 @@
|
|||
android:checked="@{viewModel.startAtBoot}"
|
||||
android:onClick="@{() -> viewModel.toggleStartAtBoot()}"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
app:layout_constraintTop_toBottomOf="@id/crashlytics_switch"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
|
|
@ -148,39 +177,6 @@
|
|||
app:layout_constraintStart_toStartOf="@id/device_id_label"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:id="@+id/upload_server_url_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="@string/settings_advanced_upload_server_url"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/device_id"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/upload_server_url"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:text="@={viewModel.fileSharingServerUrl}"
|
||||
android:textSize="14sp"
|
||||
android:maxLines="1"
|
||||
android:background="@drawable/edit_text_background"
|
||||
android:inputType="text|textUri"
|
||||
android:hint="@string/settings_advanced_upload_server_url"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintTop_toBottomOf="@id/upload_server_url_label"
|
||||
app:layout_constraintStart_toStartOf="@id/upload_server_url_label"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:id="@+id/remote_provisioning_label"
|
||||
|
|
@ -192,7 +188,7 @@
|
|||
android:paddingBottom="8dp"
|
||||
android:text="@string/settings_advanced_remote_provisioning_url"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/upload_server_url"/>
|
||||
app:layout_constraintTop_toBottomOf="@id/device_id"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
style="@style/default_text_style"
|
||||
|
|
|
|||
|
|
@ -85,6 +85,100 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:onClick="@{() -> viewModel.toggleLogcat()}"
|
||||
android:id="@+id/logcat_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:text="@string/help_troubleshooting_print_logs_in_logcat"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
app:layout_constraintTop_toTopOf="@id/logcat_switch"
|
||||
app:layout_constraintBottom_toBottomOf="@id/logcat_switch"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/logcat_switch"/>
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
style="@style/material_switch_style"
|
||||
android:id="@+id/logcat_switch"
|
||||
android:onClick="@{() -> viewModel.toggleLogcat()}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:checked="@{viewModel.logcat}"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/settings_developer_switch" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:id="@+id/upload_server_url_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="@string/settings_advanced_upload_server_url"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/logcat_switch"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/upload_server_url"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:text="@={viewModel.fileSharingServerUrl}"
|
||||
android:textSize="14sp"
|
||||
android:maxLines="1"
|
||||
android:background="@drawable/edit_text_background"
|
||||
android:inputType="text|textUri"
|
||||
android:hint="@string/settings_advanced_upload_server_url"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintTop_toBottomOf="@id/upload_server_url_label"
|
||||
app:layout_constraintStart_toStartOf="@id/upload_server_url_label"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:id="@+id/logs_upload_server_url_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="@string/settings_advanced_logs_upload_server_url"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/upload_server_url"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/logs_upload_server_url"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:text="@={viewModel.fileSharingServerUrl}"
|
||||
android:textSize="14sp"
|
||||
android:maxLines="1"
|
||||
android:background="@drawable/edit_text_background"
|
||||
android:inputType="text|textUri"
|
||||
android:hint="@string/settings_advanced_logs_upload_server_url"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintWidth_max="@dimen/text_input_max_width"
|
||||
app:layout_constraintTop_toBottomOf="@id/logs_upload_server_url_label"
|
||||
app:layout_constraintStart_toStartOf="@id/logs_upload_server_url_label"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/settings_title_style"
|
||||
android:onClick="@{() -> viewModel.toggleConferencesEndToEndEncryption()}"
|
||||
|
|
@ -111,7 +205,7 @@
|
|||
android:layout_marginEnd="16dp"
|
||||
android:checked="@{viewModel.createEndToEndEncryptedConferences}"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/settings_developer_switch" />
|
||||
app:layout_constraintTop_toBottomOf="@id/logs_upload_server_url" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -263,11 +263,13 @@
|
|||
<string name="settings_tunnel_mode_auto_label">Auto</string>
|
||||
|
||||
<string name="settings_advanced_title">Paramètres avancés</string>
|
||||
<string name="settings_advanced_print_logs_crashlytics_title">Aider les développeurs à corriger les problèmes en envoyant les logs à Crashlytics après un crash</string>
|
||||
<string name="settings_advanced_start_at_boot_title">Démarrer au lancement du téléphone</string>
|
||||
<string name="settings_advanced_keep_alive_service_title">Garder l\'app en vie via un Service</string>
|
||||
<string name="settings_advanced_device_id">Nom de l\'appareil</string>
|
||||
<string name="settings_advanced_device_id_hint">Caractères alpha-numériques uniquement</string>
|
||||
<string name="settings_advanced_upload_server_url">URL du serveur de partage de fichier</string>
|
||||
<string name="settings_advanced_logs_upload_server_url">URL du serveur de partage des logs</string>
|
||||
<string name="settings_advanced_use_smff_format_for_call_recordings_title">Enregistrer les appels vidéos utilisant H265/AV1</string>
|
||||
<string name="settings_advanced_use_smff_format_for_call_recordings_subtitle">Utilisera un format de fichier propriétaire</string>
|
||||
<string name="settings_advanced_media_encryption_title">Chiffrement du média</string>
|
||||
|
|
|
|||
|
|
@ -303,11 +303,13 @@
|
|||
<string name="settings_tunnel_mode_auto_label">Auto</string>
|
||||
|
||||
<string name="settings_advanced_title">Advanced settings</string>
|
||||
<string name="settings_advanced_print_logs_crashlytics_title">Help developers troubleshoot issues by sending logs to Crashlytics after a crash</string>
|
||||
<string name="settings_advanced_start_at_boot_title">Start when device boots</string>
|
||||
<string name="settings_advanced_keep_alive_service_title">Keep app alive using Service</string>
|
||||
<string name="settings_advanced_device_id">Device ID</string>
|
||||
<string name="settings_advanced_device_id_hint">Alpha-numerical characters only</string>
|
||||
<string name="settings_advanced_upload_server_url">File sharing server URL</string>
|
||||
<string name="settings_advanced_logs_upload_server_url">Logs sharing server URL</string>
|
||||
<string name="settings_advanced_use_smff_format_for_call_recordings_title">Record video calls using H265/AV1</string>
|
||||
<string name="settings_advanced_use_smff_format_for_call_recordings_subtitle">Will use a proprietary file format</string>
|
||||
<string name="settings_advanced_media_encryption_title">Media encryption</string>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue