Ich habe ein nicht-A2DP single-Ohr-BT-Headset (Plantronics 510) und möchte es mit meinem Android HTC Magic verwenden, um Audio mit niedriger Qualität wie Podcasts/Audio zu hören Bücher.Routing von Audio zu Bluetooth Headset (nicht-A2DP) auf Android
Nach viel googlen fand ich, dass nur Telefonanruf Audio zu den Nicht-A2DP BT Headsets geroutet werden kann. (Ich würde gerne wissen, ob Sie eine fertige Lösung gefunden haben, um alle Arten von Audio auf Nicht-A2DP-BT-Headsets zu routen)
So dachte ich, irgendwie programmgesteuert kann ich das Audio auf den Stream, der Telefonanruf Audio trägt. Auf diese Weise täusche ich das Telefon, um meinen mp3-Ton zu meinem BT-Kopfhörer zu tragen. Ich habe folgenden einfachen Code geschrieben.
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();
}
}
Wie Sie habe ich versucht, Kombinationen verschiedener Methoden sehen, dass ich dachte, das Telefon zu täuschen meine Audio ist ein Telefonanruf zu glauben:
- Mit Mediaplayer des setAudioStreamType (STREAM_VOICE_CALL)
- mit Audio-Manager des setBluetoothScoOn (true)
- mit Audio-Manager des setMode (MODE_IN_CALL)
Aber keiner der oben genannten funktioniert. Wenn ich die AudioManager-Aufrufe im obigen Code lösche, wird das Audiosignal über den Lautsprecher abgespielt und wenn ich es wie oben gezeigt ersetze, hört der Ton von den Lautsprechern auf, kommt aber nicht über das BT-Headset. Das könnte also ein Teilerfolg sein.
Ich habe überprüft, dass das BT Headset mit Telefonanrufen in Ordnung ist.
Es muss einen Grund geben, warum Android dies nicht unterstützt. Aber ich kann das Gefühl nicht loslassen, dass es nicht möglich ist, das Audio programmatisch umzuleiten. Irgendwelche Ideen?
P.S. oben braucht Code Erlaubnis folgende
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
Sie müssen möglicherweise keinen Code selbst schreiben. Installieren Sie einfach eine kostenlose App, die entwickelt wurde, um zu tun, was Sie wollen. Weitere Informationen finden Sie in der Android.SE-Frage: ["Ist es möglich, die gesamte Audioausgabe einschließlich Musikausgabe an ein Bluetooth-Headset zu senden?"] (Http://android.stackexchange.com/questions/19336/is-it-possible- to-direct-all-audio-output-to-a-bluetooth-headset) Ich habe ein paar verschiedene Apps ausprobiert. Am Ende war "Mono Bluetooth Router" der einzige, der für mich funktionierte. – unforgettableid