import java.io.IOException; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; import wiiremotej.PrebufferedSound; import wiiremotej.WiiRemote; import wiiremotej.WiiRemoteJ; import wiiremotej.event.WRButtonEvent; import wiiremotej.event.WRIREvent; import wiiremotej.event.WiiRemoteAdapter; import wiiremotej.event.WiiRemoteListener; public class WiiSample3 { private static PrebufferedSound prebuf; private static WiiRemote remote; /** * @param args * @throws IOException * @throws UnsupportedAudioFileException */ public static void main(String[] args) throws IOException, UnsupportedAudioFileException { System.setProperty("bluecove.jsr82.psm_minimum_off", "true"); WiiRemoteJ.setConsoleLoggingAll(); while (remote == null) { try { remote = WiiRemoteJ.findRemote(); } catch(Exception e) { remote = null; e.printStackTrace(); System.out.println("Failed to connect remote. Trying again."); } } remote.addWiiRemoteListener(simpleEventLisntener); remote.setAccelerometerEnabled(true); remote.setSpeakerEnabled(true); remote.setIRSensorEnabled(true, WRIREvent.BASIC); remote.setLEDIlluminated(0, true); System.out.println("Buffering audio file..."); long time = System.currentTimeMillis(); AudioInputStream audio = AudioSystem.getAudioInputStream(new java.io.File("Audio.au")); prebuf = WiiRemote.bufferSound(audio); time = System.currentTimeMillis()-time; time /= 1000; System.out.println("Prebuf done: " + time + " seconds."); } private static WiiRemoteListener simpleEventLisntener = new WiiRemoteAdapter() { public void disconnected() { System.out.println("Remote disconnected... Please Wii again."); System.exit(0); } public void buttonInputReceived(WRButtonEvent evt) { if (evt.wasPressed(WRButtonEvent.TWO)) System.out.println("2"); if (evt.wasPressed(WRButtonEvent.ONE)) System.out.println("1"); if (evt.wasPressed(WRButtonEvent.B)) System.out.println("B"); if (evt.wasPressed(WRButtonEvent.A)) System.out.println("A"); if (evt.wasPressed(WRButtonEvent.MINUS)) System.out.println("Minus"); if (evt.wasPressed(WRButtonEvent.HOME)) System.out.println("Home"); if (evt.wasPressed(WRButtonEvent.LEFT)) System.out.println("Left"); if (evt.wasPressed(WRButtonEvent.RIGHT)) System.out.println("Right"); if (evt.wasPressed(WRButtonEvent.DOWN)) System.out.println("Down"); if (evt.wasPressed(WRButtonEvent.UP)) System.out.println("Up"); if (evt.wasPressed(WRButtonEvent.PLUS)) System.out.println("Plus"); try { // 1ボタンで再生 if (evt.wasPressed(WRButtonEvent.ONE)){ if (prebuf != null){ remote.playPrebufferedSound(prebuf, WiiRemote.SF_PCM8S); } // 2ボタンでストップ }else if (evt.wasPressed(WRButtonEvent.TWO)){ remote.requestStatus(); if (remote.isPlayingSound())remote.stopSound(); // +ボタンでボリュームアップ }else if (evt.wasPressed(WRButtonEvent.PLUS)){ if (remote.isSpeakerEnabled()){ double volume = (remote.getSpeakerVolume()*20+1)/20; if (volume <= 1)remote.setSpeakerVolume(volume); System.out.println("Volume: " + remote.getSpeakerVolume()); } // -ボタンでボリュームダウン }else if (evt.wasPressed(WRButtonEvent.MINUS)){ if (remote.isSpeakerEnabled()){ double volume = (remote.getSpeakerVolume()*20-1)/20; if (volume >= 0)remote.setSpeakerVolume(volume); System.out.println("Volume: " + remote.getSpeakerVolume()); } } }catch(Exception e){e.printStackTrace();} } }; }