İçeriğe geç
Tüm projeler
Akıllı TVAçık kaynak

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

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ı

Diller
Çatılar & kütüphaneler

Performans & metrikler

  • İ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

Neden geliştirdim?

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

  1. 01Açık FocusNode donanım olay (event) kesme mekanizması kullanan uzamsal D-Pad navigasyon matrisi
  2. 02Yerel TV kullanıcı deneyimi için zorunlu Kiosk modu (SystemUiMode.immersiveSticky) entegrasyonu
  3. 03REST API üzerinden asenkron medya indeksleme ve klasör ağacı taraması
  4. 04Oynatma sırasında işletim sisteminin uyku moduna geçmesini engelleyen donanım wakelock yönetimi
  5. 05Otomatik gizlenme zamanlayıcıları ve göreceli (relative) sarma interpolasyonu ile optimize edilmiş oynatıcı arayüzü

Teknik değerlendirme

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.