Streamer sa Musique en tant qu’appel bluetooth

Ciao les Dyrknautes !!!

Toujours vivant, mais un peu au ralenti en ce moment, je viens vers vous avec un
nouveau petit hack pas forcément "conventionnel", ni très complexe dans sa mise en œuvre.

Si vous êtes prêt c'est parti !!!

Un peu de contexte

Alors tout a commencé un vendredi soir.
j'étais missionné pour récupérer une personne à l'aéroport.
Le vendredi soir étant le pire timing possible pour se diriger vers une grande ville, je me suis préparé une petite compilation de MP3 sur une clé USB .... pour patienter durant les successions d'embouteillages que j'allais affronter.
Sauf que .... ma voiture est très certainement la compilation de tout ce qui ne fonctionne pas chez Stellantis.

Ainsi par exemple : Lorsque j'ai branché ma clé USB, cela a fait freezer la console tactile de la voiture.
Plus rien ne répondait ...

Diagnostique personnel :
Au lieu de fonctionner par nivellement avec un affichage progressif de l'arborescence de la clé USB à chaque déplacement de l'utilisateur dans l'arborescence de la clé.
(J'affiche d'abord le premier niveau d'arborescence, l'utilisateur rentre dans un répertoire, hop je recharge l'arborescence de celui-ci), de façon a éviter de tout charger d'un coup ...
Parce que bon, des clés USB qui font plusieurs dizaine de Giga aujourd'hui ... ça peut faire des sacrés arborescence de milliers de dossier & fichiers ....

Racine de la clé USB
   |
   |
   |---- Dossier 1
   | |
   | ---- Fichier 1.mp3
   | |
   | ---- Fichier 2.mp3

   | |
   | ---- ....
   |---- Dossier 2
   | |
   | ---- Fichier 1.mp3
   | |
   | ---- Fichier 2.mp3

   | |
   | ---- ....  
   |---- Dossier ....
   | |
   | ---- Fichier 1.mp3
   | |
   | ---- Fichier 2.mp3

   | |
   | ---- ....

Ma voiture préfère plutôt charger tout .... ba oui ... c'est plus simple non :D
Surtout avec la capacité cérébrale d'un poisson rouge avec une moitié de cerveau ... comme ça peut l'être pour ma voiture lorsque les choses "fonctionnent"...


Bref niveau puissance, elle n'ira jamais sur la lune ...
Je récapitule donc ... fin de semaine de boulot ... embouteillage ... j'apprend également au passage que la personne que je dois récupérer ne sera pas là à 18h ... mais à 21h30 ....
A court de patience, j'ai, comme qui dirait "forcé" un peu ... le tactile de l'écran ... désormais Hors Service ...

Console Tactile Inutilisable

Vous l'aurez compris je me suis un peu défoulé sur cet écran tactile qui ne répond plus.
Alors ça ne résous pas forcément le problème ... mais ça soulage "l'espace d'un instant".
Sauf qu'après le soulagement, les emmerdes ... il s'agit dans mon cas, d'un modèle de voiture où tout ou presque, est géré via cet écran tactile

Bien entendu, je vais remplacer cette console.
Mais le temps de recevoir la pièce, je vais devoir m'en accommoder et trouver des contournement à ces carences.

Pour la plupart, il m'est impossible de trouver une solution de contournement "simple".


Mais pour ce qui est du "multimédia" on peut essayer ;)
Eh oui ! Souvenez vous, mon but initiale étant de pouvoir écouter de la musique !!!

Console Tactile et Fonction Multimédia

L'écran tactile est hors d'usage, il est donc impossible sur ma voiture de choisir la source
multimédia à écouter (Radio, USB, Aux, Bluetooth, ...)
Elle est par défaut sur la Radio !
Je ne pourrais donc pas basculer sur aucune autre source.

Console Tactile et Fonction Bluetooth

L'écran tactile est hors d'usage, il est donc impossible depuis cette console de faire la connexion avec un téléphone.
Mais dans l'autre sens c'est possible.
Il est possible depuis le téléphone de sélectionner le Bluetooth de la voiture pour m'y connecter.

Bluetooth & Fonction Multimédia

Il faut savoir que lorsque vous utilisez du Bluetooth, il y a plusieurs types de "communication" possible
par Bluetooth (RFCOMM, SDP, TCS, ...)
Certaines permettent simplement d'envoyer des "commandes" comme vous pourriez le faire sur un ordinateur (port série)
Par exemple pour interagir avec un boitier ODBII Bluetooth (boitier de diag ).
D'autres vont plutôt permettre de streamer du contenu vidéo / audio pour le plaisir d'écouter de la musique.
Et enfin d'autres vont se concentrer sur la partie "Audio".
Puis il y a également tout ce qui est "téléphonie" pour gérer les appels vocaux.

Dans mon cas présent je sais que dans ma voiture, lorsque le Bluetooth est connecté et que je reçois un "appel", celui-ci est prioritaire sur tous les autres flux audios diffusés (radio, mp3, aux, GPS, ...) automatiquement sans aucune action de ma part.

Le "Hack" Bluetooth

Pour récapituler un peu la situation :

J'ai donc imaginé la possibilité de "streamer" / "diffuser" tout le contenu audio de mon téléphone comme
s'il s'agissait d'un appel.
Sur Android en terme de code c'est relativement simple, dans la Class Java associé à votre activité :

    AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
    if (audioManager != null) {
        audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
        audioManager.setSpeakerphoneOn(false);
    }
	if (audioManager.isBluetoothScoAvailableOffCall()) {
        audioManager.startBluetoothSco();
        audioManager.setBluetoothScoOn(true);
    }


Bien entendu il faut également ajouter la permissions dans votre Manifest.xml

Et ne pas oublier dans votre code de demander à l'utilisateur de valider la permission (onRequestPermissionsResult)

Le final est assez réussi, puisque vous pouvez télécharger et essayer mon APK ici (Attention, prévu pour fonctionner sur Android >= 10).

Limitation de cette solution

Lorsque vous passez un appel Bluetooth, celui-ci est capturé par une seule entrée microphone.
Il parait donc logique que lorsque le son est restitué, celui-ci ne soit pas en stéréo (Gestion Gauche & Droite du Son), mais plutôt en mono (une entrée == une sortie).

Il est donc possible d'écouter votre musique sur ce flux, mais la qualité ne sera très probablement
pas la même que dans un contexte "normal".

Le flux étant prioritaire, il vous faudra couper le bluetooth du téléphone si vous souhaitez à nouveau réécouter la radio.

Téléchargement APK & Code Source

D'un point de vue sécu il serait plus adapté de diffuser mes apps sur le Google Play, mais vu le nombre de PoC & d'application que je créé simplement pour m'amuser ... il m'est relativement contraignant de devoir repasser chaque fois sur chacune dès que le store de Google applique une nouvelle réglementation.

Aussi je vous propose d'accéder directement au code source de cette app (aussi simple soit-il), ou bien de télécharger directement l'APK (développé & testé pour des smartphones Android >= Android 10).

Conclusion

J'espère que ce petit article aura permis à certains d'entre vous de passer une bonne journée en riant
de la galère des autres ;)
Quant aux autres j'espère que ce petit "tips" vous dépannera !

Il existe également des mini "antenne radio" que l'on peut acheter ou produire soit même pour diffuser très localement sur la fréquence de son choix de la musique.

Bien évidemment ce n'est pas aussi drôle que de faire tourner un Wolfenstein sur un test de grossesse,
néanmoins, je pense que cette bidouille aura une réelle utilité (même si le public cible est une minorité de personne).

Laisser une réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site est protégé par reCAPTCHA et le GooglePolitique de confidentialité etConditions d'utilisation appliquer.