Possiedo un auricolare BT auricolare monoauricolare A2DP (Plantronics 510) e vorrei utilizzarlo con il mio HTC Magic Android per ascoltare audio di bassa qualità come podcast/audio libri.Instradamento audio su auricolare Bluetooth (non-A2DP) su Android
Dopo aver cercato su Google ho scoperto che solo l'audio della telefonata può essere indirizzato agli auricolari BT non A2DP. (Vorrei sapere se avete trovato una soluzione pronta per indirizzare tutti i tipi di audio a cuffie BT non A2DP)
Quindi ho pensato, in qualche modo, a livello di codice, di canalizzare l'audio allo streaming che trasporta l'audio della telefonata. In questo modo ingannerò il telefono per trasportare il mio audio mp3 sul mio auricolare BT. Ho scritto seguendo il semplice codice.
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();
}
}
Come potete vedere ho provato combinazioni di vari metodi che ho pensato che ingannerà il telefono a credere il mio audio è una telefonata:
- Utilizzando setAudioStreamType di MediaPlayer (STREAM_VOICE_CALL)
- usando AudioManager di setBluetoothScoOn (vero)
- usando setMode di AudioManager (MODE_IN_CALL)
Ma nessuno dei precedenti ha funzionato. Se rimuovo le chiamate di AudioManager nel codice sopra, l'audio viene riprodotto dagli altoparlanti e se li sostituisco come mostrato sopra, l'audio si interrompe provenire dagli altoparlanti, ma non passa attraverso l'auricolare BT. Quindi questo potrebbe essere un successo parziale.
Ho verificato che l'auricolare BT funzioni bene con le chiamate telefoniche.
Ci deve essere un motivo per Android che non supporta questo. Ma non posso lasciare andare la sensazione che non sia possibile reindirizzare l'audio a livello di programmazione. Qualche idea?
P.S. sopra codice deve seguente autorizzazione
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
Potrebbe non essere necessario scrivere alcun codice autonomamente. Basta installare un'app gratuita progettata per fare ciò che vuoi. Vedi la domanda Android.SE: ["È possibile indirizzare tutta l'uscita audio, inclusa l'uscita della musica, a un auricolare Bluetooth?"] (Http://android.stackexchange.com/questions/19336/is-it-possible- to-direct-all-audio-output-to-a-a-bluetooth-headset) Ho provato alcune app diverse. Alla fine, "Mono Bluetooth Router" è stato l'unico che ha funzionato per me. – unforgettableid