Kısa özet

Bu proje, yapay zekâ destekli geliştirmeyle eski bir televizyonu ve elimdeki kumandayı yeniden değerlendiren kişisel bir TV platformu. Televizyonun HDMI girişine takılı Xiaomi Mi TV Stick'i küçük bir Android bilgisayar gibi kullandım; birlikte geliştirdiğimiz uygulama da bu cihazın ana ekranı, canlı TV uygulaması, radyo oynatıcısı ve film-dizi menüsü olarak çalışıyor.

Artık televizyonu açtığımda karşıma reklam ve gereksiz önerilerle dolu standart bir menü değil, kendi kullanım alışkanlıklarıma göre şekillenen tek bir ekran geliyor. Belirtmek isterim: bu, benim tek başıma ezbere yazdığım bir uygulama değil. Fikir, donanım ve ürün kararları, gerçek cihaz testleri benden geldi; teknik üretim ve problem çözme gücü ise yapay zekâdan.

Kullandığım gerçek cihazlar

ParçaBilgi
TelevizyonPhilips 47PFL7008K/12, 47 inç, Ambilight ve EasyLink/HDMI-CEC destekli
Android cihazXiaomi Mi TV Stick (model: MiTV-AYFR0, cihaz kodu: soul)
BağlantıTelevizyona HDMI, internete Wi-Fi
Görüntü1920 × 1080 çözünürlükte test edildi

Önemli bir nokta: Televizyonu sökmedim, işletim sistemini de değiştirmedim. Görüntüyü televizyon gösteriyor; akıllı özellikleri ve hazırladığım menüyü Mi Stick çalıştırıyor.

Philips 47PFL7008K/12 üzerinde çalışan canlı yayın ve arkaya vuran Ambilight aydınlatması
Philips 47PFL7008K/12 üzerinde çalışan canlı yayın ve arkaya vuran Ambilight aydınlatması

Başlangıçta ne vardı?

Mi Stick üzerinde normal Android TV uygulamaları, Xiaomi'nin kendi TV menüleri ve bir IPTV yayın listesi vardı. Ancak hazır menüde reklamlar, öneriler ve kullanılmayan uygulamalar doluydu; yayın listesinde de aynı kanalın SD, HD, FHD, VIP veya Avrupa sürümleri ayrı ayrı görünüyordu.

Teknik olarak çalışsa da günlük kullanımda yorucuydu: bir kanalı bulmak için uzun listelerde dolaşmak, farklı uygulamalar arasında geçiş yapmak, çalışmayan yayın bağlantılarını tekrar tekrar denemek gerekiyordu. Hedefim bu dağınık yapıyı tek bir ana ekranda toplamaktı.

Önce Mi Stick'i temizledim

Uygulamayı geliştirmeden önce cihazı sadeleştirdim. Root işlemi yapmadan, kablosuz ADB üzerinden Android'in paket yönetimi komutlarını kullandım; önce cihazın mevcut durumunu, sonra temizlik sonrası durumunu kaydedip karşılaştırdım.

Temizlikte ayıkladıklarım:

  • Xiaomi'nin reklam ve tanıtım odaklı PatchWall, Mi Channel ve Mi TV Plus bileşenleri
  • stok Google TV launcher'ı ve ana ekrandaki öneri akışları
  • kullanılmayan üçüncü taraf IPTV, tarayıcı, oyun ve yayın uygulamaları
  • ihtiyacım olmayan ekran koruyucu, takvim, yazdırma ve bazı arka plan servisleri

40'ın üzerinde uygulama/servis için işlem yaptım. Play Store, YouTube, Spotify ve sistemin çalışması için gerekli temel Android bileşenlerini korudum; hangi paketin neden temizlendiğini ve geri alınabileceğini gösteren bir liste ile bir geri yükleme betiği bıraktım.

Bu temizlikten sonra Mi Stick'in ana ekranı sakinleşti ve kendi uygulamamı cihazın TV ana ekranı olarak kullanmak mümkün oldu.

Yapay zekâ ile teknik ortaklık

Bu çalışma, yapay zekâ destekli kodlamanın gerçek donanım üzerinde uygulanmış bir örneği. Yapay zekâ olmasaydı bu kapsamda bir Android TV uygulamasını -- launcher, IPTV oynatma, kumanda yönlendirme, T9 klavye, erişilebilirlik servisi ve cihaz temizliğiyle birlikte -- geliştiremezdim.

