diff --git a/client/android/AndroidManifest.xml b/client/android/AndroidManifest.xml
index f1d2682b..3276eaa8 100644
--- a/client/android/AndroidManifest.xml
+++ b/client/android/AndroidManifest.xml
@@ -11,6 +11,9 @@
+
+
+
@@ -31,6 +34,7 @@
android:label="-- %%INSERT_APP_NAME%% --"
android:icon="@mipmap/icon"
android:roundIcon="@mipmap/icon_round"
+ android:banner="@mipmap/ic_banner"
android:theme="@style/NoActionBar"
android:fullBackupContent="@xml/backup_content"
android:dataExtractionRules="@xml/data_extraction_rules"
@@ -47,6 +51,7 @@
+
diff --git a/client/android/res/mipmap-anydpi-v26/ic_banner.xml b/client/android/res/mipmap-anydpi-v26/ic_banner.xml
new file mode 100644
index 00000000..cf3108b3
--- /dev/null
+++ b/client/android/res/mipmap-anydpi-v26/ic_banner.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/client/android/res/mipmap-xhdpi/ic_banner.png b/client/android/res/mipmap-xhdpi/ic_banner.png
new file mode 100644
index 00000000..f5029b23
Binary files /dev/null and b/client/android/res/mipmap-xhdpi/ic_banner.png differ
diff --git a/client/android/res/mipmap-xhdpi/ic_banner_foreground.png b/client/android/res/mipmap-xhdpi/ic_banner_foreground.png
new file mode 100644
index 00000000..1c21902e
Binary files /dev/null and b/client/android/res/mipmap-xhdpi/ic_banner_foreground.png differ
diff --git a/client/android/res/values/ic_banner_background.xml b/client/android/res/values/ic_banner_background.xml
new file mode 100644
index 00000000..fa6f91c7
--- /dev/null
+++ b/client/android/res/values/ic_banner_background.xml
@@ -0,0 +1,4 @@
+
+
+ #1E1E1F
+
\ No newline at end of file
diff --git a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt
index e3ed6d39..3caa0713 100644
--- a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt
+++ b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt
@@ -1,6 +1,7 @@
package org.amnezia.vpn
import android.Manifest
+import android.annotation.SuppressLint
import android.app.AlertDialog
import android.app.NotificationManager
import android.content.BroadcastReceiver
@@ -556,8 +557,12 @@ class AmneziaActivity : QtActivity() {
}
@Suppress("unused")
+ @SuppressLint("UnsupportedChromeOsCameraSystemFeature")
fun isCameraPresent(): Boolean = applicationContext.packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)
+ @Suppress("unused")
+ fun isOnTv(): Boolean = applicationContext.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)
+
@Suppress("unused")
fun startQrCodeReader() {
Log.v(TAG, "Start camera")
diff --git a/client/platforms/android/android_controller.cpp b/client/platforms/android/android_controller.cpp
index be404a15..c9ee3cfd 100644
--- a/client/platforms/android/android_controller.cpp
+++ b/client/platforms/android/android_controller.cpp
@@ -179,6 +179,11 @@ bool AndroidController::isCameraPresent()
return callActivityMethod("isCameraPresent", "()Z");
}
+bool AndroidController::isOnTv()
+{
+ return callActivityMethod("isOnTv", "()Z");
+}
+
void AndroidController::startQrReaderActivity()
{
callActivityMethod("startQrCodeReader", "()V");
diff --git a/client/platforms/android/android_controller.h b/client/platforms/android/android_controller.h
index d015dbe3..1041c31f 100644
--- a/client/platforms/android/android_controller.h
+++ b/client/platforms/android/android_controller.h
@@ -35,6 +35,7 @@ public:
void saveFile(const QString &fileName, const QString &data);
QString openFile(const QString &filter);
bool isCameraPresent();
+ bool isOnTv();
void startQrReaderActivity();
void setSaveLogs(bool enabled);
void exportLogsFile(const QString &fileName);