Smart TV
Açık Kaynak

Smart TV Yerel Medya Oynatıcı: Flutter D-Pad İstemcisi

DartFlutterGoRouterVideoPlayerWakelockPlusFocusNode API

Flutter ile geliştirilmiş, Android TV'ye özel bir medya istemcisi. Özel bir uzamsal D-Pad odak yönetim motoru (focus management), asenkron ağ akışı ve donanım düzeyinde wakelock entegrasyonu içerir. Yüksek performanslı özel bir Rust arka ucu ile doğrudan çalışmak üzere tasarlanmıştır.

Teknoloji Yığını

DartFlutterGoRouterVideoPlayerWakelockPlusFocusNode API

Sistem Metrikleri

İzole edilmiş `ValueListenableBuilder` render akışları sayesinde yüksek çözünürlüklü oynatma sırasında sıfır kare atlaması
`FocusNode` dizilerini yalnızca dizin geçişlerinde yok edip (dispose) yeniden tahsis ederek sağlanan deterministik bellek yönetimi
Ağır state management framework'lerini atlayıp yüksek oranda lokalize edilmiş `setState` ağaçları kullanarak anlık arayüz güncellemeleri

Bunu Neden İnşa Ettim?

"Standart Android medya oynatıcıları genellikle zayıf D-Pad desteğine, şişkin bir arayüze sahiptir ve ağır arka uç indeksleyicilerine (Plex, Jellyfin vb.) dayanır. Bu Flutter istemcisini, sıfır gecikmeli ve son derece duyarlı bir yerel medya akışı deneyimi sunmak için özel olarak Android TV için geliştirdim. Kendi yazdığım Rust arka ucuyla sıkı sıkıya bağlayarak ağır ara katman yazılımlarını (middleware) ortadan kaldırdım; böylece anında oynatma ve akıcı bir donanım kumandası navigasyonu sağladım."

Mimari & Kararlar

Uygulama, TV kumandaları için deterministik, ızgara tabanlı (grid-based) bir uzamsal navigasyon matrisi oluşturmak amacıyla Flutter'ın `FocusNode` API'sine yoğun bir şekilde dayanır. Yüksek frekanslı video oynatma güncellemeleri sırasında kare atlamalarını (frame drop) önlemek için durum (state) değişiklikleri, tüm widget ağacını yeniden oluşturmak yerine `ValueListenableBuilder` kullanılarak lokalize edilmiştir. Ağ istekleri standart HTTP protokolleri üzerinden asenkron olarak işlenir ve JSON yanıtları doğrudan güçlü tiplenmiş (strongly-typed) Dart modellerine eşlenir. Video hattı, donanım kesintilerini yakalayan, hassas ileri/geri sarma (scrubbing) sağlayan ve kendini otomatik gizleyen özel bir UI katmanı ile sarılmış yerel `video_player` eklentisini kullanır.

Temel Özellikler

  • 01.Açık `FocusNode` donanım olay (event) kesme mekanizması kullanan uzamsal D-Pad navigasyon matrisi
  • 02.Yerel TV kullanıcı deneyimi için zorunlu Kiosk modu (`SystemUiMode.immersiveSticky`) entegrasyonu
  • 03.REST API üzerinden asenkron medya indeksleme ve klasör ağacı taraması
  • 04.Oynatma sırasında işletim sisteminin uyku moduna geçmesini engelleyen donanım wakelock yönetimi
  • 05.Otomatik gizlenme zamanlayıcıları ve göreceli (relative) sarma interpolasyonu ile optimize edilmiş oynatıcı arayüzü
Bu istemci, dokunmatik olmayan ortamlar için uzamsal UI mühendisliğinde ileri düzey bir uygulamadır. Android TV ile sorunsuz etkileşim kurmak, standart mobil dokunmatik algılarını (paradigms) aşmayı gerektirir; bu nedenle mimari, görsel odağı yönlendirmek için düşük seviyeli donanım klavye olaylarını (LogicalKeyboardKey) manuel olarak yakalar. Sıfır kopya (zero-copy) mimarisine sahip Rust arka ucu ile eşleştirildiğinde, bu teknoloji yığını geleneksel medya akış darboğazlarını tamamen aşarak standart yerel ağ donanımlarında kurumsal düzeyde performans sunar.