2013-05-28 18 views
24

Ist es möglich, Audio über Bluetooth zu streamen? Während meiner Recherche fand ich heraus, dass das nur mit A2DP(Advanced Audio Distribution Profile) möglich ist. Und unterstützt jedes Android-Gerät A2DP? Wenn nicht, ist es möglich, Audio zwischen zwei Android-Geräten mit Bluetooth zu streamen? Bitte hilf mir, das zu verstehen.So streamen Sie Audio von einem Android-Gerät auf ein anderes Android-Gerät Über Bluetooth?

Ich habe über die folgenden Links angesehen:

+2

1. Fast jedes Gerät unterstützt A2DP, A2DP und HFP (Handsfree) Profil sind die grundlegenden Profile, die Telefon benötigt. 2. Android 4.2.1 hatte Audio-Streaming-Probleme über Bluetooth, es war ein abgehacktes Audio, das laut Google in der neuesten Version behoben wurde. 3. Die meisten Leute hatten früher auf Bluez (open source bluetooth) stack ausprobiert, aber ab JB wurde bluez durch broadcomm stack ersetzt. Sie müssen das Audio-Senkenprofil im Telefon implementieren. Audio-Streaming zwischen 2 Geräten kann mit Alljoyn möglich sein, check [link] (https://www.alljoyn.org/about/core-services) – ashish

+0

Danke für den Link @ashish. Ich werde das durchmachen. Und werden Sie wissen lassen, was passiert. Danke noch einmal. –

+0

Muss der Ton über Bluetooth gestreamt werden? Was ist mit der Verwendung von [WiFi-Direct] (http://developer.android.com/guide/topics/connectivity/wifip2p.html)? Dies würde Ihnen tatsächlich mehr Flexibilität und Funktionen geben. – BigMacAttack

Antwort

11

Ist es möglich, über Bluetooth-Audio-Stream?

Below Art Thread sagt seine Möglichkeit, die Audio über Bluetooth-Streaming zwischen den Geräten möglich ist, aber es war auf seine Erfolgsraten bis Google offizielle Fragezeichen angekündigt, dass We have fixed the a2dp streaming stutter problem on N7. The next release should have the fix. Sorry about the problem.

Fix for poor A2DP quality on 4.2.2

Bluetooth sound quality suffer after upgrade to 4.2 with Galaxy Nexus

Android 4.3 Bluetooth Audio Quality Fix for Nexus 7 Flo

Und unterstützt jedes Android-Gerät A2DP?

Unterstützung Kompatibilität ist auf Android developers site erwähnen, dass seine von API Level-11 with appropriate features. hinzugefügt Aber ich kam über XDA tread wo OP Erwähnung Problem in Android 2.1, bedeutet, seine auch in früheren api Ebenen aber OP mit Blick auf Fragen unterstützen.

Ich hoffe, es ist sinnvoll zu verstehen, und ich würde empfehlen zu verweisen XDA forum, um mehr Informationen über A2DP-Kompatibilität und seinen Erfolg zu erhalten.

1

Meiner Meinung nach, wenn A2DP nicht richtig funktioniert, sollten wir besser auf die untere Ebene verschieben, und wir können einen grundlegenden Datenstrom erstellen, der für das Senden jeder Form von Datum verwendet werden kann. Es ist mir gelungen, Byte-Stream über Bluetooth zwischen J2ME-Geräten zu senden.

Wenn eine App in beiden Geräten zu installieren ist akzeptabel, ich habe Beispielcodes, um einen Bluetooth-Server und einen Client zu schaffen, miteinander über Socket zu kommunizieren, sobald der Socket eingerichtet ist, können Sie Audio-Stream senden :)

hier sind einige Kern Codes:

1) Servergerät:

// you can generate your own UUID and use it as an port to eatablish a socket 
private static final UUID MY_UUID = UUID.fromString("20687DAD-B023-F19E-2F60-A135554CC3FD") 

BluetoothServerSocket serverSocket = mBluetoothAdapter.listenUsingRfcommWithServiceRecord(NAME_INSECURE, MY_UUID); 

Sie jetzt die Serversocket haben, verwenden Sie es einfach wie ein gewöhnlicher ServerSocket-:

BluetoothSocket socket = serverSocket.accept(); 

und dann können Sie InputStream und OutputStream aus dieser BluetoothSocket bekommen und Audio-Stream senden wie HttpConnection

2) Client-Gerät:

annehmen, dass Sie bereits haben die BluetoothDevice

// you should implement the method getBlutoothDevice 
BluetoothDevice device = getBluetoothDevice(); 
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID_SECURE); 
+0

Es sollte angemerkt werden, dass normales A2DP über L2CAP gestreamt wird, das eine viel größere Nutzlastgröße als ein RFCOMM-Paket aufweist.Streaming über RFCOMM führt aufgrund der geringeren Nutzlastgröße und der zusätzlichen beteiligten Schicht zu schlechter Audioqualität – TwinPrimesAreEz

0

Sie können Audio auch über eine einfache SCO-Verbindung streamen, die nicht von einem Profil abhängig ist. Beachten Sie jedoch, dass A2DP ein Profil ist, das speziell für das Streaming von Musik entwickelt wurde. Jede Implementierung, die Sie selbst vornehmen, wird im Vergleich zu A2DP in Qualität leiden.

Wenn Sie nicht Musik auf ein Gerät streamen, das A2DP nicht unterstützt, würde ich sicherlich A2DP verwenden. Wirklich Ihre einzige andere Möglichkeit ist die Verwendung einer SCO-Verbindung.

0

Versuchen Sie folgenden Code-Schnipsel mit:

public class AudioStream extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    String url = "http://www.example.mp3"; 
    MediaPlayer mp = new MediaPlayer(); 
    try { 
    mp.setDataSource(url); 
    mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mp.prepare(); 
    mp.start(); 
    } catch (Exception e) { 
    Log.i("Exception", "Exception in streaming = " + e); 
    } 
} 
} 
-1

Es ist wirklich schwer, das zu tun. Aber ich habe viel recherchiert und einen Weg gefunden. Hat mehrere Delay-, Verbindungs- und Root-Probleme, funktioniert aber scheinbar. Dazu müssen Sie die "AirAudio" -Anwendung auf dem Server und den "AllConnect" -Empfänger installiert haben. Dann öffnest du AirAudio auf dem Home-Bildschirm und dann öffnest du AllConnect, drückst auf deinem Gerät, dann auf Quellen und wähle den Server, dann wähle die streaming mp3. Das Problem ist, dass die Verzögerung sehr groß ist und ein weiterer Defekt ist, dass nur der Sound des Systems des Android-Servers zu übertragen, sollten Sie root auf dem Telefon haben ... Ich habe auch versucht, den Empfänger des Streaming als VLC, war weniger verzögert aber immer noch So ist es unbequem.