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
- Araçlar
Performans & metrikler
- İzole edilmiş
ValueListenableBuilderrender akışları sayesinde yüksek çözünürlüklü oynatma sırasında sıfır kare atlaması FocusNodedizilerini 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ş
setStateağ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
- 01Açık
FocusNodedonanım olay (event) kesme mekanizması kullanan uzamsal D-Pad navigasyon matrisi - 02Yerel TV kullanıcı deneyimi için zorunlu Kiosk modu (
SystemUiMode.immersiveSticky) entegrasyonu - 03REST API üzerinden asenkron medya indeksleme ve klasör ağacı taraması
- 04Oynatma sırasında işletim sisteminin uyku moduna geçmesini engelleyen donanım wakelock yönetimi
- 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.