본문 바로가기
안드로이드 코드

20201221 안드로이드 블루투스로 소리 보내기

by 우딬 2020. 12. 21.

서비스 중에 많은 잡음도 있고 버그도 많고 ㅠㅠㅠㅠㅠㅠ

 

그 중에 많은 라이더들이 블루투스 헷멜으로 일을 하고 계신다.

 

그러다 보니 블루투스 헬멧을 사용할땐 그 소리가 헬멧으로만 나게끔 해야하는데

 

블루투스헬멧 뿐만 아니라 휴대폰에서도 소리가 아~~~~~~~~주 크게 나니

 

엘베 탈때 부끄럽다. 시끄럽다. 많은 피드백이 있었다.

 

그래서 그 부분을 해결하기 위해 오늘 하루종일 검색검색하였다.

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int volume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
am.stopBluetoothSco();
am.setBluetoothScoOn(false);
am.setSpeakerphoneOn(true);
am.setMode(AudioManager.MODE_NORMAL);

AudioDeviceInfo[] devices = am.getDevices(AudioManager.GET_DEVICES_OUTPUTS);

for (AudioDeviceInfo device : devices) {
   if (device.getType() == AudioDeviceInfo.TYPE_BLUETOOTH_A2DP) {
       am.setMode(AudioManager.MODE_IN_COMMUNICATION);
       am.startBluetoothSco();
       am.setBluetoothScoOn(true);
       am.setSpeakerphoneOn(false);
    }
}

MediaPlayer mp = new MediaPlayer();
mp = MediaPlayer.create(MenuActivity.this,R.raw.noti_sound);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.start();

이게 내가 찾아서 만든 코드이다.

 

AudioManager는를 통해서 소리를 어디로 보낼지 결정하며,

setBluetoothScoOn(false); //블루투스소리끔
setSpeakerphoneOn(true); //내장스피커소리켬

이걸 설정하면 소리를 어느쪽에 보내는지 가능하다.

 

그리고 AudioManager.GET_DEVICES_OUTPUTS 이게 지금현재 블루투스랑 연결되어있는 모든 디바이스를 확인하고

그중에 TYPE_BLUETOOTH_A2DP 이 타입으로 연결된 블루투스가 있다면

설정을 반대로 바꿔주는 형식으로 만들었다.

 

방금 들어온 소식으로는 잘 된다고 하니 오늘 6시간 검색이 헛고생이 아니였구나 싶다.

 

인터넷에 많은 코드들이 돌아다니지만 나한테 맞는 코드를 찾기란 정말 쉽지 않은거 같다.

 

오늘도 큰산을 하나 넘은 기분이다!

 

댓글