Ben fikri, hedef kullanıcı deneyimini ve donanım bağlamını ortaya koydum: eski Philips kumandası kullanılacak, ana ekran sade olacak, kanallar Türkçe ve kolay bulunabilir olacak, kişisel Xtream hesabım ile yedek IPTV listesindeki güncellemeler otomatik alınacak, çalışmayan yayınlarda uygulama mümkün olduğunca dayanıklı davranacaktı. Antigravity/Codex'i fikirden koda, dosya üretimine, mimari kararlara, hata çözümüne ve test sonuçlarını yorumlamaya kadar aktif kullandım.

Benim katkım yalnızca başlangıç fikri değildi: cihazı hazırladım, gerçek kumandayla denedim, TV ekranındaki davranışları gözlemledim, neyin yanlış olduğunu tarif ettim, düzeltmeleri tekrar tekrar doğruladım ve hangi özelliklerin gerçekten işe yaradığını seçtim. Yapay zekâ teknik uygulama ortağımdı; ben ürün yönünü, kabul ölçütlerini ve gerçek kullanım testini yönettim.

Neden yenilikçi?

Bu proje yalnızca bir IPTV arayüzü değil; üç farklı unsuru tek bir deneyimde birleştiriyor:

  1. 2013 model Philips TV kumandasını, bağlama göre çalışan bir Android TV kumandasına dönüştürüyor.
  2. Hazır IPTV listesini sabit bir dosya olarak bırakmıyor; kullanıcı adı ve şifreyle bağlandığım Xtream API altyapısını ve yedek IPTV.org akışlarını otomatik yeniliyor.
  3. Yapay zekâ ile üretilen yazılımı, temizlenmiş düşük maliyetli bir Mi TV Stick üzerinde gerçek TV kullanımına uyarlıyor.

Projenin can alıcı noktası: kumandasız kalmamak

Mi TV Stick gibi cihazların kutusundan çıkan standart kumandalar oldukça kısıtlı: yalnızca yön tuşları, OK, geri, ses ve birkaç uygulama kısayolu var. Rakam tuşu (0-9) ya da geleneksel Kanal İleri/Geri (CH+/CH-) tuşu yok. Bu yüzden sıradan bir kullanıcı bir kanalı açmak için dakikalarca menülerde gezinmek ya da ekrandaki sanal klavyede harf harf ilerlemek zorunda kalıyor.

Bu kısıtlamaya razı olmak yerine, televizyonun kendi 2013 model Philips kumandasını HDMI-CEC üzerinden sistemin ana kumandasına dönüştürdüm. Televizyondan gelen fiziksel tuş sinyallerini Android erişilebilirlik ve tuş yönlendirme katmanında yakalayarak klasik televizyon reflekslerini geri kazandım:

  • Doğrudan rakamla kanal açma: Kumandadan 1, 24 veya 62119 gibi bir sayı tuşlayarak, menülerde kaybolmadan ilgili kanala anında geçiyorum.
  • Gerçek kanal değiştirme (zapping): Fiziksel kanal yukarı/aşağı tuşlarıyla klasik televizyonlardaki gibi hızlı zapping yapılabiliyor.
  • Rakam tuşlarından T9 Türkçe klavye: Arama kutusu açıldığında aynı 0-9 tuşları, eski cep telefonlarındaki gibi çoklu basmalı (T9) klavyeye dönüşüyor; ç, ğ, ı, ö, ş, ü dahil Türkçe karakterlerle hızlı arama yapılabiliyor. Geliştirdiğim erişilebilirlik servisi sayesinde bu yöntem YouTube'un kendi arama ekranında bile çalışıyor.
  • Bağlama duyarlı yönlendirme: Aynı yön tuşları; canlı TV izlerken zapping ve rehber açmaya, film-dizi izlerken oynatma ve bilgi paneline, menüdeyken liste gezinmesine otomatik uyarlanıyor.
Fiziksel kumanda tuşlarıyla çalışan hızlı kanal değiştirme (zapping) çubuğu ve yayın bilgisi
Fiziksel kumanda tuşlarıyla çalışan hızlı kanal değiştirme (zapping) çubuğu ve yayın bilgisi

Böylece ek bir kumanda veya kablosuz klavye almadan, 13 yıllık eski bir kumandayla modern bir akıllı televizyondan bile daha pratik bir TV deneyimi elde ettim.

Uygulamayı nasıl geliştirdim?

Uygulamayı Android Studio ve Gradle tabanlı bir Android projesi olarak hazırladım; arayüzde Java ve XML kullandım. Kanal listeleri için AndroidX RecyclerView, görüntü/ses oynatma için Android Media3/ExoPlayer, internet istekleri için OkHttp, veri düzenleme için Gson, kanal logoları için Glide kullandım.

Uygulamanın ana ekran olarak seçilebilmesi için Android TV'nin HOME ve LEANBACK özelliklerinden yararlandım; böylece Mi Stick'in kumandasındaki yön tuşlarıyla her ekranda doğal bir TV kullanımı elde ettim.

Kablosuz geliştirme akışım şöyleydi:

  1. Mi Stick'i Wi-Fi üzerinden bul
  2. adb connect <Mi Stick yerel IP adresi>:5555
  3. APK'yı yükle ve uygulamayı çalıştır
  4. TV karşısında kumanda ile test et
  5. Logları ve ekranı kontrol edip düzelt

Bu sayede her denemede USB kablosu takıp çıkarmadım; uygulamayı bilgisayardan televizyona kablosuz gönderip sonucu doğrudan TV ekranında gördüm.

Uygulamada yaptığım bölümler

Kişisel ana ekran

Ana ekranda TV, filmler, diziler, radyolar, YouTube, Play Store ve Spotify bölümleri var. Seçili bölüm belirgin renkle gösteriliyor; koyu arka plan, büyük yazılar ve sade simgeler televizyon izleme mesafesine göre tasarlandı. Alt menünün sırasını da kullanım şeklime göre düzenledim, böylece en sık kullandığım bölümlere birkaç tuşla ulaşıyorum.

Canlı TV yayını üzerinde açılan kişisel ana ekran dock menüsü
Canlı TV yayını üzerinde açılan kişisel ana ekran dock menüsü

Canlı TV ve Akıllı Liste

Yayın listesini olduğu gibi göstermek yerine kanalları temizleyip kategorilere ayırdım: Akıllı Liste, Tüm Kanallar, Yedek TV, Ulusal, Haber, Spor, Belgesel, Çocuk, Sinema, Müzik, Dini, Yerel. Asıl yayın sağlayıcım olan Xtream listemdeki kanallarla IPTV.org üzerindeki açık kaynak yayınları burada dengeli biçimde birleştirdim; Akıllı Liste'de aynı kanalın farklı kalite ve yedek yayın kayıtlarını tek bir anlaşılır sırada topladım; kanal numarası, logo ve kanal adı aynı satırda görünüyor.

Akıllı liste, kanal numaraları, logolar ve favorilerle kategorize edilmiş sol kanal rehberi
Akıllı liste, kanal numaraları, logolar ve favorilerle kategorize edilmiş sol kanal rehberi

Kumandada aşağı-yukarı tuşlarıyla geziniyor, OK ile kanalı açıyor, geri tuşuyla menüden çıkıyorum. Sık izlediğim kanalları favoriye ekleyip favoriler içinde ayrıca sıralayabiliyorum.

Film ve dizi bölümü

Canlı yayınların yanına film ve diziler için ayrı menüler ekledim. Film posterleri, dizi bilgileri, sezonlar ve bölümler aynı uygulamanın içinde açılıyor; TV izlemekten filme geçmek için uygulama değiştirmiyorum.

Filmler (VOD) kataloğu ve Cinemeta üzerinden çekilen IMDb puanlama kartları
Filmler (VOD) kataloğu ve Cinemeta üzerinden çekilen IMDb puanlama kartları

Bir kart üzerine gelindiğinde, uygulama temizlenmiş başlığı Cinemeta'nın Stremio API'sinde arıyor; sonuçtan IMDb kimliğini ve imdbRating alanını alarak IMDb puanını, özetini, yılını, türlerini ve uygun arka plan görselini gösteriyor. Sonuçlar bellekte önbelleğe alındığı için aynı başlık tekrar seçildiğinde ekran daha hızlı güncelleniyor. Ayrıca film ve dizilerin açıklamaları, konu özetleri ve detay bilgileri sisteme otomatik olarak çekilip Türkçeleştiriliyor; böylece yabancı yapımlarda dahi TV ekranında akıcı Türkçe açıklamalar yer alıyor.

Teknik bir ayrıntı: uygulama IMDb sayfasını kazımıyor veya puan uydurmuyor; puanı Cinemeta'nın IMDb bağlantılı metadata alanından alıyor. Film ve dizi için ayrı arama uçları kullanılıyor; dizi aramasında film kataloğuna düşüp yanlış eşleşme olmaması için başlık temizleme, sonuç başlığı karşılaştırması ve içerik türü ayrımı uyguluyorum. Bu, örneğin "Kurtlar Vadisi" gibi dizilerde başka bir yapımın puanının gösterilmesi riskini azaltıyor.

Diziler menüsü ve kumandadan 0-9 tuşlarıyla çalışan Türkçe T9 arama ekranı
Diziler menüsü ve kumandadan 0-9 tuşlarıyla çalışan Türkçe T9 arama ekranı

Radyo oynatıcısı

Radyo bölümünde istasyon adı, logo, yayın bilgisi ve hareketli bir ses görselleştirmesi var; istasyonları listeleyip sıralayabiliyorum. Bu sayede televizyonu sadece görüntü için değil, müzik veya radyo dinlemek için de kullanabiliyorum.

Hareketli ses görselleştirmesi ve radyo istasyonu bilgileriyle radyo oynatıcı ekranı
Hareketli ses görselleştirmesi ve radyo istasyonu bilgileriyle radyo oynatıcı ekranı

YouTube ve diğer uygulamalar

Mi Stick üzerinde zaten bulunan YouTube, Spotify ve Play Store'u kaldırmak yerine kendi ana ekranıma bağladım; kişisel TV menüm ile hazır Android TV uygulamaları birlikte çalışıyor.

IPTV altyapısı, Xtream entegrasyonu ve yayın dayanıklılığı

Uygulamanın ana yayın omurgasını kullanıcı adı ve şifremle bağlandığım kişisel IPTV (Xtream Codes API) aboneliğim oluşturuyor. IPTV.org ise bu yapıyı destekleyen açık kaynaklı ikinci/yedek yayın sağlayıcısı olarak devrede. Sistem, açılışta önce son başarılı veriyi önbellekten hızlıca getiriyor; ardından arka planda ağ üzerinden güncel kanal, kategori ve akış bilgilerini yenileyerek önbelleği tazeliyor. Böylece sağlayıcı tarafında yeni bir kanal, radyo veya içerik eklendiğinde kanal ekranı APK güncellemesi gerekmeden kendiliğinden güncelleniyor.

Ayrıca aynı kanalın FHD, HD, SD gibi farklı kalite seçeneklerini veya iki kaynak arasındaki alternatif kayıtlarını listeyi şişirmeden tek bir kanal başlığı altında topluyorum.

Gerçek cihazda bazı yayınların geç açıldığını, bazılarında siyah ekran kaldığını veya bağlantının veri göndermediğini gördüm. Bu yüzden oynatıcıyı "linki aç" seviyesinde bırakmadım:

  • Birincil yayından yanıt gelmezse veya akış koparsa aynı kanalın alternatif kaydını ya da yedek IPTV.org akışını devreye alıyor.
  • Kanal değiştirirken önceki oynatmayı temizleyip yenisini daha sağlıklı başlatıyor.
  • Doğrudan TS akışını önceliklendiriyor; m3u8 rotası uygun yanıt vermediğinde alternatif akış biçimine geçiyor.
  • Ses ve görüntü zamanlamasını Mi Stick'in donanım oynatıcısına uygun hale getirdim.

CNN Türk, Haber Global, TGRT, KRT, TELE1 ve Flash Haber gibi farklı ulusal ve haber yayınlarını arka arkaya test ettim; asıl sağlayıcıda anlık bir kesinti veya takılma olduğunda uygulamanın yedek kaynağa geçerek yayını sürdürebildiğini doğruladım.

Kumanda ve gerçek kullanım testleri

Uygulamanın dokunmatik ekran için değil, elimdeki eski TV kumandası için tasarlanması en önemli gereksinimimdi. Şu akışları gerçek cihaz üzerinde test ettim:

  • sol tuşla canlı TV rehberini açma
  • kategori listesinde uzun süre aşağı gezinme
  • kategori ile kanal listesi arasında sağ-sol geçiş
  • OK ile kanal açma
  • kanal numarasını doğrudan tuşlama
  • geri tuşuyla ekranları kapatma
  • ana ekrandan YouTube, Spotify ve Play Store'a geçme

Ayrıca rakam tuşlarıyla kanal numarası girmeyi, IPTV aramasında çok basmalı Türkçe klavye kullanımını ve YouTube arama alanına kumandayla yazı yazmayı denedim. Böylece ikinci bir kumanda veya kablosuz klavye taşıma ihtiyacı kalmadı.

Test sırasında kategori menüsünün 10 saniye sonra kapanıp aşağı tuşunu kanal değiştirme olarak algıladığını fark ettim; menüde her hareket edildiğinde bekleme süresini yenileyecek şekilde düzelttim. Son testte 12 aşağı hareket boyunca odak kategori listesinde kaldı ve kanal değiştirme tetiklenmedi.

TV ile haberleşme

Televizyonum Philips 47PFL7008K/12 olduğu için Philips'in EasyLink/HDMI-CEC yaklaşımını da kullandım. TV kontrol ekranında bağlantı durumu, ses seviyesi ve Ambilight bilgisi görülebiliyor; televizyonun desteklediği durumlarda ses, mute ve Ambilight işlevlerine uygulama içinden erişilebiliyor. Bunun için TV'yi bilgisayara bağlayan özel bir donanım kullanmadım; Mi Stick'in ağ bağlantısından ve TV'nin kendi ağ/CEC yeteneklerinden yararlandım.

Sonuç: fikirden çalışan ürüne

Bu proje sayesinde eski bir televizyonu değiştirmeden, Xiaomi Mi TV Stick üzerinden kişisel bir akıllı TV sistemine dönüştürdüm. Önce stick'i gereksiz uygulamalardan temizledim, ardından yapay zekâ ile birlikte launcher'ı geliştirip canlı TV, radyo, film, dizi ve günlük uygulamaları tek bir ekranda topladım. Xtream IPTV ve yedek yayın listelerinin otomatik yenilenmesi, dizi ve film açıklamalarının Türkçeleştirilerek sunulması, eski Philips kumandasının bağlama duyarlı çalışması ve aynı kumandadan Türkçe metin girilebilmesi projenin ayırt edici tarafları oldu.

Bu, benim için sadece bir Android uygulaması yazmak değildi. Gerçek donanımı tanımayı, kablosuz ADB ile cihaza bağlanmayı, cihazı sadeleştirmeyi, eski bir kumandayı akıllı TV kumandasına dönüştürmeyi, rakam tuşlarından Türkçe klavye yapmayı ve gerçek yayın sorunlarını test ederek çözmeyi, yapay zekâ destekli uçtan uca bir süreçte gerçekleştirdim. Şimdi TV'yi açtığımda ne izleyeceksem ona daha hızlı ulaşıyor ve bütün sistemi tek kumandayla kullanabiliyorum.

Verimlilik üzerine

Bu proje küçük ve kişisel görünse de aslında daha büyük bir konuya işaret ediyor: yapay zekânın asıl değeri sadece yeni ürünler üretmek değil, var olan kaynakları daha verimli kullanabilmek. Elimde duran 2013 model bir televizyon ve ucuz bir TV Stick'i, sıfırdan yeni bir cihaz almadan, aylarca sürecek bir öğrenme eğrisine girmeden, kısa sürede işlevsel bir ürüne dönüştürebildim. Bu, hem zaman hem donanım hem de üretim kaynağı açısından bir verimlilik kazanımı.

Aynı mantık aslında her alana uygulanabilir: elde var olan donanımı, veriyi veya süreci sıfırdan değiştirmek yerine yapay zekâ desteğiyle yeniden değerlendirmek. Yeni bir cihaz üretmek, yeni bir sunucu almak, yeni bir ekip kurmak yerine, mevcut kaynağı akıllı bir yazılım katmanıyla dönüştürmek; hem maliyeti hem de kaynak tüketimini azaltıyor. Benim durumumda bu, çöpe gitmeyi bekleyen bir TV Stick'in elektronik atık olmaktan çıkıp yıllarca daha kullanılabilir hale gelmesi anlamına geldi.

Bunun bir başka boyutu da erişilebilirlik. Daha önce bu kapsamda bir Android TV uygulaması geliştirmek, gömülü sistemler, erişilebilirlik servisleri ve donanım entegrasyonu konusunda ciddi bir uzmanlık gerektirirdi. Yapay zekâ, bu teknik eşiği bireysel bir kullanıcının erişebileceği bir seviyeye indirdi. Asıl yenilikçi olan kısım da burada: yapay zekâ, uzman olmayan birinin elindeki eski donanımı, profesyonel bir üretim ekibi olmadan kullanılabilir bir ürüne dönüştürmesine izin veriyor.

Sonuç olarak bu proje bana şunu gösterdi: yapay zekâ ile verimlilik, büyük şirketlerin veri merkezlerinde veya devasa projelerde değil, ev kullanıcısının elindeki eski bir televizyonda da karşımıza çıkabiliyor. Daha az kaynakla, daha az atıkla ve daha kısa sürede, gerçekten kullanılabilir bir sonuç üretmek mümkün.