Το Android Q θα επιτρέπει στις εφαρμογές να καταγράφουν ήχο από άλλες εφαρμογές και να παρακολουθούν τη θερμοκρασία της συσκευής

Το Android Q προσθέτει ένα νέο API για την εγγραφή της εσωτερικής εξόδου ήχου από άλλη εφαρμογή και επίσης για την παρακολούθηση της θερμοκρασίας της συσκευής.

Η Google δίνει και η Google αφαιρεί. Κάθε νέα έκδοση Android εισάγει πολλά νέα API που είτε βελτιώνουν τη λειτουργικότητα των υπαρχουσών εφαρμογών είτε ανοίγουν νέες κατηγορίες εφαρμογών. Από την άλλη πλευρά, η Google αφαιρεί επίσης την πρόσβαση ή περιορίζει τις δυνατότητες των υπαρχόντων API για τη βελτίωση της ασφάλειας της πλατφόρμας Android. Η έκδοση του Android Q δεν είναι διαφορετική και έχουμε ήδη μιλήσει πολύ για τις αλλαγές της στον κοινόχρηστο χώρο αποθήκευσης, την πρόσβαση στο πρόχειρο, τις ειδοποιήσεις και άλλα API. Στο φετινό Συνέδριο προγραμματιστών Google I/O, η Google ανακοίνωσε νέα API στο Android Q που είναι ιδιαίτερα ενδιαφέροντα για τους χρήστες και τους προγραμματιστές παιχνιδιών για κινητά: το AudioPlaybackCapture και Θερμικά API.

Εγγραφή ήχου από άλλες εφαρμογές με το AudioPlaybackCapture στο Android Q

Τα παιχνίδια για κινητά είναι μια τεράστια βιομηχανία χωρίς σημάδια επιβράδυνσης σύντομα, ειδικά σε αγορές όπως οι ΗΠΑ, η Κίνα και η Ινδία. Καθώς όλο και περισσότεροι άνθρωποι ξοδεύουν χρόνο στα smartphone τους για παιχνίδια και μέσα κοινωνικής δικτύωσης, δεν αποτελεί έκπληξη το γεγονός ότι οι άνθρωποι θέλουν να μοιραστούν τις εμπειρίες τους στα παιχνίδια στο διαδίκτυο.

Το Android έχει υποστηρίξει τη λήψη στιγμιότυπων οθόνης βασικά από την αρχή, αλλά η λήψη βίντεο της οθόνης υποστηρίζεται μόνο από το Android 5.0 Lollipop με την εισαγωγή του MediaProjection API. Δυστυχώς, αυτό το API δεν επιτρέπει σε εφαρμογές τρίτων να καταγράφουν την εσωτερική έξοδο ήχου σε άλλες εφαρμογές, αναγκάζοντας συσκευές εγγραφής οθόνης τρίτων να καταγράφουν εξωτερική έξοδο ήχου από το μικρόφωνο της συσκευής (μικρό). OEM όπως η Samsung και Huawei παρέχετε εφαρμογές συστήματος για την εγγραφή της εσωτερικής εξόδου ήχου κατά τη διάρκεια μιας εγγραφής οθόνης, αλλά ο μόνος τρόπος για τους ιδιοκτήτες άλλων συσκευών να εγγράψουν σωστά την έξοδο βίντεο και ήχου από τις συσκευές τους είναι να αγοράσουν ένα αξεσουάρ τρίτων. Ευτυχώς, η Google εισάγει επιτέλους έναν τρόπο στο Android Q για εφαρμογές τρίτων να καταγράφουν τον ήχο από άλλες εφαρμογές.

Το AudioPlaybackCapture API περιγράφεται από την Google ως το ανάλογο της λήψης οθόνης, αλλά για εγγραφή ήχου. Αν και η μόνη εφαρμογή μέχρι στιγμής που χρησιμοποιεί το API είναι της Google Ζωντανός υπότιτλος, ένα εργαλείο προσβασιμότητας που προσθέτει υπότιτλους σε οποιοδήποτε βίντεο που αναπαράγεται στη συσκευή, το API Η τεκμηρίωση αναφέρει ότι ο πρωταρχικός σκοπός του είναι να επιτρέπει στις εφαρμογές ροής να καταγράφουν το ηχητικό ον παίζονται από παιχνίδια. Σκεφτείτε ότι οι παίκτες για κινητά μεταδίδουν τις συνεδρίες τους σε υπηρεσίες όπως το Twitch ή το YouTube. Το API έχει σχεδιαστεί για να μην επηρεάζει τον λανθάνοντα χρόνο ήχου της εφαρμογής της οποίας ο ήχος καταγράφεται, καθιστώντας το ιδανικό για εγγραφή παιχνιδιού, ώστε ο ήχος και το βίντεο να μην αποσυγχρονίζονται.

Σε αντίθεση με τις πρώτες μέρες του Android, η προσέγγιση της Google στα νέα API είναι πιο προσεκτική. Το AudioPlaybackCapture μπορεί να χρησιμοποιηθεί μόνο εάν τόσο η εφαρμογή της οποίας καταγράφεται ο ήχος όσο και η εφαρμογή που κάνει τη λήψη πληρούν συγκεκριμένες απαιτήσεις. Ακολουθεί μια περίληψη αυτών των απαιτήσεων:

  • Για να καταγραφεί ο ήχος μιας εφαρμογής από μια εφαρμογή τρίτου μέρους, πρέπει να πληρούνται οι ακόλουθες απαιτήσεις:
    • Η εφαρμογή πρέπει να έχει το allowAudioPlaybackCapture ρυθμισμένο είτε σε true είτε unset στο Manifest της. (Η προεπιλογή είναι true για εφαρμογές που στοχεύουν το Android Q, αλλά μπορεί να οριστεί μη αυτόματα για εφαρμογές που στοχεύουν το Android Pie.)
    • Η εφαρμογή που παράγει ήχο πρέπει να έχει τη χρήση ήχου του τύπου USAGE_MEDIA, USAGE_GAME ή USAGE_UNKNOWN.
    • Η πολιτική λήψης ήχου (setAllowedCapturePolicy) πρέπει να οριστεί σε ALLOW_CAPTURE_BY_ALL. Αυτή η πολιτική μπορεί να οριστεί κατά το χρόνο εκτέλεσης, αλλά η αναπαραγωγή πρέπει να επανεκκινηθεί για να τεθεί σε ισχύ η αλλαγή πολιτικής. Εάν έχει οριστεί το ALLOW_CAPTURE_BY_SYSTEM, τότε μόνο οι εφαρμογές συστήματος μπορούν να εγγράψουν τον ήχο (αλλά περιορίζονται σε ότι δεν μπορούν να αποθηκεύσουν τον ήχο, να τον περάσουν σε μια εφαρμογή τρίτου μέρους ή να κάνουν εγγραφή σε > 16kHz 16-bit μονοφωνικό ποιότητα.)
  • Για να εγγράψει μια εφαρμογή ήχο από άλλη εφαρμογή, πρέπει να πληρούνται οι ακόλουθες απαιτήσεις:
    • Η εφαρμογή πρέπει να εμφανίσει την προτροπή MediaProjectionManager.createScreenCaptureIntent και ο χρήστης πρέπει να την αποδεχτεί.
      Το παράθυρο διαλόγου επιβεβαίωσης που βλέπουν οι χρήστες όταν μια εφαρμογή επιχειρεί να καταγράψει την οθόνη χρησιμοποιώντας το MediaProjection API.
    • Η εφαρμογή πρέπει να κρατά το RECORD_AUDIO άδεια.
    • Η εφαρμογή πρέπει να βρίσκεται στο ίδιο προφίλ χρήστη με την εφαρμογή της οποίας ο ήχος θα εγγραφεί.

Φαντάζομαι ότι τα περισσότερα παιχνίδια θα επιτρέπουν την καταγραφή του ήχου τους από εφαρμογές που χρησιμοποιούν αυτό το νέο API, αλλά μπορεί να χρειαστεί λίγος χρόνος για να ενημερωθούν τα παιχνίδια για να το υποστηρίξουν. Από την άλλη πλευρά, μην περιμένετε καμία εφαρμογή ροής μουσικής ή βίντεο να υποστηρίζει αυτό το API για τρίτα μέρη λόγω προβλημάτων με την αδειοδότηση. Ωστόσο, οι περιορισμοί που έχει επιβάλει η Google εάν μια εφαρμογή ορίσει την πολιτική της για λήψη ήχου σε ALLOW_CAPTURE_BY_SYSTEM σημαίνει ότι Οι προγραμματιστές εφαρμογών ροής μουσικής και βίντεο θα πρέπει να είναι εντάξει με την ενεργοποίηση της λήψης ήχου από το σύστημα για τη βελτίωση της προσβασιμότητας.

Για να διαβάσετε περισσότερα σχετικά με το AudioPlaybackCapture API στο Android Q, ρίξτε μια ματιά αυτή η σελίδα.

Παρακολούθηση στραγγαλισμού με θερμικό API στο Android Q

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

Ωστόσο, με το νέο Thermal API στο Android Q, οι εφαρμογές μπορούν να λαμβάνουν επανάκληση για διαφορετικά στάδια περιορισμού απόδοσης - δίνοντας οι προγραμματιστές έχουν την ευκαιρία να βοηθήσουν στη μείωση της καταπόνησης στη συσκευή περιορίζοντας τις δραστηριότητες που απαιτούν σημαντική CPU, GPU ή μόντεμ χρήση. Για παράδειγμα, ένα παιχνίδι θα μπορούσε να μειώσει δυναμικά την ανάλυση έως ότου η συσκευή δεν στραγγαλίζει πλέον την GPU ή μια εφαρμογή Χάρτες θα μπορούσε να απενεργοποιήσει βελτιωμένες λειτουργίες όπως πλοήγηση επαυξημένης πραγματικότητας για να μειώσετε το φορτίο στη CPU.

Για να χρησιμοποιήσετε αυτό το νέο API, οι εφαρμογές καταχωρούν έναν ακροατή στο PowerManager (addThermalStatusListener) και το σύστημα στέλνει στην εφαρμογή έναν από τους ακόλουθους κωδικούς θερμικής κατάστασης:

  • THERMAL_STATUS_NONE: "Όχι υπό γκάζι."
  • THERMAL_STATUS_LIGHT: "Ελαφρύ στραγγαλισμό όπου το UX δεν επηρεάζεται."
  • THERMAL_STATUS_MODERATE: "Μέτρια επιτάχυνση όπου το UX δεν επηρεάζεται σε μεγάλο βαθμό."
  • THERMAL_STATUS_SEVERE: "Σοβαρός στραγγαλισμός όπου το UX επηρεάζεται σε μεγάλο βαθμό."
  • THERMAL_STATUS_CRITICAL: "Η πλατφόρμα έχει κάνει τα πάντα για να μειώσει την ισχύ."
  • THERMAL_STATUS_EMERGENCY: "Βασικά εξαρτήματα στην πλατφόρμα κλείνουν λόγω θερμικής κατάστασης. Οι λειτουργίες της συσκευής θα είναι περιορισμένες."
  • THERMAL_STATUS_SHUTDOWN: "Χρειάζεται άμεση διακοπή λειτουργίας.

Η υποστήριξη για το Thermal API προφανώς απαιτεί Android Q, αλλά μια άλλη απαίτηση είναι η προσθήκη ενός νέου HAL. Η Google λέει ότι οι συσκευές Pixel στο Android Q (σημαίνει τα Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 3a, και Pixel 3a XL) υποστηρίζουν το Thermal API, αλλά η Google εργάζεται για την προσθήκη υποστήριξης για άλλες συσκευές.

Διαβάστε περισσότερα για το Θερμικό API εδώ.