이것이 중복 된 경우 사과드립니다. 그러나 여기에서 발견 한 내용은 아무 것도 작동하지 않습니다. libGDX를 사용하여 Java에서 Desktop 및 Android 용 게임을 작업 중입니다. 플랫폼 관련 모듈에 구현 된 핵심 모듈의 인터페이스를 사용하여 MIDI 지원을 추가했습니다. 다음은 그 인터페이스이다 :데스크탑의 libGDX 미디 볼륨 컨트롤
public interface Midi {
void setLooping(boolean looping);
void pause();
void stop();
void setPosition(int pos);
void dispose();
long getPosition();
boolean isLooping();
void setVolume(float volume);
void onPause();
void onResume();
}
그리고 내 바탕 화면에서 내 구현 및 안드로이드는로드 프로젝트와 완벽하게 미디 파일을 재생할 수 있습니다. Android 버전에서는 볼륨을 쉽게 설정할 수도 있습니다. 그러나 나는 바탕 화면에 볼륨을 구현하는 방법을 알아낼 수 없습니다. 나는 0과 1 사이의 float로 트랙의 볼륨을 설정하여 0이 완전히 조용하고 1이 가장 큰 것입니다. 다음은 바탕 화면에서 미디 플레이어 내 현재의 구현 : 나는 많은 다른 것들을 시도
public class MidiPlayer implements Midi {
/**
* The sequencer to play the midi track.
*/
private Sequencer sequencer;
/**
* Whether or not the track is looping.
*/
private boolean looping;
public MidiPlayer(FileHandle fileHandle) {
try {
sequencer = MidiSystem.getSequencer();
sequencer.open();
sequencer.setSequence(fileHandle.read());
sequencer.setMicrosecondPosition(0);
sequencer.setLoopStartPoint(0);
sequencer.setLoopEndPoint(-1);
looping = false;
} catch (MidiUnavailableException | InvalidMidiDataException | IOException e) {
Gdx.app.error(getClass().getName(), e.getMessage(), e);
}
}
@Override
public void play() {
sequencer.start();
}
@Override
public void setLooping(boolean looping) {
this.looping = looping;
if(!looping) {
sequencer.setLoopCount(0);
} else {
sequencer.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
}
}
@Override
public void pause() {
sequencer.stop();
}
@Override
public void stop() {
sequencer.stop();
sequencer.setMicrosecondPosition(0);
}
@Override
public void setPosition(int pos) {
sequencer.setMicrosecondPosition(pos);
}
@Override
public void dispose() {
sequencer.close();
}
@Override
public long getPosition() {
return sequencer.getMicrosecondPosition();
}
@Override
public boolean isLooping() {
return this.looping;
}
@Override
public void setVolume(float volume) {
//I have tried several things here and none have worked
}
@Override
public void onPause() {
//ANDROID ONLY
}
@Override
public void onResume() {
//ANDROID ONLY
}
}
, 나는 다음과 같은 솔루션을 시도 : http://www.java2s.com/Code/Java/Development-Class/SettingtheVolumeofPlayingMidiAudio.htm
What's the method to control volume in an MIDI sequencer?
How to control the MIDI channel's volume
그리고 아무도 일한 적이 없다.
Android에서 볼륨을 어떻게 처리합니까? 데스크탑에서 사용하는 신디사이저는 무엇입니까? –
@ CL. 바탕 화면의 경우, 나는'sequencer = MidiSystem.getSequencer(); '에 설명 된대로 시스템 신디사이저를 사용하고있는 중이며, 안드로이드에서는 내장 된'MediaPlayer' 클래스를 사용하고 있습니다. 'mediaPlayer.setVolume (volume, volume); '으로 볼륨을 설정하십시오. – JoseRivas1998