Allow mobile calling when device is in airplane mode and wifi calling is enabled

This commit is contained in:
Juha Heinanen
2026-06-12 20:28:26 +03:00
parent f10d1f4e81
commit d4c5eab8cf
5 changed files with 28 additions and 18 deletions

View File

@ -2144,17 +2144,19 @@ class BaresipService: Service() {
private fun updateMobileStatus(newStatus: Int? = null) {
uas.value.find { it.account.isMobile }?.let { ua ->
val isAirplaneModeOn = Utils.isAirplaneModeOn(this)
val status = newStatus
?: if (isAirplaneModeOn) {
val status = newStatus ?: if (isAirplaneModeOn) {
if (ua.status == circleGreen.getValue(colorblind))
ua.status
else
R.drawable.circle_white
} else {
if (ua.status == R.drawable.circle_white) {
// Show "Red" (not yet in service)
circleRed.getValue(colorblind)
} else {
if (ua.status == R.drawable.circle_white) {
// Show "Red" (not yet in service)
circleRed.getValue(colorblind)
} else {
ua.status
}
ua.status
}
}
if (ua.status != status) {
Log.d(TAG, "Updating Mobile status to $status")
ua.updateStatus(status)
@ -2167,13 +2169,13 @@ class BaresipService: Service() {
private fun updateMobileStatusFromServiceState(state: Int) {
val isAirplaneModeOn = Utils.isAirplaneModeOn(this)
val status = if (isAirplaneModeOn)
R.drawable.circle_white
else if (state == ServiceState.STATE_IN_SERVICE)
val status = if (state == ServiceState.STATE_IN_SERVICE)
circleGreen.getValue(colorblind)
else if (isAirplaneModeOn)
R.drawable.circle_white
else
circleRed.getValue(colorblind)
Log.d(TAG, "Mobile service state changed: $state, updating status to $status")
Log.d(TAG, "Mobile service state changed: $state, updating status to $status (Airplane=$isAirplaneModeOn)")
updateMobileStatus(status)
}

View File

@ -72,6 +72,8 @@ import androidx.navigation.NavType
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import coil.compose.AsyncImage
import com.tutpro.baresip.BaresipService.Companion.circleGreen
import com.tutpro.baresip.BaresipService.Companion.colorblind
import com.tutpro.baresip.CustomElements.AlertDialog
import com.tutpro.baresip.CustomElements.verticalScrollbar
@ -349,7 +351,7 @@ private fun Calls(
)
secondButtonText.value = ctx.getString(R.string.call)
secondAction.value = {
if (ua.account.isMobile && Utils.isAirplaneModeOn(ctx)) {
if (ua.account.isMobile && ua.status != circleGreen.getValue(colorblind)) {
alertTitle.value = ctx.getString(R.string.notice)
alertMessage.value = ctx.getString(R.string.airplane_mode)
showAlert.value = true
@ -364,7 +366,7 @@ private fun Calls(
thirdButtonText.value = ctx.getString(R.string.send_message)
thirdAction.value = {
if (ua.account.isMobile) {
if (Utils.isAirplaneModeOn(ctx)) {
if (ua.status != circleGreen.getValue(colorblind)) {
alertTitle.value = ctx.getString(R.string.notice)
alertMessage.value = ctx.getString(R.string.airplane_mode)
showAlert.value = true

View File

@ -85,6 +85,8 @@ import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavType
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import com.tutpro.baresip.BaresipService.Companion.circleGreen
import com.tutpro.baresip.BaresipService.Companion.colorblind
import com.tutpro.baresip.CustomElements.AlertDialog
import com.tutpro.baresip.CustomElements.verticalScrollbar
import kotlinx.coroutines.launch
@ -583,7 +585,7 @@ private fun NewMessage(
var msgUri = ""
addMessage(msg)
if (ua.account.isMobile) {
if (Utils.isAirplaneModeOn(ctx)) {
if (ua.status != circleGreen.getValue(colorblind)) {
dialogMessage.value = ctx.getString(R.string.airplane_mode)
showDialog.value = true
} else {

View File

@ -93,6 +93,8 @@ import androidx.navigation.NavType
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import coil.compose.rememberAsyncImagePainter
import com.tutpro.baresip.BaresipService.Companion.circleGreen
import com.tutpro.baresip.BaresipService.Companion.colorblind
import com.tutpro.baresip.CustomElements.AlertDialog
import java.io.ByteArrayOutputStream
import java.io.File
@ -729,7 +731,7 @@ private fun UrisSection(
!ua.account.isMobile))
IconButton(
onClick = {
if (ua.account.isMobile && Utils.isAirplaneModeOn(ctx)) {
if (ua.account.isMobile && ua.status != circleGreen.getValue(colorblind)) {
alertTitle.value = ctx.getString(R.string.notice)
alertMessage.value = ctx.getString(R.string.airplane_mode)
showAlert.value = true
@ -764,7 +766,7 @@ private fun UrisSection(
!ua.account.isMobile))
IconButton(
onClick = {
if (ua.account.isMobile && Utils.isAirplaneModeOn(ctx)) {
if (ua.account.isMobile && ua.status != circleGreen.getValue(colorblind)) {
alertTitle.value = ctx.getString(R.string.notice)
alertMessage.value = ctx.getString(R.string.airplane_mode)
showAlert.value = true

View File

@ -152,6 +152,8 @@ import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import com.tutpro.baresip.BaresipService.Companion.circleGreen
import com.tutpro.baresip.BaresipService.Companion.colorblind
import com.tutpro.baresip.BaresipService.Companion.contactNames
import com.tutpro.baresip.BaresipService.Companion.uas
import com.tutpro.baresip.BaresipService.Companion.uasStatus
@ -2139,7 +2141,7 @@ private fun makeCall(ctx: Context, viewModel: ViewModel, uriText: String,
showAlert.value = true
return
}
else if (ua.account.isMobile && Utils.isAirplaneModeOn(ctx)) {
else if (ua.account.isMobile && ua.status != circleGreen.getValue(colorblind)) {
alertTitle.value = ctx.getString(R.string.notice)
alertMessage.value = ctx.getString(R.string.airplane_mode)
showAlert.value = true