Tento di fare un pò di chiarezza,
partiamo dal fatto che Android essendo un sistema molto personalizzabile, consente di avere installate più app che fanno lo stesso lavoro, come per esempio più media player, da quì, si potrebbe pensare che il problema della mancata riproduzione dei brani da TFT, sia dovuta alla mancanza di una app di default per la musica, non è così.
Tanto è vero che se dal file browser del vostro telefono, tappate su un brano musicale (mp3 per esempio) il sistema vi chiede quale player usare e vi pone la domanda "solo una volta o sempre", ve lo chiederà ogni volta fino a quando non ne selezionate uno, premendo "Sempre", di fatto avete appena definito il player di default,
problema risolto quindi ?... non è così, perchè anche se Android ora ha un player di default, il comado [Play] del TFT non farà partire nessuna musica (ovviamente il TFT BMW non c'entra, è lo stesso anche con quello della Multistrada).
Il problema risiede nel fatto che il TFT, invia al dispositivo BT (lo smartphone) un comando [Play], ma di fatto non gli dice cosa "Playare" perchè i file MP3 risiedono sullo smartphone e non su TFT, quindi il sistema non sà quale app chiamare, perchè la definizione delle app, passa per il tipo di file:
-> mi chiedi un .pdf ... ti apro Adobe, mi chiedi un .doc ... ti apro Word, mi chiedi un .gpx ... ti apro mappite .....
per inciso, il TFT può inviare solo [Play], [Stop], [Next], [Prev], [Vol +], [Vol -], ma nessun comando [Execute],
Android funziona con dei messaggi (input) che vengono recepiti da un servizio (notifiche), sempre in esecuzione e preposto a gestire le richieste, questo servizio riceve il messaggio, lo elabora e lo invia alle app in esecuzione, ma se nessuna app che potrebbbe gestirlo è in "ascolto", il messaggio viene ignorato,
tornando al nostro problema,
quindi, il servizio notifiche riceve un messaggio [Play], nessuna delle app in esecuzione lo accetta, ma, se fate prima partire il player (che sia quello di default o un'altro non importa) e successivamente premete [Play], magicamente parte la riproduzione.
Ora mi direte ma che cac..o ci racconta a fare tutto questo pistolotto
lo racconto perchè il nocciolo è proprio questo
La soluzione non è definire un player o far partire una app, ma molto più semplicemente è necessario tenere il player che si vuole sempre in esecuzione, anche se non riproduce nulla, perchè non appena il servizio notifiche di Android riceverà un comando [Play] lo reindirizzerà e il player lo eseguirà
A questo punto la domanda sorge spontanea, "si va bè e allora ?"
Semplice, si deve settare il player affinchè non non si chiuda mai,
Ecco come fare, io ho un Samsung Note e uso il player Poweramp (nelle impostazioni del player di Samsung non ho trovato questi setting), e quanto vi propongo funziona alla perfezione:
Aprite il menu strumenti o impostazioni (dipende da come lo chiama il vostro smartpone), scorrete fino al menu
applicazioni, entrate, cercate e aprite l'app (player) che vi interessa, a questo punto vedrete un elenco si impostazioni sui cui intervenire,
1.
Notifiche Impostazioni di notifica nell'app
Tipo di notifica: Automatico
...
...
...
Mantieni la notifica: attivato
Mantieni inativa la notifica multimediale: attivato
Mantieni il servizio: attivato
2.
Rimuovi autorizazioni se app non in uso:
disattivato
3.
Batteria:
Senza restrizioni
4.
Modifica impostazioni di sistema:
Consentito
I test che ho eseguito dimostrano che il workaround funziona:
a. vedrete sempre il player nelle notifiche
b. come accendo la moto e il sistema connette smartphone e interfono, il player viene riconosciuto e compare il titolo del brano sul display, premo play e la musica inizia
c. accensione e spegnimento non cambiano la situazione, come pure stop e start
d. anche "killando" direttamente l'app da smartphone, la musica si interrompe (ovvio), ma se premo [Play] la musica riparte, perchè l'app è si chiusa ma il servizio no, e la riapre.
Domande:
"ma quanto mi costa ?", il player sempre in esecuzione (se non riproduce), resta com app in background (di conseguenza occupa sì memoria, ma non consuma batteria)
"ma perchè è necessario tutto questo ?", perchè il memory manager di Android per default, chiude le app non utilizzate per ridurre la memoria occupata e il consumo di batteria.
spero sia di aiuto