같은 getStereoVolume()
또는안드로이드에서 AudioTrack의 볼륨을 얻는 방법은 무엇입니까?
setOnVolumeChangedHandler(...)
어떻게 내가 볼륨 레벨을 추적 할 수 있습니다, 나는 track.setStereoVolume(a,b);
를 사용하여 audioTrack의 볼륨을 설정할 수 있습니다하지만 난 볼륨을 얻을 수있는 방법을 찾을 수 없습니다?
같은 getStereoVolume()
또는안드로이드에서 AudioTrack의 볼륨을 얻는 방법은 무엇입니까?
setOnVolumeChangedHandler(...)
어떻게 내가 볼륨 레벨을 추적 할 수 있습니다, 나는 track.setStereoVolume(a,b);
를 사용하여 audioTrack의 볼륨을 설정할 수 있습니다하지만 난 볼륨을 얻을 수있는 방법을 찾을 수 없습니다?
실제 답변이 아니라 단지 가정입니다. 지금까지 테스트하지는 않았지만 제대로 작동합니다. 나는이 방법을 오버라이드해야한다고 생각하지 않는다. 사용해보기
AudioManager audioManager = (AudioManager)
getSystemService(AUDIO_SERVICE);
float volume = (float) audioManager.
getStreamVolume(AudioManager.STREAM_MUSIC);
문제는 내가 단지 audiotrack의 볼륨을 줄입니다. 그래서 다른 audiotrack은 1.0 (full)의 볼륨을 가질 수 있습니다. 따라서 AudioManager의 getStreamvolume은 이러한 값과 관계없이 1.0 또는 0.5로 설정 될 수 있습니다. – frankish
오디오 트랙의 왼쪽 및 오른쪽 볼륨 레벨을 가져올 수 없습니다.
그래서 나는 AudioTrack
을 나타내는 클래스를 만들 것을 제안합니다.
public class AudioPlayer{
AudioTrack track;
float leftVolume;
float rightVolume;
public AudioPlayer(){
//create audio track.
leftVolume = 1;
rightVolume = 1;
}
public void setStereoVolume(float left, float right){
this.leftVolume = left;
this.rightVolume = right;
track.setStereoVolume(left, right);
}
}
당신이 당신의 AudioTrack
스테레오 볼륨을 만드는 두 채널 모두 1.0이다. 볼륨을 AudioPlayer
으로 설정하면 새 레벨을 추적합니다.
AudioPlayer
에 AudioTrack
이 완전히 캡슐화되어 있으면 작동합니다.
편집 :
AudioTrack
다른 트랙의 자체 볼륨 레벨이 독립적 있습니다. AudioTrack
이 재생되는 스트림 (STREAM_MUSIC, STREAM_SYSTEM 등)도 최종 볼륨 레벨에 영향을줍니다.
따라서 AudioTrack
이 왼쪽 및 오른쪽 채널의 경우 .5, .5, STREAM_MUSIC에서 재생되는 경우를 말합니다. 그 스트림이 0.5 볼륨에있는 경우 일부 자동 볼륨 조정으로 인해이 스트림 레벨에서 발생 (또는 어딘가에 그 이상 숨겨져한다 무엇 이건, 전력 절감 또는 헤드폰 -에 발생하는 경우, 최종 오디오 레벨은
.5*.5 = .25 //for the left and right channels.
될 것입니다) 여전히 볼륨을 조정하지 않아야합니다. AudioTrack
답변 해 주셔서 감사합니다. Android OS에서 트랙 볼륨을 변경하면 (예 : 헤드폰을 연결할 때 삼성 기기의 자동 볼륨 변경과 같은)이 값은 동기화되지 않습니다. – frankish
나는 그렇게 생각하지 않는다. 여러 볼륨 수준이 있습니다. 오디오 트랙의 볼륨 레벨은 다른 레벨과는 독립적입니다. 최종 레벨은 출력되는 스트림 유형에 의해 곱해집니다. 나는 답을 다듬을 것이다. –
AudioManager를 사용하는 것이 해결책 일 수 있다고 생각합니다. getStreamVolume (int streamType) 메소드가 있습니다. – Opiatefuchs
일반 오버 라이더 기능이라고 생각합니다. 따라서 AudioTrack의 볼륨도 0.0f입니다. AudioManager는 getStreamVolume에 대해 1.0f를 반환 할 수 있습니다. 그렇지 않니? – frankish