2013-05-28 24 views
24

ブルートゥースでオーディオをストリーミングすることはできますか?私の研究では、それはA2DP(Advanced Audio Distribution Profile)を使ってのみ可能であることが分かった。そして、すべてのアンドロイドデバイスはA2DPをサポートしていますか?そうでない場合は、ブルートゥースを使用して2つのアンドロイドデバイス間でオーディオをストリーミングできますか?これを理解するのを手伝ってください。1つのAndroidデバイスから別のAndroidデバイスにオーディオをストリーミングする方法Bluetooth経由ですか?

私は、以下のリンクを介して見てきました:

+2

1.ほぼすべてのデバイスがA2DPをサポートしています。A2DPとHFP(ハンズフリー)プロファイルは、電話に必要な基本プロファイルです。 2. Android 4.2.1には、Bluetooth経由のオーディオストリーミングの問題がありました。最新のリリースではGoogleで修正された不安定なオーディオでした。 3.以前はほとんどの人がbluez(オープンソースのブルートゥース)スタックを試していましたが、JBからはじめてbluezがbroadcommスタックに置き換えられました。電話機にオーディオシンクプロファイルを実装する必要があります。 Alljoynを使用して、2つのデバイス間のオーディオストリーミングが可能です。[link](https://www.alljoyn.org/about/core-services) – ashish

+0

このリンクをご利用いただきありがとうございます。私はそれを通過しています。そして何が起こるかを教えてくれるでしょう。再度、感謝します。 –

+0

オーディオはBluetooth経由でストリーミングする必要がありますか? [WiFi-Direct](http://developer.android.com/guide/topics/connectivity/wifip2p.html)の使用はどうですか?これにより実際にはより柔軟性と機能が得られます。 – BigMacAttack

答えて

11

は、Bluetoothを介してオーディオをストリーミングすることが可能ですか?スレッドの並べ替え以下

のBluetoothを介してオーディオをストリーミングするデバイス間で可能であること、その可能性は述べていますが、Googleの公式は、その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

すべてのアンドロイドデバイスはA2DPをサポートしていますか?

サポート互換性ががAPI Level-11 with appropriate features.から追加された。しかし、私はAndroid 2.1XDA tread OPの言及の問題に出くわしたことAndroid developers siteに言及している場合、そのもの問題に直面して、以前のAPIレベルが、OPにサポートを意味します。

A2DP互換性とその成功の詳細については、XDA forumを参照することをお勧めします。

1

私の意見では、A2DPが正常に動作しない場合は、下位レイヤーに移行し、任意の形式のデータを送信するために使用できる基本ストリームを作成できます。私は、J2MEデバイス間でBluetooth経由でバイトストリームを送信することに成功しました。

両方のデバイスにアプリケーションをインストールすることができれば、Bluetoothサーバーとソケットを介して互いに通信するクライアントを作成するためのサンプルコードがあります。ソケットが確立されると、オーディオストリームを送信できます:)

ここ

は、一部のコアコードです:

1)サーバ装置:

// 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); 

今あなたはServerSocketをを持って、普通のServerSocketとしてそれを使用します。

BluetoothSocket socket = serverSocket.accept(); 

、その後、あなたはこのBluetoothSocketからInputStreamOutputStreamを取得し、ちょうどHttpConnection

2)クライアントデバイスのようにオーディオストリームを送信することができます

は、すでにBluetoothDevice

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

通常のA2DPは、RFCOMMパケットよりもはるかに大きなペイロードサイズを持つL2CAPを介してストリーミングされることに注意してください。RFCOMMでストリーミングすると、ペイロードのサイズが小さくなり、レイヤーが追加されるため、オーディオの品質が低下します – TwinPrimesAreEz

0

を得たと仮定任意のプロファイルに依存しない基本的なSCO接続を介してオーディオをストリーミングすることもできます。ただし、A2DPは音楽をストリーミングするために特別に開発されたプロファイルであることに注意してください。したがって、あなたが自分で作った実装は、A2DPと比べて品質が悪くなります。

A2DPをサポートしていないデバイスに音楽をストリーミングしない限り、私は確かにA2DPを使用します。本当にあなたの唯一の選択肢は、SCOリンクを使用することです。

0

次のコードスニペットを使用してみてください:

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

それはそれを行うことは本当に難しいです。しかし、私は多くの研究を行い、道を得ました。いくつかの遅延、接続、ルートの問題がありますが、明らかに機能します。このためには、サーバーと "AllConnect"レシーバーに "AirAudio"アプリケーションをインストールする必要があります。次に、ホーム画面でAirAudioを開き、AllConnectを開き、デバイスを押してから、ソースを選択してサーバーを選択し、ストリーミングmp3を選択します。問題は、遅延が非常に大きいことと、もう一つの欠陥は、アンドロイドサーバーのシステムのサウンドだけを送信することです。あなたは電話に根を張っておくべきです...私はVLCであるストリーミングの受信者を試しました。遅れていますが、まだそれは不快です。

関連する問題