fix: remove swift/android build warnings
This commit is contained in:
@@ -4,6 +4,7 @@ import android.content.Context
|
|||||||
import android.hardware.display.DisplayManager
|
import android.hardware.display.DisplayManager
|
||||||
import android.media.MediaRecorder
|
import android.media.MediaRecorder
|
||||||
import android.media.projection.MediaProjectionManager
|
import android.media.projection.MediaProjectionManager
|
||||||
|
import android.os.Build
|
||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
import com.clawdbot.android.ScreenCaptureRequester
|
import com.clawdbot.android.ScreenCaptureRequester
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@@ -65,7 +66,7 @@ class ScreenRecordManager(private val context: Context) {
|
|||||||
val file = File.createTempFile("clawdbot-screen-", ".mp4")
|
val file = File.createTempFile("clawdbot-screen-", ".mp4")
|
||||||
if (includeAudio) ensureMicPermission()
|
if (includeAudio) ensureMicPermission()
|
||||||
|
|
||||||
val recorder = MediaRecorder()
|
val recorder = createMediaRecorder()
|
||||||
var virtualDisplay: android.hardware.display.VirtualDisplay? = null
|
var virtualDisplay: android.hardware.display.VirtualDisplay? = null
|
||||||
try {
|
try {
|
||||||
if (includeAudio) {
|
if (includeAudio) {
|
||||||
@@ -121,6 +122,14 @@ class ScreenRecordManager(private val context: Context) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun createMediaRecorder(): MediaRecorder =
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
MediaRecorder(context)
|
||||||
|
} else {
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
MediaRecorder()
|
||||||
|
}
|
||||||
|
|
||||||
private suspend fun ensureMicPermission() {
|
private suspend fun ensureMicPermission() {
|
||||||
val granted =
|
val granted =
|
||||||
androidx.core.content.ContextCompat.checkSelfPermission(
|
androidx.core.content.ContextCompat.checkSelfPermission(
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import androidx.compose.material3.MaterialTheme
|
|||||||
import androidx.compose.material3.ModalBottomSheet
|
import androidx.compose.material3.ModalBottomSheet
|
||||||
import androidx.compose.material3.rememberModalBottomSheetState
|
import androidx.compose.material3.rememberModalBottomSheetState
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.automirrored.filled.ScreenShare
|
||||||
import androidx.compose.material.icons.filled.ChatBubble
|
import androidx.compose.material.icons.filled.ChatBubble
|
||||||
import androidx.compose.material.icons.filled.CheckCircle
|
import androidx.compose.material.icons.filled.CheckCircle
|
||||||
import androidx.compose.material.icons.filled.Error
|
import androidx.compose.material.icons.filled.Error
|
||||||
@@ -47,7 +48,6 @@ import androidx.compose.material.icons.filled.PhotoCamera
|
|||||||
import androidx.compose.material.icons.filled.RecordVoiceOver
|
import androidx.compose.material.icons.filled.RecordVoiceOver
|
||||||
import androidx.compose.material.icons.filled.Refresh
|
import androidx.compose.material.icons.filled.Refresh
|
||||||
import androidx.compose.material.icons.filled.Report
|
import androidx.compose.material.icons.filled.Report
|
||||||
import androidx.compose.material.icons.filled.ScreenShare
|
|
||||||
import androidx.compose.material.icons.filled.Settings
|
import androidx.compose.material.icons.filled.Settings
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
@@ -123,7 +123,7 @@ fun RootScreen(viewModel: MainViewModel) {
|
|||||||
if (screenRecordActive) {
|
if (screenRecordActive) {
|
||||||
return@remember StatusActivity(
|
return@remember StatusActivity(
|
||||||
title = "Recording screen…",
|
title = "Recording screen…",
|
||||||
icon = Icons.Default.ScreenShare,
|
icon = Icons.AutoMirrored.Filled.ScreenShare,
|
||||||
contentDescription = "Recording screen",
|
contentDescription = "Recording screen",
|
||||||
tint = androidx.compose.ui.graphics.Color.Red,
|
tint = androidx.compose.ui.graphics.Color.Red,
|
||||||
)
|
)
|
||||||
@@ -327,11 +327,10 @@ private fun CanvasView(viewModel: MainViewModel, modifier: Modifier = Modifier)
|
|||||||
// Some embedded web UIs (incl. the "background website") use localStorage/sessionStorage.
|
// Some embedded web UIs (incl. the "background website") use localStorage/sessionStorage.
|
||||||
settings.domStorageEnabled = true
|
settings.domStorageEnabled = true
|
||||||
settings.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE
|
settings.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE
|
||||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
|
|
||||||
WebSettingsCompat.setForceDark(settings, WebSettingsCompat.FORCE_DARK_OFF)
|
|
||||||
}
|
|
||||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING)) {
|
if (WebViewFeature.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING)) {
|
||||||
WebSettingsCompat.setAlgorithmicDarkeningAllowed(settings, false)
|
WebSettingsCompat.setAlgorithmicDarkeningAllowed(settings, false)
|
||||||
|
} else {
|
||||||
|
disableForceDarkIfSupported(settings)
|
||||||
}
|
}
|
||||||
if (isDebuggable) {
|
if (isDebuggable) {
|
||||||
Log.d("ClawdbotWebView", "userAgent: ${settings.userAgentString}")
|
Log.d("ClawdbotWebView", "userAgent: ${settings.userAgentString}")
|
||||||
@@ -414,6 +413,12 @@ private fun CanvasView(viewModel: MainViewModel, modifier: Modifier = Modifier)
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun disableForceDarkIfSupported(settings: WebSettings) {
|
||||||
|
if (!WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) return
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
WebSettingsCompat.setForceDark(settings, WebSettingsCompat.FORCE_DARK_OFF)
|
||||||
|
}
|
||||||
|
|
||||||
private class CanvasA2UIActionBridge(private val onMessage: (String) -> Unit) {
|
private class CanvasA2UIActionBridge(private val onMessage: (String) -> Unit) {
|
||||||
@JavascriptInterface
|
@JavascriptInterface
|
||||||
fun postMessage(payload: String?) {
|
fun postMessage(payload: String?) {
|
||||||
|
|||||||
@@ -714,6 +714,7 @@ class TalkModeManager(
|
|||||||
systemTtsPendingId = null
|
systemTtsPendingId = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("OVERRIDE_DEPRECATION")
|
||||||
@Deprecated("Deprecated in Java")
|
@Deprecated("Deprecated in Java")
|
||||||
override fun onError(utteranceId: String?) {
|
override fun onError(utteranceId: String?) {
|
||||||
if (utteranceId == null) return
|
if (utteranceId == null) return
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ struct AgentWorkspaceTests {
|
|||||||
case .unsafe:
|
case .unsafe:
|
||||||
break
|
break
|
||||||
case .safe:
|
case .safe:
|
||||||
#expect(false, "Expected unsafe bootstrap safety result.")
|
#expect(Bool(false), "Expected unsafe bootstrap safety result.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ struct AgentWorkspaceTests {
|
|||||||
case .safe:
|
case .safe:
|
||||||
break
|
break
|
||||||
case .unsafe:
|
case .unsafe:
|
||||||
#expect(false, "Expected safe bootstrap safety result.")
|
#expect(Bool(false), "Expected safe bootstrap safety result.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ struct SettingsViewSmokeTests {
|
|||||||
|
|
||||||
@Test func voiceWakeSettingsBuildsBody() {
|
@Test func voiceWakeSettingsBuildsBody() {
|
||||||
let state = AppState(preview: true)
|
let state = AppState(preview: true)
|
||||||
let view = VoiceWakeSettings(state: state)
|
let view = VoiceWakeSettings(state: state, isActive: false)
|
||||||
_ = view.body
|
_ = view.body
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user