Как передавать аудио с одного устройства Android на другое устройство Android Через Bluetooth?
Можно ли передавать аудио через Bluetooth? Во время моих исследований я обнаружил, что это возможно только с помощью A2DP(Advanced Audio Distribution Profile)
. И поддерживает ли любое устройство Android A2DP? Если нет, возможно ли передавать звук между двумя устройствами Android с помощью bluetooth? Пожалуйста, помогите мне понять это.
Я просмотрел следующие ссылки:
Ответы
Ответ 1
Можно ли передавать аудио через Bluetooth?
Ниже описана возможность передачи потокового аудио через Bluetooth между устройствами, но есть знак вопроса о его успехах, пока официальный Google не объявит, что У нас есть исправлена проблема с потоковым потоком a2dp на N7. Следующий выпуск должен иметь исправление.
Извините за проблему.
Исправить плохое качество A2DP в 4.2.2
Качество звука Bluetooth страдает после обновления до 4.2 с помощью Galaxy Nexus
Android 4.3 Качество звука Bluetooth для Fix для Nexus 7 Flo
И поддерживает ли любое устройство Android A2DP?
Поддержка совместимости упоминается на сайте разработчиков Android, который добавлен из API Level-11 with appropriate features.
Но я наткнулся на прохождение XDA, где проблема с упоминанием OP в Android 2.1
, означает также поддержку на предыдущих уровнях api, но проблемы с OP сталкиваются.
Надеюсь, что имеет смысл понять, и я хотел бы рекомендовать форум XDA, чтобы получить дополнительную информацию о совместимости A2DP и ее успешности.
Ответ 2
Я считаю, что если A2DP не работает должным образом, лучше перейти на более низкий уровень, и мы можем создать базовый поток, который можно использовать для отправки любой формы даты. Мне удалось отправить поток байтов через Bluetooth между устройствами J2ME.
Если установить приложение на обоих устройствах приемлемо, у меня есть примеры кодов для создания 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, просто используйте его как обычный серверный сервер:
BluetoothSocket socket = serverSocket.accept();
а затем вы можете получить InputStream
и OutputStream
из этого BluetoothSocket
и отправить аудиопоток точно так же, как HttpConnection
2) клиентское устройство:
Предположим, что у вас уже есть BluetoothDevice
// you should implement the method getBlutoothDevice
BluetoothDevice device = getBluetoothDevice();
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID_SECURE);
Ответ 3
Вы также можете передавать аудио через базовое соединение SCO, которое не зависит от какого-либо профиля. Однако имейте в виду, что A2DP - это профиль, специально разработанный для потоковой передачи музыки. Таким образом, любая реализация, которую вы сделаете сами, будет страдать по качеству по сравнению с A2DP.
Если вы не передаете музыку на устройство, которое не поддерживает A2DP, я бы, безусловно, использовал A2DP. На самом деле, ваш единственный вариант - использовать ссылку SCO.
Ответ 4
Попробуйте использовать следующий фрагмент кода:
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);
}
}
}
Ответ 5
Это очень сложно сделать. Но я много исследовал и получил способ. Имеет несколько задержек, связи и проблем с корнем, но, по-видимому, работает. Для этого вам нужно будет установить приложение "AirAudio" на сервере и приемник "AllConnect". Затем вы открываете AirAudio на главном экране, а затем открываете AllConnect, нажимаете на свое устройство, затем на источники и выбираете сервер, затем выбираете потоковый mp3. Проблема в том, что задержка очень велика, а другой дефект заключается в том, что для передачи только звука системы сервера android у вас должен быть root на телефоне... Я также попробовал приемник потоковой передачи, являющийся VLC, был меньше отложено, но все равно Так неудобно.