Как определить диагональ экрана?

1. noprogrammer 239 24.08.21 12:43 Сейчас в теме
Кто подскажет как определить диагональ экрана? Я знаю, что есть функция "ПолучитьИнформациюЭкрановКлиента" которая возвращает информацию о подключенных экранах, но к сожалению получить из этих данных диагональ экране не получается... Более того информация не всегда корректна (например телефон показывает разрешение 2340×1080 при 397 ppi а 1С возвращает 2137*1080 и 480 DPI) имея эти данные никак не могу получить диагональ экрана... Другими словами имея данные 2340×1080, 397 ppi - высчитать диагональ не проблема а вот имея вместо ppi --> dpi начинается проблема.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. laperuz 46 25.08.21 04:36 Сейчас в теме
(1) В 1С-овской 1С:Мобильная касса есть такая функция, посмотрите, вдруг поможет.
Там тоже используется ПолучитьИнформациюЭкрановКлиента(), но не в лоб, а есть некоторые вычисления, попробуйте насколько корректно на вашем экране отработает.

Функция ЭтоПланшет() Экспорт
	
	ЭтоПланшет = Ложь;
	
	#Если МобильноеПриложениеСервер Тогда 
		Попытка
			
			ИнформацияЭкрана = ПолучитьИнформациюЭкрановКлиента();
			DPI		= ИнформацияЭкрана[0].DPI;
			Высота	= ИнформацияЭкрана[0].Высота;
			Ширина	= ИнформацияЭкрана[0].Ширина;
			ВысотаDP = Окр(160 / DPI * Высота);
			ШиринаDP = Окр(160 / DPI * Ширина);
			Диагональ = Окр(Sqrt((Высота/DPI*Высота/DPI)+(Ширина/DPI*Ширина/DPI)));
			Если Диагональ < 7 Тогда  // http://developer.android.com/intl/ru/design/style/metrics-grids.html
				ЭтоПланшет = Ложь;
			Иначе
				ЭтоПланшет = Истина;
			КонецЕсли;
		
		Исключение
			ЭтоПланшет = Ложь;
		КонецПопытки;
			
	#Иначе
		ЭтоПланшет = Истина;
	#КонецЕсли
	
	Возврат ЭтоПланшет;
	
КонецФункции
Показать
11. laperuz 46 25.08.21 05:57 Сейчас в теме
(10) Интересно, зачем вычисляются ВысотаDP и ШиринаDP, если они не используются:)
13. noprogrammer 239 25.08.21 09:21 Сейчас в теме
(11) скорее всего оплата идет за количество кода :)
laperuz; BullTi; +2 Ответить
12. noprogrammer 239 25.08.21 09:20 Сейчас в теме
(10) Спасибо, я делаю все тоже самое, но проблема в том, что для данной формулы (что бы она правильно работала) требуется ppi а не dpi иначе диагональ вычисляется не правильно (в их случае возможно это не критично ибо они всего лишь пытаются определить планшет это или нет)
laperuz; BullTi; +2 Ответить
2. XAKEP 24.08.21 13:17 Сейчас в теме
а если два экрана , как у меня :) ?
5. noprogrammer 239 24.08.21 14:13 Сейчас в теме
(2) Будет аналогично первому :)
(3) Информация конечно интересная, только толку от нее ноль.
(4) Способ реально рабочий, но к сожалению нужно програмно определить и в зависимости от диагонали открыть нужную форму.
4. soft_wind 24.08.21 14:03 Сейчас в теме
(1) а старым дедовским способом?
Взять линейку, приложить к экрану?
6. BullTi 24.08.21 17:43 Сейчас в теме
Есть другой способ получить информацию экрана

ИнформацияЭкранаКлиента (ClientDisplayInformation)
Свойства:
DPI (DPI)
Высота (Height)
Ширина (Width)
Описание:
Предназначен для описания экрана устройства.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
7. noprogrammer 239 24.08.21 17:48 Сейчас в теме
8. BullTi 24.08.21 17:56 Сейчас в теме
(7) сорян, прочитал и не вник с смысл сообщения, чет сходу решил что поможет
9. noprogrammer 239 24.08.21 18:06 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот