Android Uygulamalarına PictureInPicture Modu Ekleme

Elif Yurt
blutv
Published in
2 min readOct 4, 2021
Photo by Jakob Owens on Unsplash

Herkese merhaba! Bu yazımızda PictureInPicture(PIP) özelliğinin uygulamamıza nasıl ekleneceğini anlatacağım. PictureInPicture, video izlerken uygulamadan çıkmamız gerektiğinde oynatılan videonun geri planda küçük bir ekranda oynatılırken bir yandan da sizin başka bir uygulamayı kullanmanızı sağlar.

Öncelikle PictureInPicture özelliği, Android 8 ve üstündeki sürümler tarafından desteklenmektedir. Şimdi sırasıyla bu özelliği uygulamamıza eklememiz için gereken adımlara geçelim.

İlk adım PIP modunu ekleyeceğimiz Activity’nin AndroidManifest.xml dosyasında PIP olduğunu aşağıdaki gibi belirtmektir. Bu eklediğimiz satırlarla Activity’nin PIP modunda çalışabileceğini belirtmiş oluyoruz.

<activity android:name="VideoActivity"
android:supportsPictureInPicture="true"
android:configChanges=
"screenSize|smallestScreenSize|screenLayout|orientation"
...

Uygulamanın PIP moduna girmesi için enterPictureInPictureMode() methodunu çağırmalıdır. Bu methodu Activity içinde herhangi bir Click eventinde çağırarak uygulamayı PIP moduna alabiliriz. Kullanıcı uygulamadan çıkıp uygulamayı arka plana aldığında onUserLeaveHint() methodu çalışır. Bu methoda Activity’de override ederek ulaşıp methodunu enterPictureInPictureMode aşağıdaki gibi çağırabiliriz.

Activity PIP moduna girdiğinde veya çıktığında onPictureInPictureModeChanged methodunu çağırır. Bu methodu Activity’de override ederek PIP modunda kullanmayacağımız viewlerin görünürlüğünü GONE yapmak için kullanabiliriz.

Photo by Jakob Owens on Unsplash

Şimdi ise uygulama PIP modunda iken nasıl aksiyon ekleyeceğimize bakalım. Uygulamada PIP modunda girerken çağırdığımız enterPictureInPictureMode() fonksiyonunu PictureInPictureParams tipinden bir parametre alabilir. PictureInPictureParams parametresine ise RemoteAction tipinde bir aksiyon listesi ekleyebiliriz.

Yukarıda örnek bir RemoteAction tanımlamasını görüyoruz. RemoteAction 4 parametre alır: Icon, Title, ContentDescription, PendingIntent.

  • Icon: PIP ekranında göstermek istediğiniz iconun drawable idsi
  • Title: RemoteAction’ı temsil eden başlık
  • ContentDescription: RemoteAction içerik açıklaması.
  • PendingIntent: RemoteAction’ın aksiyon alması için gerekli olan Intent

RemoteAction ile PIP modundaki gelen aksiyonu karşılamak için BroadcastReceiver kullanırız. PIP moduna görmeden önce BroadcastReceiver tanımlamalı ve register işlemini yapmalıyız.

PictureInPictureParams’ı build ederken RemoteAction’a ek olarak setAspectRatio(Rational(16, 9)) methodu ile videonun ratiosunu ayarlayabiliriz, setAutoEnterEnabled(true) methodu ile de home tuşuna basıldığında ekran görünmez olduğunda ise uygulamayı PIP’e moduna alırız.

PIP modu ile herhangi bir işimiz kalmadığında ise BroadcastReceiver’dan unregister olmayı unutmamalıyız.

Bir sonraki yazımızda görüşmek üzere🖖🏻.

References

  1. https://developer.android.com/guide/topics/ui/picture-in-picture
  2. https://github.com/android/media-samples/tree/main/PictureInPicture

--

--