Pull to refresh

Comments 35

А где-нибудь есть список приложений разработанных на этом фреймворке? Было бы интересно что-то кроме плееров вообще делают?
У меня телевизор Samsung 2012 года, это я так понимаю Orsay. Ничего нового на них уже никто не пилит. Разве что XSMART из недавнего довольно качественно сделан.

Более того, на них ничего нового уже и не запилить)))

Ну кроме очевидного ответа "Это никому не нужно", то почему?

Потому что регистрацию приложений там закрыли ещё года 3 назад))

Ну через официальные источники — ок. Но можно поставить ручками.
А раз фреймворк из статьи позволяет писать под эту платформу значит кто-то для чего-то ее использует?

Легаси проекты в основном. Новые проекты делаем только на WebOS и Tizen.

Если вендор заинтересован в приложении, то 12 год открывают, иногда даже 11. На pure есть коммерческие приложения под все эти платформы в проде, с немалым числом абонентов, но мне разрешения не давали, а бумагу что буду помалкивать я подписал, поэтому от конкретных референсов воздержусь, но прод большой и коммерческий.

Понятно, я было подумал что опенсорс и все такое :)

На текущий момент имею приложение под webOS и есть в плане выход на другие платформы. Но скорее всего подобную платформу для унификации использовать все равно не буду. По мне это еще один костыль. На той же webOS 1.х есть например проблема с производительностью интерфейсов на HTML5… что то красивое и анимированное не реально… интерфейс начинает банально тупить. Отрисовка происходит ооочень медленно.
Да, сталкивались с такой проблемой. Где не помогали оптимизации, выключали анимации для таких платформ. В манифесте для этого сделали специальный флаг, который выключает анимации все глобально: disableAnimations.
И этот флаг можно задать не только в манифесте, но и в рантайме. Вот примерный код, как вырубить анимации только для webos 1й версии:
Device { id: device; }

onCompleted: {
	var platform = this._context.system.os.toLowerCase();
	var sdk = device.sdk;
	$manifest$disableAnimations = (platform === "webos" && sdk.indexOf("1.") === 0);
}

Интересное решение, коллега. А чем вас не устроил реакт или любая другая библиотека для управления отображением?
Мы с успехом применяем jsx, но не при помощи реакта, правда.

Хотя бы из-за того, что не надо руками за фокусом следить и описывать все переходы при навигации
А как здесь реализуется сложная логика переходов фокуса без её явного описания? Например, для элементов разных списков нужны разные действия при нажатии одних и тех же кнопок.
Ну несколько примеров разных кейсов могу првести:
1) Навигация во вьюхах уже реализована по умолчанию. Для того, чтобы работала там навигация на любом ТВ в принципе не нужно писать ничего
2) Навигация среди разнородных элементов. Если элементы разные но расположены скажем в горизонтали или вертикали, или просто подряд гридом, то для этого есть специальные лейауты:
Row, Column и Grid соответственно, и чтобы орагнизовать среди них навигацию, достаточно указать у этих элементов флаг «focus: true;», чтобы показать что элементы фокусабельны. Пример:
Row {
	height: 100;
	spacing: 10;

	Rectangle {
		height: 100;
		width: 200;
		color: activeFocus ? "red" : "blue";
		focus: true;
	}

	Image {
		height: 100;
		width: 100;
		source: activeFocus ? "res/focusedImage.png" : "res/image.png";
		focus: true;
	}
}

логика навигации здесь также уже реализована, и ничего дополнительно писать зесь не нужно.
3) Явно передать фокус при нажатии какой-то кнопки. Например, нужно передать фокус другому элементу при нажатии вверх и вернуть его обратно, нажав вниз:
Rectangle {
	id: topRect;
	width: 100;
	height: 100;
	color: "red";
	focus: true;

	onDownPressed: { bottomRect.setFocus(); }
}

Rectangle {
	id: bottomRect;
	y: 100;
	width: 100;
	height: 100;
	color: "blue";
	focus: true;

	onUpPressed: { topRect.setFocus(); }
}

Насчет Вашего примера со списками и разными действиями с одними и теми же кнопками, я не уверен, что понял, можете конкретнее задачу поставить, я напишу как это будет на PureQML
У себя я реализовал поиск ближайшего элемента в зависимости от необходимого элемента. Т.е. если нажимаем клавишу «вправо»… то ищутся ближайжие элементы с права от элемента… можно искать как относительно оси так и в приницпе все что справа… или например найти по осои и если ни чего не нашлось то ищим уже в более широком смысле… т.е. все что справа… не то чтобы универсально… в некоторых случаях требуется подстройка алгоритма в виду более сложного строения элементов UI. Но в общем и целом справляется… при этом круг поиска может сужаться если например открыто диалоговое окно.
>необходимого элемента
необходимого направления =)
В своё время была большим открытием либа: www.npmjs.com/package/spatial-navigation-js

Даже без особого конфигурирования работает очень не плохо, но можно довольно гибко подстроить.
Интересно… глыну по подробней. У меня по сути так же работает… на дистанциях. spatial завязана на JQuery… у меня сейчас тоже в одном месте используется JQuery но надо убирать этот костыль… переписываю на чистый js.
Опять же как я понял spatial берет полный контроль за нажатиями на себя, мне данный вариант не совсем подходит потому как у меня навигация чуть сложнее… есть скрытые элементы которые должны отобразиться при определенных обстоятельствах и получить фокус.
Интересно… глыну по подробней. У меня по сути так же работает… на дистанциях. spatial завязана на JQuery… у меня сейчас тоже в одном месте используется JQuery но надо убирать этот костыль… переписываю на чистый js.

Не, ну что вы ей Богу, какой jquery.))) Прямой завязки на него там конечно же нет. Просто если jquery подключен, через него делаются некоторые DOM операции и обертывается либа в плагин. Если его нет, и черт с ним))) Так что можете считать, что это чистый JS.

Опять же как я понял spatial берет полный контроль за нажатиями на себя, мне данный вариант не совсем подходит потому как у меня навигация чуть сложнее… есть скрытые элементы которые должны отобразиться при определенных обстоятельствах и получить фокус.

Там есть целый набор событий, которые можно использовать в качестве хуков. Далее, есть реально типа хука navigableFilter. Ну и главное там есть разделение на секции, и всякие там add/remove, enable/disable, pause/resume для управления этими секциями.

Например, вам нужно «замкнуть» фокус на модальном окне. Очень просто. Просто добавляем секцию для него с простым конфигом и при активации модалки, отдаем ей фокус:

// добавили секцию с restrict: 'self-only'
SN.add({
  id: 'modal',
  restrict: 'self-only'
});

// когда надо отдаем ей фокус
SN.focus('modal');

Смарт тв уже не так актуален, ведь есть хорошие приставки для телевизора с андроидом и большим функционалом на борту.
Сам пытался сделать «Hello, Word» для телевизора самсунг в 2012 году
Ну рынок этот пока все еще велик, причем до сих пор в полях есть немало телевизоров уже не поддерживаемых платформ, плюс покупать дополнительную приставку с еще одним пультом и hdmi проводом, чтобы, например, смотреть YouTube избыточно, когда на самом телевизоре это можно сделать с помощью встроенного SmartTV.
Ну и добавлю, что на PureQML на AndroidTV тоже можено писать приложения =)
чтобы, например, смотреть YouTube избыточно, когда на самом телевизоре это можно сделать с помощью встроенного SmartTV
Увы, YouTube перестает работать в некоторых SmartTV. В Самсунге 12 или 13 года выпуска приложение YouTube сначала выдавало уведомление, что поддержка YouTube скоро будет удалена, а потом самоудалилось с телевизора. И поставить заново штатным путем нельзя, в маркете его просто нет.
На самом деле очень даже актуален. Приставку нужно покупать отдельно, а смарт тв сейчас встроено во все телики. Большая часть людей, которая их покупает далеко не гики.
Далеко не во все. Я год полтора назад покупал тв 43". И моделей без него хватало. Искал именно без смарт тв. Т.к. разница с аналогичной моделью, но с ним на борту в районе 4-5тыр. И на эти деньги можно купить отличный андроид тв. Но его я правда так и не взял, т.к. появилось дома интерактивное тв приставка от ростелекома. А ютуб там особо ни кому не нужен.

Smart TV — это следующий шаг после приставки.

> смартбокс неудобный, реакт не решает специфических тв проблем

Как насчёт TAL?
Посмотрел проект, но нам больше декларативный подход PureQML в описании UI нравится, т.к. позволяет более лаконично и явно описать то, что хочешь отобразить на экране, в качестве примера, продемонстрирую примерный код первой страницы talexample, если бы она была написана на PureQML:
Image {
	amchors.fill: context;
	source: "res/main_bg.png";

	Column {
		width: 100%;
		spacing: 10;
		focus: true;

		Text {
			width: 100%;
			text: "Hello World";
			font.pixelSize: 72;
			color: "#fff";
			horizontalAlignment: Text.AlignHCenter;
		}

		Text {
			width: 100%;
			text: "Welcome to your first TAL application!";
			font.pixelSize: 28;
			color: "#fff";
			horizontalAlignment: Text.AlignHCenter;
		}

		ListView {
			width: 50%;
			height: contentHeight;
			spacing: 10;
			focus: true;
			model: ListModel {
				ListElement { text: "Carousel Example"; }
				ListElement { text: "Sample Video Player Example"; }
				ListElement { text: "Horizontal Progress Bar Example"; }
			}
			delegate: Rectangle {
				width: 100%;
				height: 40;
				color: activeFocus ? "#0ff" : "#ccc";

				Text {
					width: 100%;
					height: 100%;
					text: "Welcome to your first TAL application!";
					font.pixelSize: 21;
					color: "#000";
					verticalAlignment: Text.AlignVCenter;
					horizontalAlignment: Text.AlignHCenter;
				}
			}
		}
	}
}

Вам то понятно))) с другой стороны там BBC. Мы то вообще Svelte юзаем в последнее время.
Размышления на тему…
Боюсь что данный данный проект (и вообще другие схожые) без серьезной поддержки производителя, возможности писать плагины и… достаточно длинного списка контрибутеров канет в Лету. Либо его поддерживать как побочный продукт используя в своем каком то проекте.
Каждый проект как правило индивидуален… и зачастую ни один фреймворк не покрывает потребности. Либо не хватает функционала, либо не достаточну «кунфигурабелен»… либо слишком результат оказывается громоздким. Большой проект скорее всего будет использовать самописный «костыль» дабы получить максимум скорости работы интерфейса… как ни прискорбно но процессоры достаточно слабы в Смарт ТВ по сравнению с компами где можно городить не заботясь о том сколько будет весить проект… сколько пожрет процессорного времени и тд. Когда делал первые шаги на webOS 1.х не так редки были случаи когда программа просто вылетала… скорее всего из-за нехватки памяти.
Было дело как-то если не ошибаюсь предлагали мне вроде поляки какой то фреймворк для создания мультиплатформенных приложения… но чет уже года полтороа или два я о данном фрейме даже не слышу… ну тут либо мало влезаю в данную тематику дальше своего проекта либо он так же канул в Лету.
Несколько сумбурно но надеюсь суть ясна… что будет тяжело поддерживать подобный проект на плаву… если только много интузиазма либо как побочный продукт используемый в своих проектах.
Поэтому мы уже больше года используем SvelteJS для Smart TV приложений и довольны как слоны))) Особенно после выхода второй версии.
Писал под OperaTV (движок Presto, как в Opera 12) и NetCast времен 2013 года.
webOS 1.х в плане производительности казался несбыточной мечтой…
Sign up to leave a comment.

Articles