Mobil uygulamalarda Picture-in-Picture — nedir, nasıl çalışır ve nerede kullanılır

Yazar: IT Sectr Yayınlanma: 2026-05-25 Okuma süresi: 9 dk

Picture-in-Picture (PiP), videoyu diğer uygulamaların üzerinde kayan bir pencerede gösteren bir oynatma modudur ve kullanıcının uygulamayı küçültürken veya programlar arasında geçiş yaparken izlemeye devam etmesini sağlar. PiP penceresi otomatik olarak ekranın bir köşesine konumlanır ve kullanıcı tarafından taşınabilir. Apple AVPictureInPictureController belgelerine (2026) göre, PiP modu iOS sürüm 14'ten itibaren ve Android sürüm 8.0'den itibaren desteklenmektedir.

Önemli Noktalar

  • Picture-in-Picture — çoklu görev izleme için diğer uygulamaların üzerinde kayan video penceresi
  • iOS PiP iOS 14'ten itibaren AVPictureInPictureController ve AVPlayer aracılığıyla kullanılabilir
  • Android PiP Android 8.0'den itibaren supportsPictureInPicture parametresi ile Activity'de PIP modu aracılığıyla kullanılabilir
  • Sınırlamalar: PiP penceresi sabit boyuttadır ve etkileşimli UI öğelerini desteklemez
  • Kullanım alanları — görüntülü arama, canlı yayın, eğitim platformları, arka planda video

Picture-in-Picture nedir?

Picture-in-Picture (PiP), içeriği diğer tüm pencerelerin ve uygulamaların üzerinde kalan küçük bir kayan pencerede gösteren bir video görüntüleme modudur. Kullanıcı PiP penceresini ekranda hareket ettirebilir, boyutunu değiştirebilir (bazı platformlarda) ve diğer uygulamalarda çalışırken içeriği izlemeye devam edebilir.

PiP kavramı televizyondan gelir: 1990'larda TV'ler ekranın bir köşesinde ikinci bir kanal gösterebiliyordu. Mobil cihazlarda PiP ilk olarak iPad'de iOS 9 (2015) ile Safari videoları için ortaya çıkarken, uygulamalar için tam sistem PiP'i iOS 14'te (2020) kullanılabilir oldu. Android'de PiP desteği daha erken geldi — sürüm 8.0 Oreo'da (2017), ancak yalnızca video için ve Android 12'den itibaren tüm içerik türleri için.

PiP, arka plan oynatmadan farklıdır çünkü video yalnızca ses akışında değil, ekranda görüntülenmeye devam eder. Arka plan ses oynatma her iki platformda da mevcuttur, ancak PiP kullanıcıya içerik üzerinde görsel kontrol sağlar: kareleri görebilir, duraklatabilir, geri sarabilir veya pencereyi kapatabilir. Bu, görsel içeriğin ses kadar önemli olduğu video eğitimleri, canlı yayınlar ve görüntülü aramalar için özellikle önemlidir.

PiP nasıl çalışır?

Mimari olarak PiP, daha düşük görüntüleme önceliğine sahip ayrı bir pencere oluşturan bir sistem pencere yöneticisi aracılığıyla uygulanır. Uygulama, video çıktısını, uygulama arka plana geçtikten veya küçültüldükten sonra bile video oluşturmaya devam eden bir sistem hizmetine devreder.

PiP oturumu yaşam döngüsü

Süreç, kullanıcının etkin video içeren uygulamayı küçültmesi veya PiP düğmesine basması (iOS'ta) ya da sistemin Activity'yi otomatik olarak PiP moduna geçirmesiyle (Android'te) başlar. Sistem pencere yöneticisi video akışını yakalar ve sabit oranlarda kayan bir pencere oluşturur. Pencere boyutu, orijinal video en boy oranına ve platform kısıtlamalarına bağlıdır: iOS'ta PiP penceresi ekran genişliğinin yaklaşık 1/6–1/4'ünü kaplar; Android'te mobil cihazlar için genişlikte 108 dp ve yükseklikte 240 dp'den az olmamalıdır.

PiP penceresi etkinken, uygulama üç durumdan birinde olabilir: arka planda (küçültülmüş), etkin durumda (kullanıcı uygulamaya döndü) veya bekleme durumunda (sistem kaynak yetersizliği nedeniyle PiP'i duraklattı). PiP'e geçiş sırasında, uygulama gereksiz UI işlemlerini (animasyonlar, arayüz oluşturma) duraklatmalı ve belleği serbest bırakmalıdır, çünkü çoklu görev modunda sistem kaynakları daha sıkı tahsis edilir. iOS, uygulamaya otomatik olarak AVPictureInPictureControllerWillStartNotification gönderirken, Android onPictureInPictureModeChanged geri çağrısını gönderir.

PiP modu sınırlamaları

PiP penceresinin önemli sınırlamaları vardır: standart UI kontrol öğelerini (duraklatma düğmesi, ilerleme çubuğu) görüntüleyemez — yalnızca temel kontrollerle (oynat/duraklat, kapat, tam ekrana genişlet) minimum sistem katmanı. Sistem PiP UI iOS'ta duraklatma ve kapatma düğmelerini içerirken, Android'te aynı öğeler artı ek bir ayarlar düğmesi içerir. PiP içindeki içerikle etkileşim (geri sarma, altyazı seçme) mümkün değildir — bunun için uygulamanın tam ekrana genişletilmesi gerekir.

iOS'ta PiP: uygulama ve sınırlamalar

iOS'ta PiP, AVKit çerçevesi ve AVPictureInPictureController sınıfı aracılığıyla uygulanır. Bu API, iPhone ve iPad için iOS 14+ üzerinde kullanılabilir, ancak farklı gereksinimlerle: iPad'de PiP, AVPlayerLayer aracılığıyla çalışır; iPhone'da ise yalnızca AVPlayerViewController aracılığıyla.

iOS'ta PiP için gereksinimler

iOS'ta PiP'in çalışması için birkaç koşulun karşılanması gerekir: uygulama video oynatma için AVPlayer kullanmalı, ses oturumu .playback veya .playAndRecord kategorisine ayarlanmalı ve uygulamanın arka plan sesi için yetkilendirmeleri (UIBackgroundModes = audio) olmalıdır. Bu ayarlar olmadan PiP başlamaz — sistem, arka plana geçişten sonra doğru oynatmayı garanti edemediği için PiP oturum isteğini reddedecektir.

iOS'ta, video etkin bir şekilde oynatılıyorsa ve kullanıcı bu özelliği ayarlardan devre dışı bırakmamışsa, uygulama küçültüldüğünde PiP penceresi otomatik olarak görünür. Kullanıcı, AVPlayerViewController'daki düğme aracılığıyla videoyu manuel olarak PiP'e küçültebilir. iOS'ta PiP penceresinin boyutu sabittir ve sistem tarafından belirlenir — geliştirici bunu değiştiremez. PiP penceresinin en boy oranı orijinal videonun oranıyla eşleşir, ancak maksimum boyut iPhone'da ekran genişliğinin 1/4'ü ve iPad'de 1/3'ü ile sınırlıdır.

iOS PiP sınırlamaları

iOS'ta PiP'in ana sınırlamaları: PiP penceresinde özel UI imkansızlığı, aynı anda tek PiP akışı ve PiP'in çalışması için etkin AVPlayer gerekliliği. Çoklu PiP — birden çok PiP penceresinin aynı anda oynatılması — iOS'ta desteklenmez. İkinci bir PiP başlatma girişiminde ilki otomatik olarak kapanır. Bu bir donanım sınırlamasıdır: video işlemcisi, DMA ve video belleği kısıtlamaları nedeniyle aynı anda iki bağımsız PiP kanalını yönetemez.

Bir diğer önemli sınırlama, arka plan oynatma süresidir. Kullanıcı PiP penceresiyle etkileşime girmezse, sistem enerji tasarrufu için bir süre sonra oynatmayı duraklatabilir. iOS'ta otomatik PiP duraklatması, uygulama bir arka plan görevi aracılığıyla keep-alive mekanizması uygulamadıysa 10–15 dakikalık hareketsizlikten sonra gerçekleşir. Görüntülü aramalar ve canlı yayınlar için, bu sınırlamayı aşan PushKit ve VoIP sertifikalarının kullanılması önerilir.

Android'te PiP: uygulama ve sınırlamalar

Android'te PiP, enterPictureInPictureMode yöntemi aracılığıyla etkinleştirilen yerleşik bir Activity modu olarak uygulanır. Android 8.0'den (API 26) itibaren herhangi bir Activity PiP moduna girebilir ve Android 12'den (API 31) itibaren MediaCodec kullanmadan SurfaceView ve TextureView için PiP desteği mevcuttur.

Bildirim dosyası yapılandırması

Android bildiriminde PiP'i desteklemek için, bölümünde Activity için android:supportsPictureInPicture özelliği belirtilmelidir. Bu özellik olmadan sistem PiP geçişine izin vermez. Ayrıca, PiP geçişi sırasında pencere boyutu değiştiğinde Activity'nin yeniden oluşturulmaması için android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" belirtilmesi önerilir. Temel PiP'in çalışması için derlemenin targetSdkVersion >= 26 (Android 8.0) olması gerekir.

Android'te PiP penceresinde varsayılan olarak hiçbir kontrol öğesi bulunmaz. Geliştirici, setPictureInPictureParams yönteminde RemoteAction aracılığıyla özel eylemler ekleyebilir. 3 eyleme kadar kullanılabilir (örneğin: duraklat/oynat, geri/ileri sar, kapat). Her eylem, sistem PiP katmanında bir simge olarak görünür. Tüm UI öğelerinin kesinlikle sabit olduğu iOS'un aksine, Android temel kontroller için daha fazla esneklik sunar.

Farklı sürümlere uyum

Android'te PiP, işletim sistemi sürümüne bağlı olarak farklı yeteneklere sahiptir. Android 8.0–8.1'de PiP yalnızca SurfaceView ile MediaPlayer veya MediaCodec aracılığıyla oynatılan videolar için kullanılabilir. Android 9'dan itibaren PiP penceresinin en boy oranını yapılandırmak için PictureInPictureArgs.Builder kullanılabilir. Android 12, özel SurfaceView ve TextureView için PiP desteğinin yanı sıra tam ekran ve PiP modu arasında iyileştirilmiş geçişler ekledi. Android 13+, uygulamanın uygun izni varsa kilitli ekranda bile PiP penceresinin görüntülenmesine izin verir.

Android SürümüPiP YetenekleriAPI
8.0–8.1MediaPlayer/MediaCodec için temel PiP26–27
9–11En boy oranı yapılandırması, özel eylemler28–30
12SurfaceView/TextureView PiP desteği31
13+Kilit ekranında PiP, iyileştirilmiş animasyonlar33+

Android PiP'in temel farkı iOS'a kıyasla çoklu PiP yeteneğidir. Android 12+'da, uygulamalar destekliyorsa ve cihaz performansı izin veriyorsa sistem birden çok PiP penceresini aynı anda görüntüleyebilir. Ancak pratikte, çoklu PiP SoC yetenekleriyle sınırlıdır: çoğu cihaz, donanım kod çözücü sınırlamaları nedeniyle yalnızca bir PiP penceresini destekler çünkü her PiP penceresi kendi video akışını ve ayrı bir kod çözme oturumunu gerektirir.

PiP kod örnekleri

Son API değişikliklerini dikkate alarak her iki mobil platformda PiP'in pratik uygulamasına bakalım.

iOS'ta AVPictureInPictureController ile PiP

swift
import AVKit
import AVFoundation

class VideoPlayerViewController: UIViewController {
    var player: AVPlayer!
    var pipController: AVPictureInPictureController?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.videoGravity = .resizeAspect
        view.layer.addSublayer(playerLayer)
        
        guard AVPictureInPictureController.isPictureInPictureSupported()
        else { return }
        
        pipController = AVPictureInPictureController(playerLayer: playerLayer)
        pipController?.delegate = self
    }
    
    @IBAction func startPiPTapped() {
        pipController?.startPictureInPicture()
    }
}

extension VideoPlayerViewController: AVPictureInPictureControllerDelegate {
    func pictureInPictureControllerWillStart(
        _ pictureInPictureController: AVPictureInPictureController
    ) {
        // UI öğelerini gizle, belleği serbest bırak
    }
    
    func pictureInPictureControllerDidStop(
        _ pictureInPictureController: AVPictureInPictureController
    ) {
        // UI'yı geri yükle, oluşturmayı sürdür
    }
}

Bu örnekte, AVPictureInPictureController, isPictureInPictureSupported kontrol edildikten sonra playerLayer ile başlatılır (PiP, iPhone SE 1. nesil ve yeterli belleği olmayan bazı iPad'lerde desteklenmez). Temsilci, uygulamaya PiP'in başlangıcı ve bitişi hakkında bilgi verir — bu geri çağrılarda UI öğeleri gizlenmeli ve geri yüklenmelidir, çünkü PiP modunda uygulama arayüzü görünmez. PiP'e geçiş yaparken, sistemin uygulamayı zorla kaldırmasını önlemek için tüm animasyonların durdurulması, oynatıcı kontrollerinin gizlenmesi ve kullanılmayan belleğin serbest bırakılması önerilir.

Android'te PictureInPictureParams ile PiP

kotlin
class PipVideoActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setupVideoPlayer()
    }
    
    private fun enterPipMode() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val aspectRatio = Rational(16, 9)
            
            val pipParams = PictureInPictureParams.Builder()
                .setAspectRatio(aspectRatio)
                .setAutoEnterEnabled(true)
                .build()
            
            enterPictureInPictureMode(pipParams)
        }
    }
    
    override fun onPictureInPictureModeChanged(
        isInPictureInPictureMode: Boolean,
        newConfig: Configuration
    ) {
        if (isInPictureInPictureMode) {
            // UI'yı gizle, yalnızca medyaya odaklan
            binding.controlsGroup.visibility = View.GONE
        } else {
            // UI'yı geri yükle
            binding.controlsGroup.visibility = View.VISIBLE
        }
    }
}

Kotlin örneği, PiP'i yapılandırmak için PictureInPictureParams.Builder kullanır. setAspectRatio yöntemi PiP penceresinin en boy oranını ayarlar (tipik video için 16:9). setAutoEnterEnabled(true), uygulama küçültüldüğünde otomatik PiP geçişini etkinleştirir. onPictureInPictureModeChanged geri çağrısı PiP'e giriş ve çıkışta çağrılır — burada UI öğeleri gizlenmeli veya gösterilmelidir. SurfaceView'daki video için, PiP modu geçişi sırasında Activity'nin yeniden oluşturulmasını önlemek amacıyla bildirime android:configChanges="screenSize|smallestScreenSize" eklenerek ek yapılandırma işleme gereklidir.

Picture-in-Picture ne zaman kullanılır

PiP, içeriğin diğer görevlere geçildiğinde bile alakalı kaldığı uygulamalarda kullanıcı deneyimini iyileştirmek için güçlü bir araçtır. Ancak PiP uygulaması gerekçelendirilmeli ve kullanıcının dikkatini dağıtmamalıdır.

En uygun senaryolar

Görüntülü aramalar ve konferanslar PiP'in ana senaryolarından biridir. Zoom, FaceTime, Google Meet'te PiP, kullanıcının diğer uygulamalarda çalışırken (not okuma, sunum izleme veya e-posta kontrol etme) muhatabını görmesini sağlar. Görüntülü aramalar için PiP, arka planda kamera desteği ve arka planda ses yakalamaya devam etmek için doğru ses oturumu yapılandırması gerektirir. iOS'ta bu, AVPlayerLayer yerine AVSampleBufferDisplayLayer kullanılarak yapılır çünkü görüntülü aramalar AVPlayer kullanmaz.

Akış hizmetleri (YouTube, Netflix, Twitch), yeni içerik ararken izlemeye devam etmek için PiP'i aktif olarak kullanır. YouTube Premium, PiP'i ücretli bir özellik olarak sunar ve Netflix de içerik lisanslama kısıtlamaları nedeniyle PiP'i belirli abonelik planlarıyla sınırlar. Bir akış uygulamasında PiP uygulamak için, PiP modunda güvenli bir işlem hattını destekleyen bir DRM sistemi (FairPlay, Widevine) ile entegrasyon gerekir.

PiP'in gerekli olmadığı durumlar

PiP, kullanıcı etkileşimi gerektiren etkileşimli video içeriğine sahip uygulamalar için uygun değildir: oynatıcı içinde testler bulunan eğitim platformları, sohbetli oyun yayınları, videoda ürün bağlantıları olan alışveriş uygulamaları. Bu durumlarda, PiP penceresi ek bilgi görüntülemek için çok küçüktür ve etkileşimli öğeler PiP içinde desteklenmez. Önerilen, PiP'i yalnızca içerikle etkileşim gerekmediğinde pasif izleme için kullanmaktır.

Müzik ve podcast uygulamaları için PiP gereksizdir — görsel pencere olmadan arka plan sesi yeterlidir. PiP, kayan bir pencerede video oluşturmak için ek GPU kaynakları tüketir ve pil ömrünü kısaltır. İçerik ses tabanlıysa (müzik, podcast, sesli kitaplar) — PiP'siz arka plan oynatma kullanın. Görselse — kullanıcı deneyimini iyileştirmek için PiP uygulayın.

Sıkça Sorulan Sorular

iPhone'umda PiP neden çalışmıyor?

iOS'ta PiP, iPhone 6s+, iOS 14+ ve desteklenen bir bölge (ABD, Kanada, Avustralya, AB, Rusya ve diğerleri) gerektirir. Uygulamanın ses oturumunu .playback kategorisine yapılandırması ve UIBackgroundModes = audio eklemesi gerekir. Ayarları da kontrol edin: Ayarlar > Genel > Resim içinde Resim.

PiP penceresinin boyutu özelleştirilebilir mi?

iOS'ta PiP penceresinin boyutu tamamen sistem tarafından belirlenir ve geliştirici tarafından yapılandırılamaz. Android'te, PictureInPictureParams.Builder'da setAspectRatio aracılığıyla yalnızca en boy oranı ayarlanabilir, ancak kesin pencere boyutunu sistem belirler. Kullanıcı, Android 12+'da kıstırma hareketiyle PiP penceresinin boyutunu değiştirebilir.

PiP, DRM içeriğiyle çalışır mı?

Evet, PiP, DRM oturumu PiP modunda güvenli bir işlem hattını destekliyorsa, DRM korumalı içerikle (iOS'ta FairPlay, Android'te Widevine L1) çalışır. Widevine L3, kayan bir pencerede kodu çözülmüş içeriğin güvenliğini garanti etmediği için PiP'i desteklemeyebilir. Test aşamasında DRM'nin PiP ile uyumluluğunu kontrol edin.

Aynı anda kaç PiP penceresi açılabilir?

iOS'ta — yalnızca bir PiP penceresi. Android 12+'da teorik olarak çoklu PiP desteklenir, ancak pratikte çoğu cihaz donanım kısıtlamaları nedeniyle bir pencereyle sınırlıdır. Üst düzey cihazlar (Samsung Galaxy S24, Pixel 8) 2 PiP penceresini destekleyebilir, ancak düşük performansla.

PiP sırasında yaşam döngüsünü yönetmek gerekli mi?

Evet, yaşam döngüsü yönetimi kritik derecede önemlidir. iOS'ta PiP'e geçiş yaparken uygulama, UI'nin gizlenmesi ve belleğin serbest bırakılması gereken willStart bildirimi alır. Android'te PiP'e giriş/çıkışta onPictureInPictureModeChanged çağrılır. Doğru yaşam döngüsü yönetimi olmadan sistem, uygulamayı bellekten kaldırarak oynatmayı kesintiye uğratabilir.

Özet

  • Picture-in-Picture — çoklu görev modunda diğer uygulamaların üzerinde video izlemek için kayan pencere
  • iOS'ta PiP, AVPlayerLayer ve ses oturumu .playback ile AVPictureInPictureController aracılığıyla uygulanır
  • Android'te PiP, PictureInPictureParams.Builder ile enterPictureInPictureMode aracılığıyla uygulanır
  • Sınırlamalar: tek PiP akışı, sabit pencere boyutu, PiP içinde özel UI yok
  • Yaşam döngüsü PiP'te UI öğelerini gizleme ve kaldırmayı önlemek için bellek serbest bırakma gerektirir
  • Ana kullanımlar — görüntülü aramalar, akış, eğitim videoları, gezinme sırasında içerik izleme
  • PiP kullanmayın ses içeriği için (arka plan sesi yeterlidir) veya UI öğeleri olan etkileşimli videolar için

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun