J'ai un non-A2DP seule oreille BT headset (Plantronics 510) et que vous souhaitez l'utiliser avec mon Android HTC Magic pour écouter de la faible qualité de l'audio comme des podcasts et livres audio.
Après beaucoup de recherches sur google, j'ai trouvé que seul appel téléphonique audio peuvent être acheminés à la non-A2DP BT casques. (Je voudrais savoir si vous avez trouvé une solution prête à acheminer tous les types de formats audio pour non-A2DP BT casques)
Alors j'ai pensé que, en quelque sorte, par programme, je peux le canal audio du ruisseau qui porte téléphone d'appel audio. De cette façon, je vais tromper le téléphone pour effectuer mon mp3 pour mon oreillette BT. J'ai écrit suivants du 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 va tromper le téléphone à en croire mes audio est un coup de téléphone:
- Utilisation du lecteur multimédia de setAudioStreamType(STREAM_VOICE_CALL)
- à l'aide de AudioManager de setBluetoothScoOn(vrai)
- à l'aide de AudioManager de setMode(MODE_IN_CALL)
Mais aucun de ce qui précède travaillé. Si je supprime le AudioManager appels dans le code ci-dessus, la lecture audio de haut-parleur et si je les remplacer comme indiqué ci-dessus, alors l'audio s'arrête à venir de haut-parleurs, mais il ne vient pas à travers le BT casque. Donc cela pourrait être un succès partiel.
J'ai vérifié que le BT casque fonctionne très bien avec des appels téléphoniques.
Il doit y avoir une raison pour Android pas l'appui de cette. Mais je ne peux pas laisser aller le sentiment qu'il n'est pas possible par programmation de rediriger le audio. Des idées?
P. S. au-dessus de code d'autorisation suivantes
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>