Обнаружение зеркального отображения экрана xamarin.android как vysor
Я хочу, чтобы мое приложение уведомляло, когда мое приложение используется в зеркальном отображении экрана. Точно так же я использую vysor для получения экрана Android на ПК, но мне нужно обнаруживать и закрывать при обнаружении (из-за защиты от записи экрана).
Мне нужен рабочий пример кода C# для Xamarin Android.
Что я наделал
Здесь кто-то рекомендовал использовать документацию DisplayManager и VirtualDisplay. Но я не знаю, как добиться этого в коде.
Здесь кто-то рекомендовал проверить DisplayManager.getDisplays() и посмотреть, не превышает ли он 1. Опять не работает, чтобы обнаружить высор, я попробовал с кодом.
Обновить:
Подскажите пожалуйста, что я делаю не так? Он дает 1 как в эмуляторе, так и на устройстве, в то время как vysor android mirror. Вот реализация кода:
public static bool IsMirror()
{
DisplayManager DisplayManager = (DisplayManager)Application.Context.GetSystemService(Android.Content.Context.DisplayService);
return DisplayManager.GetDisplays().Length > 1;
}
1 ответ
В Android это невозможно.
Самое близкое, что вы могли бы получить, - это использовать FlagSecure для предотвращения создания снимков экрана.
Наконец-то я получил рабочий ответ.
Зеркала Android, такие как vysor, не могут быть зеркальными, если не включены параметры разработчика.
Чтобы проверить, можно ли запустить зеркало, проверьте этот код ниже:
//https://stackru.com/a/31582092/11390822
var context = Android.App.Application.Context;
var resolver = context.ApplicationContext.ContentResolver;
if (Settings.Secure.GetInt(resolver, Settings.Global.DevelopmentSettingsEnabled, 0) == 1)
{
//Developer options enabled
//Mean vysor can mirror
}
else
{
//Developer options disabled
//Mean vysor can't mirror now
}