mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-04-23 11:38:30 +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
cd8587ae41
commit
3de6b9b97e
11 changed files with 209 additions and 90 deletions
|
|
@ -495,6 +495,9 @@ class CoreContext
|
||||||
|
|
||||||
private var logcatEnabled: Boolean = corePreferences.printLogsInLogcat
|
private var logcatEnabled: Boolean = corePreferences.printLogsInLogcat
|
||||||
|
|
||||||
|
private var crashlyticsEnabled: Boolean = corePreferences.sendLogsToCrashlytics
|
||||||
|
private var crashlyticsAvailable = true
|
||||||
|
|
||||||
private val loggingServiceListener = object : LoggingServiceListenerStub() {
|
private val loggingServiceListener = object : LoggingServiceListenerStub() {
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
override fun onLogMessageWritten(
|
override fun onLogMessageWritten(
|
||||||
|
|
@ -512,7 +515,9 @@ class CoreContext
|
||||||
else -> android.util.Log.d(domain, message)
|
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)
|
Factory.instance().loggingService.addListener(loggingServiceListener)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("$TAG Failed to instantiate Crashlytics: $e")
|
Log.e("$TAG Failed to instantiate Crashlytics: $e")
|
||||||
|
crashlyticsEnabled = false
|
||||||
|
crashlyticsAvailable = false
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.i("$TAG Crashlytics is disabled")
|
Log.i("$TAG Crashlytics is disabled")
|
||||||
|
crashlyticsAvailable = false
|
||||||
}
|
}
|
||||||
Log.i("=========================================")
|
Log.i("=========================================")
|
||||||
Log.i("==== Linphone-android information dump ====")
|
Log.i("==== Linphone-android information dump ====")
|
||||||
|
|
@ -1057,11 +1065,6 @@ class CoreContext
|
||||||
core.setUserAgent(userAgent, sdkUserAgent)
|
core.setUserAgent(userAgent, sdkUserAgent)
|
||||||
}
|
}
|
||||||
|
|
||||||
@WorkerThread
|
|
||||||
fun enableLogcat(enable: Boolean) {
|
|
||||||
logcatEnabled = enable
|
|
||||||
}
|
|
||||||
|
|
||||||
// Migration between versions related
|
// Migration between versions related
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
|
|
@ -1137,4 +1140,19 @@ class CoreContext
|
||||||
Log.i("$TAG Removing previous grammar files (without .belr extension)")
|
Log.i("$TAG Removing previous grammar files (without .belr extension)")
|
||||||
corePreferences.clearPreviousGrammars()
|
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.AnyThread
|
||||||
import androidx.annotation.UiThread
|
import androidx.annotation.UiThread
|
||||||
import androidx.annotation.WorkerThread
|
import androidx.annotation.WorkerThread
|
||||||
|
import org.linphone.BuildConfig
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
|
@ -53,6 +54,13 @@ class CorePreferences
|
||||||
config.setBool("app", "debug", value)
|
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
|
@get:WorkerThread @set:WorkerThread
|
||||||
var firstLaunch: Boolean
|
var firstLaunch: Boolean
|
||||||
get() = config.getBool("app", "first_6.0_launch", true)
|
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.contacts.ContactLoader.Companion.NATIVE_ADDRESS_BOOK_FRIEND_LIST
|
||||||
import org.linphone.core.Core
|
import org.linphone.core.Core
|
||||||
import org.linphone.core.CoreListenerStub
|
import org.linphone.core.CoreListenerStub
|
||||||
import org.linphone.core.Factory
|
|
||||||
import org.linphone.core.VersionUpdateCheckResult
|
import org.linphone.core.VersionUpdateCheckResult
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.ui.GenericViewModel
|
import org.linphone.ui.GenericViewModel
|
||||||
|
|
@ -47,8 +46,6 @@ class HelpViewModel
|
||||||
private const val TAG = "[Help ViewModel]"
|
private const val TAG = "[Help ViewModel]"
|
||||||
}
|
}
|
||||||
|
|
||||||
val logcat = MutableLiveData<Boolean>()
|
|
||||||
|
|
||||||
val version = MutableLiveData<String>()
|
val version = MutableLiveData<String>()
|
||||||
|
|
||||||
val appVersion = MutableLiveData<String>()
|
val appVersion = MutableLiveData<String>()
|
||||||
|
|
@ -159,7 +156,6 @@ class HelpViewModel
|
||||||
coreContext.postOnCoreThread { core ->
|
coreContext.postOnCoreThread { core ->
|
||||||
core.addListener(coreListener)
|
core.addListener(coreListener)
|
||||||
|
|
||||||
logcat.postValue(corePreferences.printLogsInLogcat)
|
|
||||||
checkUpdateAvailable.postValue(corePreferences.checkForUpdateServerUrl.isNotEmpty())
|
checkUpdateAvailable.postValue(corePreferences.checkForUpdateServerUrl.isNotEmpty())
|
||||||
uploadLogsAvailable.postValue(!core.logCollectionUploadServerUrl.isNullOrEmpty())
|
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
|
@UiThread
|
||||||
fun cleanLogs() {
|
fun cleanLogs() {
|
||||||
coreContext.postOnCoreThread { core ->
|
coreContext.postOnCoreThread { core ->
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,6 @@ class SettingsAdvancedFragment : GenericMainFragment() {
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
viewModel.updateDeviceName()
|
viewModel.updateDeviceName()
|
||||||
viewModel.updateFileSharingServerUrl()
|
|
||||||
viewModel.updateRemoteProvisioningUrl()
|
viewModel.updateRemoteProvisioningUrl()
|
||||||
|
|
||||||
super.onPause()
|
super.onPause()
|
||||||
|
|
|
||||||
|
|
@ -60,4 +60,10 @@ class SettingsDeveloperFragment : GenericMainFragment() {
|
||||||
|
|
||||||
startPostponedEnterTransition()
|
startPostponedEnterTransition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
viewModel.updateSharingServersUrl()
|
||||||
|
|
||||||
|
super.onPause()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -190,12 +190,13 @@ class SettingsViewModel
|
||||||
// Advanced settings
|
// Advanced settings
|
||||||
val showAdvancedSettings = MutableLiveData<Boolean>()
|
val showAdvancedSettings = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
|
val sendLogsToCrashlytics = MutableLiveData<Boolean>()
|
||||||
|
val isCrashlyticsAvailable = MutableLiveData<Boolean>()
|
||||||
val startAtBoot = MutableLiveData<Boolean>()
|
val startAtBoot = MutableLiveData<Boolean>()
|
||||||
val keepAliveThirdPartyAccountsService = MutableLiveData<Boolean>()
|
val keepAliveThirdPartyAccountsService = MutableLiveData<Boolean>()
|
||||||
val useSmffForCallRecording = MutableLiveData<Boolean>()
|
val useSmffForCallRecording = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
val deviceName = MutableLiveData<String>()
|
val deviceName = MutableLiveData<String>()
|
||||||
val fileSharingServerUrl = MutableLiveData<String>()
|
|
||||||
val remoteProvisioningUrl = MutableLiveData<String>()
|
val remoteProvisioningUrl = MutableLiveData<String>()
|
||||||
|
|
||||||
val expandAdvancedCalls = MutableLiveData<Boolean>()
|
val expandAdvancedCalls = MutableLiveData<Boolean>()
|
||||||
|
|
@ -227,6 +228,9 @@ class SettingsViewModel
|
||||||
// Developer settings
|
// Developer settings
|
||||||
val showDeveloperSettings = MutableLiveData<Boolean>()
|
val showDeveloperSettings = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
|
val logcat = MutableLiveData<Boolean>()
|
||||||
|
val fileSharingServerUrl = MutableLiveData<String>()
|
||||||
|
val logsSharingServerUrl = MutableLiveData<String>()
|
||||||
val createEndToEndEncryptedConferences = MutableLiveData<Boolean>()
|
val createEndToEndEncryptedConferences = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
private val coreListener = object : CoreListenerStub() {
|
private val coreListener = object : CoreListenerStub() {
|
||||||
|
|
@ -250,6 +254,8 @@ class SettingsViewModel
|
||||||
core.addListener(coreListener)
|
core.addListener(coreListener)
|
||||||
|
|
||||||
isTunnelAvailable.postValue(core.tunnelAvailable())
|
isTunnelAvailable.postValue(core.tunnelAvailable())
|
||||||
|
isCrashlyticsAvailable.postValue(coreContext.isCrashlyticsAvailable())
|
||||||
|
|
||||||
showConversationsSettings.postValue(!corePreferences.disableChat)
|
showConversationsSettings.postValue(!corePreferences.disableChat)
|
||||||
showMeetingsSettings.postValue(!corePreferences.disableMeetings)
|
showMeetingsSettings.postValue(!corePreferences.disableMeetings)
|
||||||
ldapAvailable.postValue(core.ldapAvailable())
|
ldapAvailable.postValue(core.ldapAvailable())
|
||||||
|
|
@ -329,11 +335,11 @@ class SettingsViewModel
|
||||||
setupTunnel()
|
setupTunnel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sendLogsToCrashlytics.postValue(corePreferences.sendLogsToCrashlytics)
|
||||||
startAtBoot.postValue(corePreferences.autoStart)
|
startAtBoot.postValue(corePreferences.autoStart)
|
||||||
keepAliveThirdPartyAccountsService.postValue(corePreferences.keepServiceAlive)
|
keepAliveThirdPartyAccountsService.postValue(corePreferences.keepServiceAlive)
|
||||||
|
|
||||||
deviceName.postValue(corePreferences.deviceName)
|
deviceName.postValue(corePreferences.deviceName)
|
||||||
fileSharingServerUrl.postValue(core.fileTransferServer)
|
|
||||||
remoteProvisioningUrl.postValue(core.provisioningUri)
|
remoteProvisioningUrl.postValue(core.provisioningUri)
|
||||||
|
|
||||||
acceptEarlyMedia.postValue(corePreferences.acceptEarlyMedia)
|
acceptEarlyMedia.postValue(corePreferences.acceptEarlyMedia)
|
||||||
|
|
@ -346,6 +352,9 @@ class SettingsViewModel
|
||||||
setupAudioDevices()
|
setupAudioDevices()
|
||||||
setupCodecs()
|
setupCodecs()
|
||||||
|
|
||||||
|
logcat.postValue(corePreferences.printLogsInLogcat)
|
||||||
|
fileSharingServerUrl.postValue(core.fileTransferServer)
|
||||||
|
logsSharingServerUrl.postValue(core.logCollectionUploadServerUrl)
|
||||||
createEndToEndEncryptedConferences.postValue(corePreferences.createEndToEndEncryptedMeetingsAndGroupCalls)
|
createEndToEndEncryptedConferences.postValue(corePreferences.createEndToEndEncryptedMeetingsAndGroupCalls)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -712,6 +721,17 @@ class SettingsViewModel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@UiThread
|
||||||
|
fun toggleSendLogsToCrashlytics() {
|
||||||
|
val newValue = sendLogsToCrashlytics.value == false
|
||||||
|
|
||||||
|
coreContext.postOnCoreThread {
|
||||||
|
corePreferences.sendLogsToCrashlytics = newValue
|
||||||
|
sendLogsToCrashlytics.postValue(newValue)
|
||||||
|
coreContext.updateCrashlyticsEnabledSetting(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@UiThread
|
@UiThread
|
||||||
fun toggleStartAtBoot() {
|
fun toggleStartAtBoot() {
|
||||||
val newValue = startAtBoot.value == false
|
val newValue = startAtBoot.value == false
|
||||||
|
|
@ -868,13 +888,19 @@ class SettingsViewModel
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiThread
|
@UiThread
|
||||||
fun updateFileSharingServerUrl() {
|
fun updateSharingServersUrl() {
|
||||||
coreContext.postOnCoreThread { core ->
|
coreContext.postOnCoreThread { core ->
|
||||||
val newFileSharingServerUrl = fileSharingServerUrl.value.orEmpty().trim()
|
val newFileSharingServerUrl = fileSharingServerUrl.value.orEmpty().trim()
|
||||||
if (newFileSharingServerUrl.isNotEmpty()) {
|
if (newFileSharingServerUrl.isNotEmpty()) {
|
||||||
Log.i("$TAG Updated file sharing server URL to [$newFileSharingServerUrl]")
|
Log.i("$TAG Updated file sharing server URL to [$newFileSharingServerUrl]")
|
||||||
core.fileTransferServer = 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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1048,6 +1074,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
|
@UiThread
|
||||||
fun toggleConferencesEndToEndEncryption() {
|
fun toggleConferencesEndToEndEncryption() {
|
||||||
val newValue = createEndToEndEncryptedConferences.value == false
|
val newValue = createEndToEndEncryptedConferences.value == false
|
||||||
|
|
|
||||||
|
|
@ -64,34 +64,6 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/back" />
|
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
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
style="@style/tertiary_button_label_style"
|
style="@style/tertiary_button_label_style"
|
||||||
android:id="@+id/clean_logs"
|
android:id="@+id/clean_logs"
|
||||||
|
|
@ -140,7 +112,7 @@
|
||||||
app:flow_horizontalStyle="spread_inside"
|
app:flow_horizontalStyle="spread_inside"
|
||||||
app:constraint_referenced_ids="clean_logs, send_logs"
|
app:constraint_referenced_ids="clean_logs, send_logs"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/logcat_switch" />
|
app:layout_constraintTop_toBottomOf="@id/title" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/app_version_icon"
|
android:id="@+id/app_version_icon"
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,35 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
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
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
style="@style/settings_title_style"
|
style="@style/settings_title_style"
|
||||||
android:id="@+id/start_at_boot_title"
|
android:id="@+id/start_at_boot_title"
|
||||||
|
|
@ -86,7 +115,7 @@
|
||||||
android:checked="@{viewModel.startAtBoot}"
|
android:checked="@{viewModel.startAtBoot}"
|
||||||
android:onClick="@{() -> viewModel.toggleStartAtBoot()}"
|
android:onClick="@{() -> viewModel.toggleStartAtBoot()}"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"/>
|
app:layout_constraintTop_toBottomOf="@id/crashlytics_switch"/>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
style="@style/settings_title_style"
|
style="@style/settings_title_style"
|
||||||
|
|
@ -148,39 +177,6 @@
|
||||||
app:layout_constraintStart_toStartOf="@id/device_id_label"
|
app:layout_constraintStart_toStartOf="@id/device_id_label"
|
||||||
app:layout_constraintEnd_toEndOf="parent"/>
|
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
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
style="@style/settings_title_style"
|
style="@style/settings_title_style"
|
||||||
android:id="@+id/remote_provisioning_label"
|
android:id="@+id/remote_provisioning_label"
|
||||||
|
|
@ -192,7 +188,7 @@
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
android:text="@string/settings_advanced_remote_provisioning_url"
|
android:text="@string/settings_advanced_remote_provisioning_url"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/upload_server_url"/>
|
app:layout_constraintTop_toBottomOf="@id/device_id"/>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatEditText
|
<androidx.appcompat.widget.AppCompatEditText
|
||||||
style="@style/default_text_style"
|
style="@style/default_text_style"
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,100 @@
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="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
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
style="@style/settings_title_style"
|
style="@style/settings_title_style"
|
||||||
android:onClick="@{() -> viewModel.toggleConferencesEndToEndEncryption()}"
|
android:onClick="@{() -> viewModel.toggleConferencesEndToEndEncryption()}"
|
||||||
|
|
@ -111,7 +205,7 @@
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:checked="@{viewModel.createEndToEndEncryptedConferences}"
|
android:checked="@{viewModel.createEndToEndEncryptedConferences}"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
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>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -270,11 +270,13 @@
|
||||||
<string name="settings_tunnel_mode_auto_label">Auto</string>
|
<string name="settings_tunnel_mode_auto_label">Auto</string>
|
||||||
|
|
||||||
<string name="settings_advanced_title">Paramètres avancés</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_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_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">Nom de l\'appareil</string>
|
||||||
<string name="settings_advanced_device_id_hint">Caractères alpha-numériques uniquement</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_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_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_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>
|
<string name="settings_advanced_media_encryption_title">Chiffrement du média</string>
|
||||||
|
|
|
||||||
|
|
@ -310,11 +310,13 @@
|
||||||
<string name="settings_tunnel_mode_auto_label">Auto</string>
|
<string name="settings_tunnel_mode_auto_label">Auto</string>
|
||||||
|
|
||||||
<string name="settings_advanced_title">Advanced settings</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_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_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">Device ID</string>
|
||||||
<string name="settings_advanced_device_id_hint">Alpha-numerical characters only</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_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_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_use_smff_format_for_call_recordings_subtitle">Will use a proprietary file format</string>
|
||||||
<string name="settings_advanced_media_encryption_title">Media encryption</string>
|
<string name="settings_advanced_media_encryption_title">Media encryption</string>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue