從Android方面,我認爲最好的辦法就是打開你的電腦服務的連接:
URL url = new URL("http://192.186.0.1/path/to/service");
URLConnection connection = url.openConnection();
將它作爲一個OutputStream:
OutputStream out = new BufferedStream(connection.getOutputStream());
,然後使用AudioRecord
發送雖然記錄的數據:
public static final int DEFAULT_SAMPLE_RATE = 8000;
private static final int DEFAULT_BUFFER_SIZE = 4096;
private static final int CALLBACK_PERIOD = 4000;
AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT,
DEFAULT_SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_DEFAULT,
AudioFormat.ENCODING_DEFAULT, DEFAULT_BUFFER_SIZE);
recorder.setPositionNotificationPeriod(CALLBACK_PERIOD);
int bytesRead = 0;
ByteBuffer buffer = ByteBuffer.allocateDirect(DEFAULT_BUFFER_SIZE);
while ((bytesRead = recorder.read(buffer, DEFAULT_BUFFER_SIZE)) > 0) {
out.write(buffer.array(), 0, bytesRead);
}
所有這些都應該在一個單獨的線程上完成,以避免應用程序崩潰,並在錄製停止或連接丟失時處理機制。此外,我很確定它應該通過WiFi工作,雖然我不確定它是否會與藍牙一樣(儘管大多數帶有BT的設備現在有wifi,並且您獲得更多帶寬)
我還沒有測試這個代碼,所以我不是100%肯定它會工作。
接下來的事情是在機器上將音頻傳輸到需要的應用程序,但這是我的經驗。我想你將不得不做一個虛擬驅動程序或類似的東西。 也必須對從桌面應用程序發送到手機的音頻進行相反的處理(我對該部分感興趣,因爲它會爲觀看電影製作一個漂亮的無線耳機)。
這是我的2美分;我很想知道它是否有效。 ;)
我想要類似的功能性。我希望通過電話將來自電話的音頻(VOICE_DOWNLINK)作爲揚聲器電話發回PC。但保留麥克風在電話 – Mark 2010-09-06 21:27:56
這不是一個微不足道的要求;在bluez最少需要a)爲SDP記錄添加免提角色。 b)從SDP記錄中刪除音頻網關。 c)改變手機的設備類模仿耳機。這只是通過免提配置文件進行連接。就發送音頻等而言,這是另一個挑戰。我不確定bluedroid是否支持此功能;您可能需要定製內核。 – TwinPrimesAreEz 2014-04-24 21:56:46