Skip to content

Commit 350aca4

Browse files
committedDec 6, 2023
Bug fixes
1 parent 2698fa9 commit 350aca4

File tree

32 files changed

+42
-60
lines changed

32 files changed

+42
-60
lines changed
 

‎app/build.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ android {
3030
applicationId = "info.dvkr.screenstream"
3131
minSdk = 23
3232
targetSdk = 34
33-
versionCode = 40027
34-
versionName = "4.0.27"
33+
versionCode = 40028
34+
versionName = "4.0.28"
3535

3636
// https://medium.com/@crafty/no-if-you-do-that-then-you-cant-use-newer-features-on-older-platforms-e-g-fa595333c0a4
3737
vectorDrawables.useSupportLibrary = true

‎app/src/main/AndroidManifest.xml

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:tools="http://schemas.android.com/tools"
4-
android:installLocation="auto">
3+
xmlns:tools="http://schemas.android.com/tools">
54

65
<uses-permission android:name="android.permission.INTERNET" />
76
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

‎app/src/main/java/info/dvkr/screenstream/activity/BaseActivity.kt

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import androidx.appcompat.app.AppCompatActivity
66
import androidx.appcompat.app.AppCompatDelegate
77
import com.elvishew.xlog.XLog
88
import info.dvkr.screenstream.common.getLog
9-
import org.koin.androidx.fragment.android.setupKoinFragmentFactory
109

1110
public abstract class BaseActivity(@LayoutRes contentLayoutId: Int) : AppCompatActivity(contentLayoutId) {
1211

‎app/src/main/java/info/dvkr/screenstream/activity/NotificationPermissionActivity.kt

+2-11
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package info.dvkr.screenstream.activity
22

33
import android.Manifest
44
import android.annotation.SuppressLint
5-
import android.content.ActivityNotFoundException
65
import android.os.Build
76
import androidx.activity.result.contract.ActivityResultContracts
87
import androidx.annotation.LayoutRes
@@ -54,11 +53,7 @@ public abstract class NotificationPermissionActivity(@LayoutRes contentLayoutId:
5453
if (showSettings) {
5554
message(R.string.app_activity_permission_allow_notifications_settings)
5655
positiveButton(R.string.app_activity_permission_notification_settings) {
57-
try {
58-
startActivity(notificationHelper.getNotificationSettingsIntent(this@NotificationPermissionActivity))
59-
} catch (cause: ActivityNotFoundException) { //TODO Need prod logs
60-
XLog.e(getLog("showPermissionsMandatoryDialog", "showSettings: $showSettings: $cause"), cause)
61-
}
56+
startActivity(notificationHelper.getNotificationSettingsIntent(this@NotificationPermissionActivity))
6257
}
6358
} else {
6459
message(R.string.app_activity_permission_allow_notifications)
@@ -79,11 +74,7 @@ public abstract class NotificationPermissionActivity(@LayoutRes contentLayoutId:
7974
title(R.string.app_activity_permission_notifications_required_title)
8075
message(R.string.app_activity_permission_enable_notifications)
8176
positiveButton(R.string.app_activity_permission_notification_settings) {
82-
try {
83-
startActivity(notificationHelper.getNotificationSettingsIntent(this@NotificationPermissionActivity))
84-
} catch (cause: ActivityNotFoundException) { //TODO Need prod logs
85-
XLog.e(getLog("showNotificationMandatoryDialog", "$cause"), cause)
86-
}
77+
startActivity(notificationHelper.getNotificationSettingsIntent(this@NotificationPermissionActivity))
8778
}
8879
cancelable(false)
8980
cancelOnTouchOutside(false)

‎app/src/main/java/info/dvkr/screenstream/notification/NotificationHelperImpl.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package info.dvkr.screenstream.notification
22

33
import android.Manifest
4-
import android.app.*
4+
import android.app.Notification
5+
import android.app.NotificationChannel
6+
import android.app.NotificationManager
7+
import android.app.PendingIntent
58
import android.content.Context
69
import android.content.Intent
710
import android.content.pm.PackageManager

‎app/src/main/java/info/dvkr/screenstream/settings/AppSettings.kt

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package info.dvkr.screenstream.settings
22

33
import android.os.Build
44
import androidx.datastore.preferences.core.Preferences
5-
import androidx.datastore.preferences.core.booleanPreferencesKey
65
import androidx.datastore.preferences.core.intPreferencesKey
76
import androidx.datastore.preferences.core.longPreferencesKey
87
import androidx.datastore.preferences.core.stringPreferencesKey

‎gradle/libs.versions.toml

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ material-dialogs = "3.3.0"
1414
xlog = "1.11.0"
1515
ktor = "2.3.6"
1616
webrtc = "114.5735.06"
17+
relinker = "1.4.5"
1718
socket = "2.1.0"
1819
okhttp = "4.12.0"
1920

@@ -66,6 +67,7 @@ ktor-server-websockets = { module = "io.ktor:ktor-server-websockets", version.re
6667
ktor-server-status-pages = { module = "io.ktor:ktor-server-status-pages", version.ref = "ktor" }
6768

6869
webrtc = { module = "io.github.webrtc-sdk:android", version.ref = "webrtc" }
70+
relinker = { module = "com.getkeepsafe.relinker:relinker", version.ref = "relinker" }
6971
socket = { module = "io.socket:socket.io-client", version.ref = "socket" }
7072
okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
7173

‎mjpeg/src/main/java/info/dvkr/screenstream/mjpeg/MjpegService.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ public class MjpegService : AbstractService() {
3030

3131
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
3232
if (intent == null) {
33-
XLog.e(getLog("onStartCommand"), IllegalArgumentException("MjpegService.onStartCommand: intent = null"))
33+
stopSelfResult(startId)
34+
XLog.e(getLog("onStartCommand"), IllegalArgumentException("MjpegService.onStartCommand: intent = null. Stop self, startId: $startId"))
3435
return START_NOT_STICKY
3536
}
3637
val mjpegEvent = MjpegEvent.Intentable.fromIntent(intent) ?: run {
@@ -73,8 +74,7 @@ public class MjpegService : AbstractService() {
7374
if (error is MjpegError.AddressNotFoundException || error is MjpegError.AddressInUseException) {
7475
XLog.i(getLog("showErrorNotification", "${error.javaClass.simpleName} ${error.cause}"))
7576
} else {
76-
XLog.i(getLog("showErrorNotification", "${error.javaClass.simpleName} ${error.cause}"))
77-
XLog.e(getLog("showErrorNotification"), error) //TODO Wait for prod logs
77+
XLog.e(getLog("showErrorNotification"), error)
7878
}
7979

8080
val message = error.toString(this)

‎mjpeg/src/main/java/info/dvkr/screenstream/mjpeg/internal/HttpServer.kt

+1-5
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ internal class HttpServer(
146146

147147
server.environment.monitor.subscribe(ApplicationStopped) {
148148
XLog.i(getLog("monitor", "KtorStopped: ${it.hashCode()}"))
149-
ktorServer.get().second.complete(Unit) //TODO may be null
149+
ktorServer.get().second.complete(Unit)
150150
coroutineScope.cancel()
151151
serverData.clear()
152152
}
@@ -158,15 +158,13 @@ internal class HttpServer(
158158
XLog.w(getLog("startServer.CancellationException.BindException", cause.cause.toString()))
159159
sendEvent(MjpegStreamingService.InternalEvent.Error(MjpegError.AddressInUseException))
160160
} else {
161-
XLog.w(getLog("startServer.CancellationException", cause.toString())) //TODO Need real logs
162161
XLog.w(getLog("startServer.CancellationException", cause.toString()), cause)
163162
sendEvent(MjpegStreamingService.InternalEvent.Error(MjpegError.HttpServerException))
164163
}
165164
} catch (cause: BindException) {
166165
XLog.w(getLog("startServer.BindException", cause.toString()))
167166
sendEvent(MjpegStreamingService.InternalEvent.Error(MjpegError.AddressInUseException))
168167
} catch (cause: Throwable) {
169-
XLog.e(getLog("startServer.Throwable", cause.toString())) //TODO Need real logs
170168
XLog.e(getLog("startServer.Throwable"), cause)
171169
sendEvent(MjpegStreamingService.InternalEvent.Error(MjpegError.HttpServerException))
172170
}
@@ -220,7 +218,6 @@ internal class HttpServer(
220218
install(StatusPages) {
221219
exception<Throwable> { call, cause ->
222220
if (cause is IOException || cause is IllegalArgumentException || cause is IllegalStateException) return@exception
223-
XLog.e(this@appModule.getLog("exception<Throwable>", cause.toString()))
224221
XLog.e(this@appModule.getLog("exception"), RuntimeException("Throwable", cause))
225222
sendEvent(MjpegStreamingService.InternalEvent.Error(MjpegError.HttpServerException))
226223
call.respondText(text = "500: $cause", status = HttpStatusCode.InternalServerError)
@@ -290,7 +287,6 @@ internal class HttpServer(
290287
}
291288
} catch (ignore: CancellationException) {
292289
} catch (cause: Exception) {
293-
XLog.w(this@appModule.getLog("socket", "catch: ${cause.localizedMessage}"))
294290
XLog.w(this@appModule.getLog("socket", "catch: ${cause.localizedMessage}"), cause)
295291
} finally {
296292
XLog.i(this@appModule.getLog("socket", "finally: $clientId"))

‎mjpeg/src/main/java/info/dvkr/screenstream/mjpeg/internal/mjpegModels.kt

-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ internal sealed class MjpegError(@StringRes open val id: Int, override val messa
7171
internal data object AddressNotFoundException : MjpegError(R.string.mjpeg_error_ip_address_not_found)
7272
internal data object AddressInUseException : MjpegError(R.string.mjpeg_error_port_in_use)
7373
internal data object CastSecurityException : MjpegError(R.string.mjpeg_error_invalid_media_projection)
74-
internal data object BitmapFormatException : MjpegError(R.string.mjpeg_error_wrong_image_format) //TODO not used
7574
internal data object HttpServerException : MjpegError(R.string.mjpeg_error_unspecified)
7675
internal data class BitmapCaptureException(override val cause: Throwable?) : MjpegError(R.string.mjpeg_error_unspecified) {
7776
override fun toString(context: Context): String = context.getString(id) + " [${cause?.message}]"

‎mjpeg/src/main/res/values-ar/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
<string name="mjpeg_error_port_in_use"> المنفذ قيد الاستخدام. اختر واحد اخر </string>
123123
<string name="mjpeg_error_invalid_media_projection"> خطآ امني : إسقاط وسائل الاعلام غير صحيح. حاول مرة أخرى </string>
124124
<string name="mjpeg_error_ip_address_not_found">عنوان IP غير موجود.\nحاول تعطيل \"استخدام واي فاي فقط\" في إعدادات البث.</string>
125-
<string name="mjpeg_error_wrong_image_format">يقوم النظام بإرجاع الصورة بتنسيق غير معروف .لا يوجد إصلاح المتاحة .آسف</string>
126125
<string name="mjpeg_error_notification_permission_required">يتطلب التطبيق تمكين الإشعارات لبدء خدمة البث.\n\يرجى تمكين الإشعارات في إعدادات التطبيق.</string>
127126
<string name="mjpeg_error_unspecified">حدث خطأ ما. من فضلك حاول مرة أخرى لاحقا.</string>
128127

‎mjpeg/src/main/res/values-de/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
<string name="mjpeg_error_port_in_use">Port wird bereits genutzt. Bitte wählen Sie einen anderen Port.</string>
123123
<string name="mjpeg_error_invalid_media_projection">Sicherheitsfehler: Ungültige Medien-Projektion. Bitte versuchen Sie es erneut.</string>
124124
<string name="mjpeg_error_ip_address_not_found">IP-Adresse nicht gefunden.\nVersuchen Sie, \"Nur über WLAN\" in den Stream-Einstellungen zu deaktivieren.</string>
125-
<string name="mjpeg_error_wrong_image_format">Das System liefert ein Bild in einem ungültigen Format zurück. Keine Fehlerbehebung verfügbar. Entschuldigung.</string>
126125
<string name="mjpeg_error_notification_permission_required">Die Anwendung erfordert, dass Benachrichtigungen aktiviert sind, um den Streaming-Dienst zu starten.\n\nBitte aktivieren Sie Benachrichtigungen in den Anwendungseinstellungen.</string>
127126
<string name="mjpeg_error_unspecified">Etwas ist schiefgegangen. Bitte versuchen Sie es später erneut.</string>
128127

‎mjpeg/src/main/res/values-es/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
<string name="mjpeg_error_port_in_use">Puerto en uso. Escoja otro por favor.</string>
123123
<string name="mjpeg_error_invalid_media_projection">Error de seguridad: Proyección de medios no válida. Intente nuevamente.</string>
124124
<string name="mjpeg_error_ip_address_not_found">Dirección IP no encontrada.\nIntente desactivar \"Usar solo WiFi\" en la configuración de la transmisión.</string>
125-
<string name="mjpeg_error_wrong_image_format">El sistema devuelve la imagen en formato desconocido. No hay soluciones disponibles. Lo sentimos.</string>
126125
<string name="mjpeg_error_notification_permission_required">La aplicación requiere que las notificaciones estén habilitadas para iniciar el servicio de transmisión.\n\nPor favor, habilite las notificaciones en la configuración de la aplicación.</string>
127126
<string name="mjpeg_error_unspecified">Algo salió mal. Por favor, inténtalo de nuevo más tarde.</string>
128127

‎mjpeg/src/main/res/values-fr/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
<string name="mjpeg_error_port_in_use">Port déjà utilisé. Sélectionnez une autre valeur.</string>
123123
<string name="mjpeg_error_invalid_media_projection">Erreur de sécurité : projection de média invalide. Veuillez re-essayer.</string>
124124
<string name="mjpeg_error_ip_address_not_found">Adresse IP introuvable.\nEssayez de désactiver \"WiFi uniquement\" dans les paramètres du flux.</string>
125-
<string name="mjpeg_error_wrong_image_format">Le système fournit une image dans un format inconnu. Pas de solution, désolé.</string>
126125
<string name="mjpeg_error_notification_permission_required">La aplicación requiere que las notificaciones estén habilitadas para iniciar el servicio de transmisión.\n\nPor favor, habilite las notificaciones en la configuración de la aplicación.</string>
127126
<string name="mjpeg_error_unspecified">Algo salió mal. Por favor, inténtalo de nuevo más tarde.</string>
128127

‎mjpeg/src/main/res/values-hi/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
<string name="mjpeg_error_port_in_use">पोर्ट पहले से ही उपयोग में है। कोई दूसरा चुनें।</string>
123123
<string name="mjpeg_error_invalid_media_projection">सुरक्षा त्रुटि: अमान्य मीडिया प्रक्षेपण। एक बार और कोशिश करें।</string>
124124
<string name="mjpeg_error_ip_address_not_found">IP पता नहीं मिला।\nप्रवाह सेटिंग्स में \"वाईफाई का ही इस्तेमाल करें\" को अक्षम करने का प्रयास करें।</string>
125-
<string name="mjpeg_error_wrong_image_format">सिस्टम अज्ञात प्रारूप में छवि लौटाता है। कोई फिक्स उपलब्ध नहीं। माफ़ कीजिये।</string>
126125
<string name="mjpeg_error_notification_permission_required">ऐप्लिकेशन को स्ट्रीमिंग सेवा शुरू करने के लिए सूचनाओं को सक्षम करने की आवश्यकता है।\n\nकृपया ऐप्लिकेशन की सेटिंग्स में सूचनाओं को सक्षम करें।</string>
127126
<string name="mjpeg_error_unspecified">कुछ गलत हो गया है। कृपया बाद में पुनः प्रयास करें।</string>
128127

‎mjpeg/src/main/res/values-it/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
<string name="mjpeg_error_port_in_use">Porta già in uso. Scegline un\'altra.</string>
123123
<string name="mjpeg_error_invalid_media_projection">Errore di sicurezza: protezione multimedia non valida. Riprova.</string>
124124
<string name="mjpeg_error_ip_address_not_found">Indirizzo IP non trovato.\nProva a disabilitare \"Usa solo WiFi\" nelle impostazioni di streaming.</string>
125-
<string name="mjpeg_error_wrong_image_format">Il sistema restituisce l\'immagine in un formato sconosciuto. Nessuna soluzione disponibile. Spiacente.</string>
126125
<string name="mjpeg_error_notification_permission_required">L\'applicazione richiede che le notifiche siano abilitate per avviare il servizio di streaming.\n\nSi prega di abilitare le notifiche nelle impostazioni dell\'applicazione.</string>
127126
<string name="mjpeg_error_unspecified">Qualcosa è andato storto. Per favore, riprova più tardi.</string>
128127

‎mjpeg/src/main/res/values-ja/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
<string name="mjpeg_error_port_in_use">ポートは既に使用されています。 他のポートを選択してください。</string>
123123
<string name="mjpeg_error_invalid_media_projection">セキュリティエラー: メディアプロジェクションが無効です。 もう一度お試しください。</string>
124124
<string name="mjpeg_error_ip_address_not_found">IPアドレスが見つかりません。\nストリーム設定で「WiFiのみ使用する」を無効にしてみてください。</string>
125-
<string name="mjpeg_error_wrong_image_format">システムが画像を不明な形式で返します。 修正できません。 ごめんなさい。</string>
126125
<string name="mjpeg_error_notification_permission_required">アプリケーションはストリーミングサービスを開始するために通知の有効化が必要です。\n\nアプリケーションの設定で通知を有効にしてください。</string>
127126
<string name="mjpeg_error_unspecified">何か問題が発生しました。後で再試行してください。</string>
128127

‎mjpeg/src/main/res/values-nl/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@
123123
<string name="mjpeg_error_port_in_use">Poort is al in gebruik, kies een andere.</string>
124124
<string name="mjpeg_error_invalid_media_projection">Beveilig fout: Ongeldige media projectie. Probeer het nogmaals.</string>
125125
<string name="mjpeg_error_ip_address_not_found">IP-adres niet gevonden.\nProbeer \"Gebruik alleen WiFi\" uit te schakelen in de streaminstellingen.</string>
126-
<string name="mjpeg_error_wrong_image_format">Systeem maakt een frame in een onbekend formaat. Geen oplossing mogelijk. Sorry.</string>
127126
<string name="mjpeg_error_notification_permission_required">De applicatie vereist dat meldingen zijn ingeschakeld om de streamingdienst te starten.\n\nSchakel meldingen in in de applicatie-instellingen.</string>
128127
<string name="mjpeg_error_unspecified">Er is iets misgegaan. Probeer het later opnieuw.</string>
129128

‎mjpeg/src/main/res/values-pl/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@
123123
<string name="mjpeg_error_port_in_use">Port w użyciu. Wybierz inny.</string>
124124
<string name="mjpeg_error_invalid_media_projection">Błąd bezpieczeństwa: nieprawidłowa projekcja multimediów. Spróbuj ponownie.</string>
125125
<string name="mjpeg_error_ip_address_not_found">Nie znaleziono adresu IP.\nSpróbuj wyłączyć opcję \"Użyj tylko WiFi\" w ustawieniach strumienia.</string>
126-
<string name="mjpeg_error_wrong_image_format">System nadaje obrazowi niewłaściwy format. Brak rozwiązania tego problemu.</string>
127126
<string name="mjpeg_error_notification_permission_required">Aplikacja wymaga włączonych powiadomień, aby rozpocząć usługę przesyłania strumieniowego.\n\nProszę włączyć powiadomienia w ustawieniach aplikacji.</string>
128127
<string name="mjpeg_error_unspecified">Coś poszło nie tak. Proszę spróbować ponownie później.</string>
129128

‎mjpeg/src/main/res/values-pt/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
<string name="mjpeg_error_port_in_use">Porta já em uso. Escolha outra.</string>
123123
<string name="mjpeg_error_invalid_media_projection">Erro de segurança: Projeção de mídia inválida. Tente novamente.</string>
124124
<string name="mjpeg_error_ip_address_not_found">Endereço IP não encontrado.\nTente desativar \"Usar apenas Wi-Fi\" nas configurações de transmissão.</string>
125-
<string name="mjpeg_error_wrong_image_format">O sistema retorna a imagem em um formato desconhecido. Não há correção disponível. Desculpe.</string>
126125
<string name="mjpeg_error_notification_permission_required">O aplicativo requer notificações ativadas para iniciar o serviço de transmissão.\n\nPor favor, ative as notificações nas configurações do aplicativo.</string>
127126
<string name="mjpeg_error_unspecified">Algo deu errado. Tente novamente mais tarde.</string>
128127

0 commit comments

Comments
 (0)
Failed to load comments.