Logo nl.androidermagazine.com
Logo nl.androidermagazine.com

Replay: de groeiende strijd van afspeelbesturing via Bluetooth

Anonim

Het is wat ik gebruik op het werk, thuis, in bed, onder de douche en overal daartussen om me gezond en gelukkig te houden. Muziek maakt me beter, en omdat muziek zo'n groot deel van mijn Android-ervaring is, is er een langzame achteruitgang waar ik me de afgelopen jaren, en vooral de laatste maanden, pijnlijk van bewust ben geweest.

Soms zet ik mijn Bluetooth-hoofdtelefoon aan, druk ik op play en gebeurt er niets. En er gebeurt niets meer dan vroeger.

In mijn vroege Android-dagen, met Soarin in mijn zak (ja, ik noemde mijn Samsung Captivate Glide) en mijn eerste paar Kinivo Bluetooth-hoofdtelefoons om mijn nek, hoefde ik Google Play Music niet te openen, ik moest alleen speel op mijn koptelefoon. Ik heb zelfs een Samsung Galaxy SII uit een lade gehaald, voor het eerst in maanden opgestart, Bluetooth-hoofdtelefoons eraan gekoppeld en op de afspeelknop gedrukt. En de muziek speelde.

Niet zozeer op de huidige apparaten in mijn stal.

De HTC 10 voldoet gewoon niet soms aan Bluetooth-bedieningselementen, aanhoudende melding voor de muziek-app of niet. Ik heb liever dat ik op mijn Moto 360 of op de telefoon zelf speel. De HTC A9 is net zo kieskeurig. De Nexus 5X start soms geen back-up van muziek met de aanhoudende melding, maar doet het soms zonder. De Samsung S6 edge wordt afgespeeld, maar soms wordt in plaats van de laatst actieve muziek-app teruggezet naar de vooraf geladen muziek-app.

Er is een woord dat hier herhaald wordt: soms. Dat komt omdat dit een probleem is met veel variabelen: welk Android-apparaat u gebruikt, welk Bluetooth-apparaat u gebruikt, welke versie van Android en Bluetooth uw apparaten hebben, welke muziek-app u probeert af te spelen, in welke omgeving u zich bevindt, enz. Dat is een heleboel dingen die bijdragen aan een ogenschijnlijk eenvoudig probleem waarbij knoppen niet werken wanneer u erop drukt.

Dus wat gebeurt hier eigenlijk? Welnu, het antwoord wordt een beetje - oké, veel - technisch.

Wanneer u op de knop drukt, wordt deze geïnterpreteerd door Android en via KeyEvents op het systeem uitgezonden. De volgende knop op uw headset wordt geïnterpreteerd en geleverd als KEYCODE_MEDIA_NEXT via een KeyEvent. Er is een grote verscheidenheid aan waarden die kunnen worden opgetrokken voor verschillende knoppen, of zelfs voor dezelfde knop. De afspeelknop op de meeste headsets is ook de pauzeknop, dus de sleutel kan KEYCODE_MEDIA_PAUSE, KEYCODE_MEDIA_PLAY of de veel waarschijnlijker KEYCODE_MEDIA_PLAY_PAUSE retourneren, afhankelijk van het apparaat en de huidige status. Trouwens, als je ooit op pauze hebt gedrukt en de muziek ergens anders is begonnen terwijl wat je aan het kijken / luisteren was gepauzeerd, is dit de schuld van KeyEvent, omdat het door twee apps is ontvangen en opgevolgd.

Nadat de KeyEvents zijn geïnterpreteerd, moeten ze nog steeds worden gehoord door een muziek-app die naar mediaknoppen luistert via een intentie van BroadcastReceiver. Een app kan immers niet op een KeyEvent werken als hij deze niet kan zien. Als iets de ontvanger in een app belet om knoppen in te drukken, kan dit de afspeelknoppen op verschillende manieren verstoren, waaronder het intermitterende probleem dat ik hierboven heb beschreven. Als een app zijn BroadcastReceiver te snel afmeldt wanneer deze de audiofocus verliest (de methode waarmee Android bepaalt welke apps op een bepaald moment audio kunnen afspelen), dan kan het zijn dat u, wanneer u uw muziek pauzeert, stopt met luisteren en de knop niet hoort zeggen om opnieuw te beginnen met spelen. Daarom is het belangrijk dat media-apps zowel Audio Focus als hun BroadcastReceiver correct verwerken, zodat zelfs wanneer een apparaat het eerste heeft verloren, het het laatste niet verliest.

Veel hiervan komt neer op hoe goed uw muziek-app is geprogrammeerd en welke mediaknoppen door uw apparaat worden uitgezonden wanneer u op een knop op uw headset drukt. Dit betekent ook dat zelfs als de afspeelknoppen consistent zijn wanneer u een apparaat koopt, ze kunnen worden verbroken door app-updates of systeemupdates die veranderen hoe snel het stopt met luisteren.

In het geval van apps zoals Google Play Music lijken updates die dingen breken steeds vaker voor te komen. Terwijl de meeste pauzes snel worden opgelost, kunnen anderen maanden nodig hebben om te worden hersteld. Periodieke problemen, zoals het niet goed opstarten van uw muziek via Bluetooth, kunnen moeilijk zijn om te registreren en correct te identificeren, waardoor een mogelijke oplossing verder wordt vertraagd.

Als muziek-apps geen audiofocus hebben en niet als voorgrondservices worden uitgevoerd (als de permanente melding voor de mediaspeler er niet is), is er een kans dat het Android-systeem (meer specifiek Doze) of de zogenaamde 'resource' apps opslaan kan de app doden om geheugen vrij te maken voor andere activiteiten. Wanneer dat gebeurt, kan het spelen van iets niets doen omdat er geen ontvangers open zijn en luisteren naar opdrachten.

Nu, net zoals er verschillende dingen zijn die je afspeelknoppen kunnen breken, zijn er ook opties om te proberen het te repareren.

De eerste oplossing is een beetje extreem, maar een van de weinige die gebruikers vandaag op hun huidige telefoons kunnen implementeren zonder enige rootwijzigingen in de software. Met behulp van apps zoals Tasker en AutoInput kunnen we de knopdruk detecteren, de originele KeyEvent-actie onderdrukken en vervolgens een meer gespecialiseerde (en meer consistente) opdracht uitvoeren die rechtstreeks op één app is gericht. In plaats van dat de afspeelknop bijvoorbeeld een generieke opdracht voor het afspelen van media is die door tientallen mediadiensten kan worden opgepakt of genegeerd, kunnen we deze opnieuw toewijzen als een opdracht voor het afspelen / pauzeren die specifiek is voor Google Play Muziek, zodat andere apps niet start in plaats daarvan.

Dit kan lastig zijn om te programmeren, en door de oorspronkelijke actie te onderdrukken en te vervangen, breken we de native pauzeknop die we misschien in andere apps zoals YouTube of Netflix willen gebruiken. Kortom, het is niet echt een oplossing voor niet-technische gebruikers of gebruikers die verschillende media-apps gebruiken.

Veel telefoons hebben een heleboel gebaren en knopacties die u in Instellingen kunt in- of uitschakelen, zoals dubbeltikken om te wekken of tweemaal op Home / power voor de camera te drukken. Hoewel het toevoegen van Bluetooth-bedieningselementen aan deze lijst het kan verlengen en compliceren, als het Android-systeem KeyEvent zou moeten erkennen en naar een specifieke app zou sturen in plaats van een generiek signaal naar wat ontvangers ook zouden luisteren (of niet luisteren), zouden we voor consistentie kunnen zorgen. We hebben dit eerder op apparaten gedaan zien, bijvoorbeeld het openen van Moto Assist door een aangewezen muziek-app in te schakelen wanneer deze is verbonden met de Bluetooth van uw auto.

Veranderen van de manier waarop Android omgaat met mediaknoppen - en in het algemeen omgaat met knopinvoer, aangezien Bluetooth-controllers en toetsenborden op hun eigen problemen stuiten - kan net zoveel nieuwe problemen veroorzaken als het oplost, maar gezien het aantal plaatsen waar dingen kunnen - en doen - gaan verkeerd in het huidige systeem, is het misschien de moeite waard om de eieren te breken om een ​​nieuwe omelet te maken.

Uiteindelijk willen alledaagse gebruikers niet ingaan op belangrijke opdrachten, ontvangers en welke app op dit moment audiofocus heeft. We willen dat onze focus ligt op de muziek zelf en waar deze ons brengt. En als ik de muziek die me gezond houdt op luide, drukke plaatsen bij de eerste poging niet kan inschakelen, ben ik geen gelukkige meid. En ik wed dat ik niet de enige ben.

We kunnen via onze links een commissie verdienen voor aankopen. Kom meer te weten.