Tengo un auricular de oído único A2DP no A2DP (Plantronics 510) y me gustaría usarlo con mi HTC Magic para escuchar audio de baja calidad como podcasts/audio libros.Enrutamiento de audio a auriculares Bluetooth (no A2DP) en Android
Después de mucho Google, encontré que solo el audio de la llamada telefónica se puede enrutar a los auriculares que no son A2DP BT. (Me gustaría saber si ha encontrado una solución lista para enrutar todo tipo de audio a auriculares que no sean A2DP BT)
Me di cuenta de que, de forma programática, puedo canalizar el audio a la transmisión de audio de la llamada telefónica. De esta manera engañaré al teléfono para que lleve mi audio mp3 a mis auriculares BT. Escribí siguiendo un código 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();
}
}
Como se puede ver Probé combinaciones de varios métodos que pensé que le engañar al teléfono para creer que mi audio es una llamada telefónica:
- Usando setAudioStreamType de MediaPlayer (STREAM_VOICE_CALL)
- usando AudioManager de setBluetoothScoOn (verdadero)
- usando setMode de AudioManager (MODE_IN_CALL)
Pero ninguno de los anteriores funcionó. Si elimino las llamadas de AudioManager en el código anterior, el audio se reproduce desde el altavoz y si las reemplazo como se muestra arriba, entonces el audio deja de venir de los altavoces, pero no llega a través del auricular BT. Entonces esto podría ser un éxito parcial.
He comprobado que los auriculares BT funcionan bien con las llamadas telefónicas.
Debe haber un motivo para que Android no admita esto. Pero no puedo dejar de sentir que no es posible redirigir el audio programáticamente. ¿Algunas ideas?
P.S. por encima de código necesita permiso siguiente
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
Puede que no necesite escribir ningún código usted mismo. Simplemente instala una aplicación gratuita diseñada para hacer lo que quieras. Consulte la pregunta de Android.SE: ["¿Es posible dirigir toda la salida de audio, incluida la salida de música, a un auricular Bluetooth?"] (Http://android.stackexchange.com/questions/19336/is-it-possible- to-direct-all-audio-output-to-a-bluetooth-headset) Intenté algunas aplicaciones diferentes. Al final, "Mono Bluetooth Router" fue el único que funcionó para mí. – unforgettableid