Picture-in-Picture σε εφαρμογές κινητών — τι είναι, πώς λειτουργεί και πού εφαρμόζεται

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-05-25 Χρόνος ανάγνωσης: 9 λεπ

Picture-in-Picture (PiP) — λειτουργία αναπαραγωγής βίντεο σε πλωτό παράθυρο πάνω από άλλες εφαρμογές, επιτρέποντας στον χρήστη να συνεχίσει την παρακολούθηση περιεχομένου κατά την ελαχιστοποίηση της εφαρμογής ή την εναλλαγή μεταξύ προγραμμάτων. Το παράθυρο PiP τοποθετείται αυτόματα στη γωνία της οθόνης και μπορεί να μετακινηθεί από τον χρήστη. Σύμφωνα με το Apple AVPictureInPictureController documentation (2026), η λειτουργία PiP υποστηρίζεται σε iOS από την έκδοση 14 και σε Android από την έκδοση 8.0.

Βασικά Σημεία

  • Picture-in-Picture — πλωτό παράθυρο βίντεο πάνω από άλλες εφαρμογές για πολυδιεργασιακή παρακολούθηση
  • iOS PiP διαθέσιμο από iOS 14 μέσω AVPictureInPictureController και AVPlayer
  • Android PiP διαθέσιμο από Android 8.0 μέσω λειτουργίας PIP σε Activity με παράμετρο supportsPictureInPicture
  • Περιορισμοί: το παράθυρο PiP έχει σταθερό μέγεθος και δεν υποστηρίζει διαδραστικά στοιχεία UI
  • Εφαρμογή — βιντεοκλήσεις, ροή, εκπαιδευτικές πλατφόρμες, βίντεο στο παρασκήνιο

Τι είναι το Picture-in-Picture;

Picture-in-Picture (PiP) είναι μια λειτουργία προβολής βίντεο σε ένα μικρό πλωτό παράθυρο που παραμένει πάνω από όλα τα άλλα παράθυρα και εφαρμογές. Ο χρήστης μπορεί να μετακινήσει το παράθυρο PiP στην οθόνη, να αλλάξει το μέγεθός του (σε ορισμένες πλατφόρμες) και να συνεχίσει την παρακολούθηση περιεχομένου ενώ εργάζεται σε άλλες εφαρμογές.

Η ιδέα του PiP προέρχεται από την τηλεόραση: ήδη από τη δεκαετία του 1990, οι τηλεοράσεις μπορούσαν να δείχνουν ένα δεύτερο κανάλι στη γωνία της οθόνης. Σε κινητές συσκευές, το PiP εμφανίστηκε για πρώτη φορά στο iPad με iOS 9 (2015) για βίντεο στο Safari, και το πλήρες λειτουργικό PiP για εφαρμογές έγινε διαθέσιμο στο iOS 14 (2020). Σε Android, η υποστήριξη PiP εμφανίστηκε νωρίτερα — στην έκδοση 8.0 Oreo (2017), αλλά μόνο για βίντεο, και από Android 12 για όλους τους τύπους περιεχομένου.

Το PiP διαφέρει από την αναπαραγωγή στο παρασκήνιο επειδή το βίντεο συνεχίζει να εμφανίζεται στην οθόνη και όχι απλώς να αναπαράγεται στη ροή ήχου. Αναπαραγωγή στο παρασκήνιο (background audio) είναι διαθέσιμη και στις δύο πλατφόρμες, αλλά το PiP δίνει στον χρήστη οπτικό έλεγχο πάνω στο περιεχόμενο: βλέπει καρέ, μπορεί να κάνει παύση, να γυρίσει πίσω ή να κλείσει το παράθυρο. Αυτό είναι ιδιαίτερα σημαντικό για μαθήματα βίντεο, ροές και βιντεοκλήσεις όπου το οπτικό περιεχόμενο είναι εξίσου σημαντικό με τον ήχο.

Πώς λειτουργεί το PiP;

Αρχιτεκτονικά, το PiP υλοποιείται μέσω του διαχειριστή παραθύρων συστήματος που δημιουργεί ένα ξεχωριστό παράθυρο με χαμηλότερη προτεραιότητα εμφάνισης. Η εφαρμογή αναθέτει την έξοδο βίντεο σε μια υπηρεσία συστήματος που συνεχίζει την απόδοση βίντεο ακόμα και αφού η εφαρμογή περάσει σε λειτουργία παρασκηνίου ή ελαχιστοποιηθεί.

Κύκλος ζωής συνεδρίας PiP

Η διαδικασία ξεκινά όταν ο χρήστης ελαχιστοποιεί την εφαρμογή με ενεργό βίντεο ή πατά το κουμπί PiP (σε iOS) ή το σύστημα μεταφέρει αυτόματα το Activity σε λειτουργία PiP (σε Android). Ο διαχειριστής παραθύρων συστήματος συλλαμβάνει τη ροή βίντεο και δημιουργεί ένα πλωτό παράθυρο με σταθερές αναλογίες. Το μέγεθος του παραθύρου εξαρτάται από την αναλογία διαστάσεων του αρχικού βίντεο και τους περιορισμούς της πλατφόρμας: σε iOS, το παράθυρο PiP καταλαμβάνει περίπου το 1/6–1/4 του πλάτους οθόνης, σε Android — τουλάχιστον 108 dp πλάτος και 240 dp ύψος για κινητές συσκευές.

Όταν το παράθυρο PiP είναι ενεργό, η εφαρμογή μπορεί να βρίσκεται σε μία από τρεις καταστάσεις: στο παρασκήνιο (ελαχιστοποιημένη), σε ενεργή κατάσταση (ο χρήστης επέστρεψε στην εφαρμογή) ή σε κατάσταση αναμονής (το σύστημα ανέστειλε το PiP λόγω έλλειψης πόρων). Κατά τη μετάβαση σε PiP, η εφαρμογή πρέπει να αναστείλει περιττές λειτουργίες UI (κινήσεις, απόδοση διεπαφής) και να ελευθερώσει μνήμη, καθώς οι πόροι συστήματος σε λειτουργία πολυδιεργασίας κατανέμονται πιο αυστηρά. Το iOS στέλνει αυτόματα στην εφαρμογή την ειδοποίηση AVPictureInPictureControllerWillStartNotification, και το Android — την επανάκληση onPictureInPictureModeChanged.

Περιορισμοί της λειτουργίας PiP

Το παράθυρο PiP έχει σημαντικούς περιορισμούς: δεν μπορούν να εμφανιστούν τυπικά στοιχεία ελέγχου UI (κουμπί παύσης, ρυθμιστικό προόδου) — μόνο μια ελάχιστη επικάλυψη συστήματος με βασικά στοιχεία: play/pause, κλείσιμο, επέκταση σε πλήρη οθόνη. Το UI συστήματος PiP σε iOS περιλαμβάνει κουμπί παύσης και κλεισίματος, και σε Android — τα ίδια στοιχεία συν ένα επιπλέον κουμπί ρυθμίσεων. Η αλληλεπίδραση με περιεχόμενο εντός του PiP (μεταπήδηση, επιλογή υποτίτλων) είναι αδύνατη — γι' αυτό πρέπει να ανοίξετε την εφαρμογή σε πλήρη οθόνη.

PiP σε iOS: υλοποίηση και περιορισμοί

Σε iOS, το PiP υλοποιείται μέσω του πλαισίου AVKit και της κλάσης AVPictureInPictureController. Αυτό το API είναι διαθέσιμο σε iOS 14+ για iPhone και iPad, αλλά με διαφορετικές απαιτήσεις: σε iPad το PiP λειτουργεί μέσω AVPlayerLayer, σε iPhone — μόνο μέσω AVPlayerViewController.

Απαιτήσεις για PiP σε iOS

Για τη λειτουργία PiP σε iOS πρέπει να πληρούνται αρκετές προϋποθέσεις: η εφαρμογή πρέπει να χρησιμοποιεί AVPlayer για αναπαραγωγή βίντεο, η συνεδρία ήχου πρέπει να ρυθμιστεί στην κατηγορία .playback ή .playAndRecord, και η εφαρμογή πρέπει να έχει δικαιώματα για ήχο παρασκηνίου (UIBackgroundModes = audio). Χωρίς αυτές τις ρυθμίσεις, το PiP δεν θα ξεκινήσει — το σύστημα θα απορρίψει το αίτημα δημιουργίας συνεδρίας PiP, καθώς δεν μπορεί να εγγυηθεί σωστή αναπαραγωγή μετά τη μετάβαση στο παρασκήνιο.

Σε iOS, το παράθυρο PiP εμφανίζεται αυτόματα κατά την ελαχιστοποίηση της εφαρμογής εάν το βίντεο αναπαράγεται ενεργά και ο χρήστης δεν έχει απενεργοποιήσει αυτή τη λειτουργία στις ρυθμίσεις. Ο χρήστης μπορεί επίσης να ελαχιστοποιήσει χειροκίνητα το βίντεο σε PiP μέσω του κουμπιού στο AVPlayerViewController. Το μέγεθος του παραθύρου PiP σε iOS είναι σταθερό και καθορίζεται από το σύστημα — ο προγραμματιστής δεν μπορεί να το αλλάξει. Η αναλογία διαστάσεων του παραθύρου PiP αντιστοιχεί στην αναλογία διαστάσεων του αρχικού βίντεο, αλλά το μέγιστο μέγεθος περιορίζεται στο 1/4 του πλάτους οθόνης σε iPhone και στο 1/3 σε iPad.

Περιορισμοί iOS PiP

Οι κύριοι περιορισμοί του PiP σε iOS: αδυναμία προσαρμοσμένου UI στο παράθυρο PiP, περιορισμός σε μία ροή PiP ταυτόχρονα και απαίτηση ενεργού AVPlayer για τη λειτουργία PiP. Multi-PiP — ταυτόχρονη αναπαραγωγή πολλαπλών παραθύρων PiP — δεν υποστηρίζεται σε iOS. Κατά την προσπάθεια εκκίνησης δεύτερου PiP, το πρώτο κλείνει αυτόματα. Αυτός είναι περιορισμός υλικού: ο επεξεργαστής βίντεο δεν μπορεί να εξυπηρετήσει ταυτόχρονα δύο ανεξάρτητα κανάλια PiP λόγω περιορισμών DMA και μνήμης βίντεο.

Ένας άλλος σημαντικός περιορισμός — η διάρκεια αναπαραγωγής στο παρασκήνιο. Εάν ο χρήστης δεν αλληλεπιδρά με το παράθυρο PiP, το σύστημα μπορεί να αναστείλει την αναπαραγωγή μετά από λίγο για εξοικονόμηση ενέργειας. Αυτόματη παύση του PiP σε iOS επέρχεται μετά από 10–15 λεπτά αδράνειας, εάν η εφαρμογή δεν έχει εφαρμόσει μηχανισμό keep-alive μέσω background task. Για βιντεοκλήσεις και ροές, συνιστάται η χρήση PushKit και πιστοποιητικών VoIP, που παρακάμπτουν αυτόν τον περιορισμό.

PiP σε Android: υλοποίηση και περιορισμοί

Σε Android, το PiP υλοποιείται ως ενσωματωμένη λειτουργία Activity, η οποία ενεργοποιείται μέσω της μεθόδου enterPictureInPictureMode. Από Android 8.0 (API 26), οποιοδήποτε Activity μπορεί να μεταβεί σε λειτουργία PiP, και από Android 12 (API 31) εμφανίστηκε υποστήριξη PiP για SurfaceView και TextureView χωρίς ανάγκη χρήσης MediaCodec.

Διαμόρφωση manifest

Για υποστήριξη PiP στο Android manifest, πρέπει να καθοριστεί το χαρακτηριστικό android:supportsPictureInPicture για το Activity στην ενότητα . Χωρίς αυτό το χαρακτηριστικό, το σύστημα δεν θα επιτρέψει τη μετάβαση σε PiP. Επιπλέον, συνιστάται η προσθήκη android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" για να μην αναδημιουργείται το Activity κατά την αλλαγή μεγέθους παραθύρου κατά τη μετάβαση σε PiP. Η έκδοση πρέπει να έχει targetSdkVersion >= 26 (Android 8.0) για βασική λειτουργία PiP.

Σε Android, το παράθυρο PiP δεν έχει στοιχεία ελέγχου από προεπιλογή. Ο προγραμματιστής μπορεί να προσθέσει προσαρμοσμένες ενέργειες μέσω RemoteAction στη μέθοδο setPictureInPictureParams. Διατίθενται έως 3 ενέργειες (π.χ.: παύση/αναπαραγωγή, μεταπήδηση πίσω/εμπρός, κλείσιμο). Κάθε ενέργεια εμφανίζεται στην επικάλυψη συστήματος PiP ως εικονίδιο. Σε αντίθεση με το iOS, όπου όλα τα στοιχεία UI είναι αυστηρά σταθερά, το Android παρέχει μεγαλύτερη ευελιξία για βασικούς ελέγχους.

Προσαρμογή σε διαφορετικές εκδόσεις

Το PiP σε Android έχει διαφορετικές δυνατότητες ανάλογα με την έκδοση του λειτουργικού συστήματος. Σε Android 8.0–8.1, το PiP είναι διαθέσιμο μόνο για βίντεο που αναπαράγεται μέσω MediaPlayer ή MediaCodec με SurfaceView. Από Android 9, μπορεί να χρησιμοποιηθεί το PictureInPictureArgs.Builder για τη διαμόρφωση της αναλογίας διαστάσεων του παραθύρου PiP. Το Android 12 πρόσθεσε υποστήριξη PiP για προσαρμοσμένα SurfaceView και TextureView, καθώς και βελτιωμένη διαχείριση μεταβάσεων μεταξύ πλήρους οθόνης και λειτουργίας PiP. Το Android 13+ επιτρέπει την εμφάνιση του παραθύρου PiP ακόμα και σε κλειδωμένη οθόνη, εάν η εφαρμογή έχει την κατάλληλη άδεια.

Έκδοση AndroidΔυνατότητες PiPAPI
8.0–8.1Βασικό PiP για MediaPlayer/MediaCodec26–27
9–11Διαμόρφωση αναλογίας διαστάσεων, προσαρμοσμένες ενέργειες28–30
12Υποστήριξη SurfaceView/TextureView σε PiP31
13+PiP σε κλειδωμένη οθόνη, βελτιωμένες κινήσεις33+

Η βασική διαφορά του Android PiP από το iOS — η δυνατότητα multi-PiP. Σε Android από την έκδοση 12, το σύστημα μπορεί να εμφανίζει πολλά παράθυρα PiP ταυτόχρονα, εάν οι εφαρμογές το υποστηρίζουν και η απόδοση της συσκευής το επιτρέπει. Ωστόσο στην πράξη, το multi-PiP περιορίζεται από τις δυνατότητες του SoC: οι περισσότερες συσκευές υποστηρίζουν μόνο ένα παράθυρο PiP λόγω περιορισμών υλικού του αποκωδικοποιητή, καθώς κάθε παράθυρο PiP απαιτεί τη δική του ροή βίντεο και ξεχωριστή συνεδρία αποκωδικοποίησης.

Παραδείγματα κώδικα PiP

Ας εξετάσουμε την πρακτική υλοποίηση του PiP και στις δύο κινητές πλατφόρμες, λαμβάνοντας υπόψη τις τελευταίες αλλαγές API.

PiP σε iOS με AVPictureInPictureController

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, απελευθέρωση μνήμης
    }
    
    func pictureInPictureControllerDidStop(
        _ pictureInPictureController: AVPictureInPictureController
    ) {
        // Επαναφορά UI, συνέχιση απόδοσης
    }
}

Στο παράδειγμα, το AVPictureInPictureController αρχικοποιείται με playerLayer μετά τον έλεγχο isPictureInPictureSupported (το PiP δεν υποστηρίζεται σε iPhone SE 1ης γενιάς και ορισμένα iPad χωρίς επαρκή μνήμη). Ο εκπρόσωπος ειδοποιεί την εφαρμογή για την έναρξη και λήξη του PiP — σε αυτές τις επανακλήσεις πρέπει να αποκρύπτονται και να επαναφέρονται τα στοιχεία UI, καθώς στη λειτουργία PiP η διεπαφή της εφαρμογής δεν είναι ορατή. Κατά τη μετάβαση σε PiP, συνιστάται η διακοπή όλων των κινήσεων, η απόκρυψη των χειριστηρίων του προγράμματος αναπαραγωγής και η απελευθέρωση αχρησιμοποίητης μνήμης για την αποφυγή αναγκαστικής εκφόρτωσης της εφαρμογής από το σύστημα.

PiP σε Android με PictureInPictureParams

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, εστίαση μόνο στα μέσα
            binding.controlsGroup.visibility = View.GONE
        } else {
            // Επαναφορά UI
            binding.controlsGroup.visibility = View.VISIBLE
        }
    }
}

Το παράδειγμα σε Kotlin χρησιμοποιεί το PictureInPictureParams.Builder για τη διαμόρφωση του PiP. Η μέθοδος setAspectRatio ορίζει την αναλογία διαστάσεων του παραθύρου PiP (16:9 για τυπικό βίντεο). Η setAutoEnterEnabled(true) ενεργοποιεί την αυτόματη μετάβαση σε PiP κατά την ελαχιστοποίηση της εφαρμογής. Η επανάκληση onPictureInPictureModeChanged καλείται κατά την είσοδο και έξοδο από το PiP — σε αυτήν πρέπει να αποκρύπτονται ή να εμφανίζονται τα στοιχεία UI. Για βίντεο σε SurfaceView, απαιτείται πρόσθετος χειρισμός διαμόρφωσης με προσθήκη android:configChanges="screenSize|smallestScreenSize" στο manifest για την αποφυγή αναδημιουργίας του Activity κατά τη μετάβαση σε λειτουργία PiP.

Πότε να χρησιμοποιήσετε το Picture-in-Picture

Το PiP είναι ένα ισχυρό εργαλείο για τη βελτίωση της εμπειρίας χρήστη σε εφαρμογές όπου το περιεχόμενο παραμένει σχετικό ακόμα και κατά την εναλλαγή σε άλλες εργασίες. Ωστόσο, η εφαρμογή του PiP πρέπει να είναι δικαιολογημένη και να μην αποσπά την προσοχή του χρήστη.

Βέλτιστα σενάρια

Βιντεοκλήσεις και συνέδρια — ένα από τα κύρια σενάρια του PiP. Σε Zoom, FaceTime, Google Meet, το PiP επιτρέπει την προβολή του συνομιλητή κατά την εργασία σε άλλες εφαρμογές: ανάγνωση σημειώσεων, προβολή παρουσίασης ή έλεγχο email. PiP για βιντεοκλήσεις απαιτεί υποστήριξη κάμερας στο παρασκήνιο και σωστή διαμόρφωση της συνεδρίας ήχου για συνέχιση λήψης ήχου στο παρασκήνιο. Σε iOS, γι' αυτό χρησιμοποιείται AVSampleBufferDisplayLayer αντί για AVPlayerLayer, καθώς οι βιντεοκλήσεις δεν χρησιμοποιούν AVPlayer.

Οι υπηρεσίες ροής (YouTube, Netflix, Twitch) χρησιμοποιούν ενεργά το PiP για συνέχιση παρακολούθησης κατά την αναζήτηση νέου περιεχομένου. Το YouTube Premium προσφέρει το PiP ως πληρωμένη λειτουργία, το Netflix επίσης περιορίζει το PiP σε συγκεκριμένα προγράμματα λόγω περιορισμών αδειοδότησης περιεχομένου. Για την εφαρμογή PiP σε μια εφαρμογή ροής, απαιτείται ενσωμάτωση με σύστημα DRM (FairPlay, Widevine) που υποστηρίζει ασφαλή pipeline σε λειτουργία PiP.

Πότε δεν χρειάζεται PiP

Το PiP δεν είναι κατάλληλο για εφαρμογές με διαδραστικό περιεχόμενο βίντεο όπου απαιτείται αλληλεπίδραση χρήστη: εκπαιδευτικές πλατφόρμες με τεστ εντός του προγράμματος αναπαραγωγής, ροές παιχνιδιών με συνομιλία, εφαρμογές αγορών με συνδέσμους προϊόντων σε βίντεο. Σε αυτές τις περιπτώσεις, το παράθυρο PiP είναι πολύ μικρό για την εμφάνιση πρόσθετων πληροφοριών και τα διαδραστικά στοιχεία στο PiP δεν υποστηρίζονται από το σύστημα. Συνιστάται η χρήση PiP μόνο για παθητική παρακολούθηση, όταν δεν απαιτείται αλληλεπίδραση με το περιεχόμενο.

Για εφαρμογές μουσικής και podcast, το PiP είναι περιττό — αρκεί ο ήχος παρασκηνίου χωρίς οπτικό παράθυρο. Το PiP καταναλώνει επιπλέον πόρους GPU για την απόδοση βίντεο σε πλωτό παράθυρο, μειώνοντας τη διάρκεια ζωής της μπαταρίας. Εάν το περιεχόμενο είναι ηχητικό (μουσική, podcast, ηχητικά βιβλία) — χρησιμοποιήστε αναπαραγωγή παρασκηνίου χωρίς PiP. Εάν είναι οπτικό — εφαρμόστε PiP για βελτίωση της εμπειρίας χρήστη.

Συχνές Ερωτήσεις

Γιατί δεν λειτουργεί το PiP στο iPhone μου;

Το PiP σε iOS απαιτεί iPhone 6s+, iOS 14+ και υποστηριζόμενη περιοχή (ΗΠΑ, Καναδάς, Αυστραλία, ΕΕ, Ρωσία και άλλα). Για την εφαρμογή, πρέπει να ρυθμιστεί η audio session στην κατηγορία .playback και να προστεθεί UIBackgroundModes = audio. Ελέγξτε επίσης τις ρυθμίσεις: Ρυθμίσεις > Γενικά > Εικόνα εντός εικόνας.

Μπορεί να ρυθμιστεί το μέγεθος του παραθύρου PiP;

Σε iOS, το μέγεθος του παραθύρου PiP καθορίζεται πλήρως από το σύστημα και δεν μπορεί να ρυθμιστεί από τον προγραμματιστή. Σε Android, μπορεί να οριστεί μόνο η αναλογία διαστάσεων μέσω setAspectRatio στο PictureInPictureParams.Builder, αλλά το ακριβές μέγεθος παραθύρου καθορίζεται από το σύστημα. Ο χρήστης μπορεί να αλλάξει το μέγεθος του παραθύρου PiP σε Android 12+ με χειρονομία pinch-to-zoom.

Λειτουργεί το PiP με περιεχόμενο DRM;

Ναι, το PiP λειτουργεί με περιεχόμενο προστατευμένο DRM (FairPlay σε iOS, Widevine L1 σε Android) υπό την προϋπόθεση ότι η συνεδρία DRM υποστηρίζει ασφαλή pipeline σε λειτουργία PiP. Το Widevine L3 ενδέχεται να μην υποστηρίζει PiP, καθώς δεν εγγυάται την ασφάλεια του αποκωδικοποιημένου περιεχομένου σε πλωτό παράθυρο. Ελέγξτε τη συμβατότητα DRM με PiP στο στάδιο δοκιμών.

Πόσα παράθυρα PiP μπορούν να ανοίξουν ταυτόχρονα;

Σε iOS — μόνο ένα παράθυρο PiP. Σε Android 12+ θεωρητικά υποστηρίζεται multi-PiP, αλλά στην πράξη οι περισσότερες συσκευές περιορίζονται σε ένα παράθυρο λόγω περιορισμών υλικού. Οι κορυφαίες συσκευές (Samsung Galaxy S24, Pixel 8) μπορούν να υποστηρίξουν 2 παράθυρα PiP, αλλά με μειωμένη απόδοση.

Πρέπει να γίνεται διαχείριση του κύκλου ζωής στο PiP;

Ναι, η διαχείριση του κύκλου ζωής είναι κρίσιμη. Σε iOS, κατά τη μετάβαση σε PiP, η εφαρμογή λαμβάνει ειδοποίηση willStart όπου πρέπει να αποκρύψει το UI και να ελευθερώσει μνήμη. Σε Android, το onPictureInPictureModeChanged καλείται κατά την είσοδο/έξοδο από PiP. Σε περίπτωση λανθασμένης διαχείρισης κύκλου ζωής, το σύστημα μπορεί να εκφορτώσει την εφαρμογή από τη μνήμη, διακόπτοντας την αναπαραγωγή.

Σύνοψη

  • Picture-in-Picture — πλωτό παράθυρο για προβολή βίντεο πάνω από άλλες εφαρμογές σε λειτουργία πολυδιεργασίας
  • PiP σε iOS υλοποιείται μέσω AVPictureInPictureController με AVPlayerLayer και audio session .playback
  • PiP σε Android υλοποιείται μέσω enterPictureInPictureMode με PictureInPictureParams.Builder
  • Περιορισμοί: μία ροή PiP, σταθερό μέγεθος παραθύρου, απουσία προσαρμοσμένου UI εντός PiP
  • Κύκλος ζωής σε PiP απαιτεί απόκρυψη στοιχείων UI και απελευθέρωση μνήμης για αποφυγή εκφόρτωσης
  • Κύρια σενάρια — βιντεοκλήσεις, ροή, εκπαιδευτικά βίντεο, παρακολούθηση περιεχομένου κατά την πλοήγηση
  • Μην χρησιμοποιείτε PiP για ηχητικό περιεχόμενο (αρκεί ήχος παρασκηνίου) ή διαδραστικά βίντεο με στοιχεία UI

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης