J'ai un casque unique oreille BT non A2DP (Plantronics 510) et souhaite l'utiliser avec mon Android HTC Magic pour écouter le son de mauvaise qualité comme des podcasts audio/livres.audio routage à Bluetooth (non A2DP) sur Android
Après googler que je trouve que son seul appel téléphonique peut être acheminé vers les casques non-BT A2DP. (Je voudrais savoir si vous avez trouvé une solution prête à acheminer toutes sortes d'audio à des casques BT non-A2DP)
Donc, je me suis dit, en quelque sorte par programmation, je peux canaliser l'audio vers le flux qui achemine l'appel téléphonique. De cette façon, je vais tromper le téléphone pour transporter mon audio mp3 à mon casque BT. J'ai écrit après le code simple.
import android.content.*;
import android.app.Activity;
import android.os.Bundle;
import android.media.*;
import java.io.*;
import android.util.Log;
public class BTAudioActivity extends Activity
{
private static final String TAG = "BTAudioActivity";
private MediaPlayer mPlayer = null;
private AudioManager amanager = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
amanager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
amanager.setBluetoothScoOn(true);
amanager.setMode(AudioManager.MODE_IN_CALL);
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(new FileInputStream(
"/sdcard/sample.mp3").getFD());
mPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
mPlayer.prepare();
mPlayer.start();
} catch(Exception e) {
Log.e(TAG, e.toString());
}
}
@Override
public void onDestroy()
{
mPlayer.stop();
amanager.setMode(AudioManager.MODE_NORMAL);
amanager.setBluetoothScoOn(false);
super.onDestroy();
}
}
Comme vous pouvez le voir, j'ai essayé des combinaisons de différentes méthodes que je pensais tromperont le téléphone pour croire que mon audio est un appel téléphonique:
- En utilisant la setAudioStreamType de MediaPlayer (STREAM_VOICE_CALL)
- utilisant AudioManager de setBluetoothScoOn (true)
- utilisant la setMode de AudioManager (MODE_IN_CALL)
Mais aucun de ce qui précède n'a fonctionné. Si je supprime les appels AudioManager dans le code ci-dessus, le son est lu par le haut-parleur et si je les remplace comme indiqué ci-dessus, le son cesse de sortir des haut-parleurs, mais ne passe pas par le casque BT. Donc, cela pourrait être un succès partiel.
J'ai vérifié que le casque BT fonctionne bien avec des appels téléphoniques.
Il doit y avoir une raison pour Android ne supportant pas cela. Mais je ne peux pas laisser aller le sentiment qu'il n'est pas possible de rediriger par programmation l'audio. Des idées?
P.S. code ci-dessus a besoin suivant l'autorisation
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
Vous n'avez pas besoin d'écrire du code vous-même. Installez simplement une application gratuite conçue pour faire ce que vous voulez. Voir la question Android.SE: ["Est-il possible de diriger toutes les sorties audio, y compris la sortie de musique, vers un casque Bluetooth?"] (Http://android.stackexchange.com/questions/19336/is-it-possible- to-direct-all-audio-output-to-a-bluetooth-headset) J'ai essayé quelques applications différentes. En fin de compte, "Mono Bluetooth Router" était le seul qui a fonctionné pour moi. – unforgettableid