Android Uygulamalarında Akan(Streaming) Video
Android platformu uzaktaki videolar gibi medya dosyalarını uygulamalarınızda oynatabilmeniz için kullanabileceğiniz kütüphaneler sağlar. Bu yazıda uzaktan video akıtıp bunu VideoView bileşeni ile görüntüleyip MediaController nesnesi ilede kullanıcının videoyu kontrol edebilmesini sağlayacağız.
Ayrıca videoyu MediaPlayer sınıfını kullanarak sunma süreci üzerindende kısaca geçeceğiz. Android için bir müzik çalar yaratma serisini tamamladıysanız, onu daha da geliştirmek için bu yazıda öğrendiklerinizi kullanabilirsiniz. Daha önce birkaç Android uygulaması geliştirdiyseniz bu eğitimi tamamlayabilmeniz kolay olacaktır.
1. Yeni Bir Uygulama Oluşturun
Bu yazıdaki kodu, üzerinde çalıştığınız mevcut bir uygulamayı geliştirmek için kullanabilir veya Eclipse veya Android Studio'da yeni bir uygulama oluşturabilirsiniz. Yeni bir Android projesi oluşturun, istediğiniz bir ismi verin, detayları ayarlayın ve buna ana başlangıç Activity sınıfını ve düzenini verin.
İlk olarak, akan medya için projenin manifest(manifesto)'sunu yapılandıralım. IDE'nizde projenizin manifest dosyasını açın ve XML düzenleme moduna geçin. Akış medyası için internet erişimine ihtiyacınız vardır, bu nedenle manifest öğesinin altına aşağıdaki izni ekleyin:
2. VideoView'ı Ekleyin
Android platformu video dosyalarını oynatabileceğiniz VideoView sınıfını sağlar. Ana düzen dosyasına bir tane ekleyelim:
İsterseniz ana düzeni kendi uygulamanıza uyacak şekilde düzenleyin. VideoView örneğine daha sonra tekrar ulaşabilmemiz bir id niteliği veriyoruz. Kendi tasarımınıza göre diğer düzen özelliklerini değiştirmeniz gerekebilir
Şimdi kodda VideoView örneğine(instance) bir referans alalım. Uygulamanızın ana Activity sınıfını açın ve aşağıdaki destek dosyalarını ekleyin:
Activity sınıfınız, içerik görünümünün ayarlandığı bir onCreate yöntemi zaten içermelidir:
setContentView satırından sonra, XML düzeninde ayarladığımız id'yi kullanarak VideoView örneğine aşağıdaki gibi bir referans alalım:
3. Video Dosyasının Akıtılması
Artık uygulamaya bir video dosyası akıtabiliriz. Bitiş noktası için URI'ı şu şekilde hazırlayın:
Akıtma yapmak istediğiniz video dosyası için elbette uzaktaki bir adresi kullanmanız gerekecektir. Buradaki örnek, İnternet Arşivinde bulunan genel kullanıma açık bir video dosyasıdır. VideoView nesnesine iletebilmek için adres string(dize)'ini URI olarak ayrıştırırız.
Şimdi oynatmaya başlayabilirsiniz.
Android işletim sistemi bir dizi video ve medya formatını desteklemektedir; her cihaz bunlarla beraber genellikle ek formatlarlarda desteklemektedir.
Geliştirici Kılavuzunda görebileceğiniz gibi desteklenen video dosya türleri, kullanılan türe ve kullanıcının hangi platform düzeyinde yüklediğine bağlı olarak 3GP, MP4, WEBM ve MKV'yi içerir.
Ses dosyası formatlarını olarakda standart olarak MP3, MID, OGG ve WAV desteği vardır. RTSP, HTTP ve HTTPS (Android 3.1'den) üzerinden Android'de medya akışını gerçekleştirebilirsiniz.
4. Oynatım Kontrollerinin Eklenmesi
Video oynatma işlemini gerçekleştirdik, ancak kullanıcı genel olarak alışık olduğu gibi bunu kontrol etmeyi isteyecektir. Yine, Android platformu MediaController sınıfı aracılığıyla bu bilindik etkileşim için kaynaklar sağlar.
Activity sınıfının onCreate yönteminde, VideoView'de start'ı çağırdığımız satırdan önce, sınıfın bir örneğini oluşturun:
Ardından, VideoView örneğini bağlantı noktası olarak kullanacak şekilde ayarlayın:
Sonra onu VideoView nesnesinin medya denetleyicisi olarak ayarlayın:
Şimdi uygulamayı çalıştırdığınızda, kullanıcı hızlı ileri ve geri sarma düğmeleri, oynat/duraklat düğmesi ve arama çubuğu kontrolü de dahil olmak üzere akan videonun oynatımını kontrol edebilecektir.
Arama çubuğunun sağinda medya dosyasının uzunluğu ve solunda şu andaki oynatma konumu bulunacaktır. Dosyadaki bir konuma atlamak için arama çubuğuna dokunmanın yanı sıra akış durumu kullanıcının YouTube veya benzeri sitelerden alışık olduğu şekilde gösterilir.
Uygulamayı çalıştırdığınızda göreceğiniz gibi varsayılan davranış kontrollerin bir kaç saniye sonra kaybolması ve kullanıcı ekrana dokunduğunda tekrar görünmesidir. MediaController nesnesinin davranışını çeşitli şekillerde değiştirebiliriz. Bunun bir örneği için Android için müzik çalar uygulaması oluşturma serisine bakınız. Uygulamanızın davranışını yapılandırmak için çeşitli dinleyiciler(listeners) ayarlayarak medya oynatımını dahada geliştirebilirsiniz.
5. MediaPlayer Kullanımı
Bitirmeden önce, müzik çalar serisini oluştururken kullandığımız için MediaPlayer sınıfını kullanarak video akışı için alternatif bir yol izleyelim. Surface view(Yüzey görünümü) kullanarak, video'da dahil olmak üzere, bir medyayı MediaPlayer nesnesine akıtabilirsiniz. Örneğin, aşağıdaki düzeni kullanabilirsiniz:
Activity sınıfının uygulanmasında SurfaceView'e atıfta bulunacağız.
Activity sınıfınızda aşağıdaki arabirimleri ekleyin:
IDE'niz bu uygulanmamış yöntemleri eklemenizi isteyecektir.
surfaceCreated ve onPrepared yöntemlerine eklemeler yapacağız.
Oynatmayı uygulamak için sınıfa aşağıdaki örnek değişkenlerini ekleyin:
Bu değişkenleri Activity'in onCreate yönteminde, düzene eklediğiniz SurfaceView nesnesini kullanarak başlatabilirsiniz:
surfaceCreated yönteminde, medya oynatma kaynaklarınızı ayarlayın:
Son olarak, onPrepared yönteminde oynatmayı başlatın:
Uygulamanızı çalıştırdığınızda, videonuz MediaPlayer örneğinde oynamalıdır.
Bu yazıda VideoView ve MediaPlayer sınıflarını kullanarak Android'de video akışının temellerini açıkladık. Örnek olarak oluşturduğumuz müzik çalar uygulamasına video veya akış medyası desteği ekleyerek burada oluşturduğumuz koda pek çok yenilik ekleyebilirsiniz. Android ile alakalı YouTube Android Player API'ı gibi kaynaklarada bakmak isteyebilirsiniz.