📄 cmusicplayer.java
字号:
package chiidanceapp;
import java.io.File;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.sound.sampled.LineUnavailableException;
import java.util.ResourceBundle;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class CMusicPlayer {
/////////////////////////////////////////////////////////////////////////
static ResourceBundle res = ResourceBundle.getBundle("chiidanceapp.Res1");
private int MusicIndex;
private byte[] AudioSamples;
private AudioFormat Format;
private InputStream aMusicInputStream;
private AudioFormat MusicStreamFormat;
private SourceDataLine line;
private File MusicFile;
private boolean isFinished = false;
/////////////////////////////////////////////////////////////////////////
public CMusicPlayer() {
}
public boolean isFinished()
{
return isFinished;
}
public File LoadFile( String FileName )
{
return new File( FileName );
}
/////////////////////////////////////////////////////////////////////////
public void initMusic( int MusicIndex )
{
switch( MusicIndex )
{
case 1:
MusicFile = new File( "Resource/music/start.wav" );
break;
case 2:
MusicFile = new File( "Resource/music/startyourchii.wav" );
break;
case 3:
MusicFile = new File( "Resource/sound/hello.wav" );
break;
case 4:
MusicFile = new File( "Resource/sound/goodmorning.wav" );
break;
case 5:
MusicFile = new File( "Resource/sound/goodevening.wav" );
break;
case 6:
MusicFile = new File( "Resource/sound/goodbye.wav" );
break;
case 7:
MusicFile = new File( "Resource/sound/chii_1.wav" );
break;
case 8:
MusicFile = new File( "Resource/sound/chii_2.wav" );
break;
case 9:
MusicFile = new File( "Resource/sound/chii_3.wav" );
case 10:
MusicFile = new File( "Resource/sound/chii_5.wav" );
break;
case 11:
MusicFile = new File( "Resource/sound/sumomo_1.wav" );
break;
case 12:
MusicFile = new File( "Resource/music/freyavoice.wav" );
break;
}
try {
AudioInputStream MusicInputStream
= AudioSystem.getAudioInputStream( MusicFile );
Format = MusicInputStream.getFormat();
AudioSamples = getAudioSamples( MusicInputStream );
}
catch ( UnsupportedAudioFileException ex ) {}
catch (IOException ex) {}
aMusicInputStream = new ByteArrayInputStream( this.getSamples() );
}
/////////////////////////////////////////////////////////////////////////////
public byte[] getSamples(){
return AudioSamples;
}
/////////////////////////////////////////////////////////////////////////////
public byte[] getAudioSamples( AudioInputStream MusicStream )
{
int AudioSampleLengh = ( int )( MusicStream.getFrameLength() *
Format.getFrameSize() );
byte aAudioSamples[] = new byte[ AudioSampleLengh ];
DataInputStream dataInputStream = new DataInputStream( MusicStream );
try{
dataInputStream.readFully( aAudioSamples );
}catch( Exception ex ){
System.out.println( "完全读取样本长度失败!" );
}
return aAudioSamples;
}
//////////////////////////////////////////////////////////////////////////
public void play()
{
isFinished = false;
int bufferSize = Format.getFrameSize() *
Math.round(Format.getSampleRate() / 10);
byte[] buffer = new byte[bufferSize];
try {
DataLine.Info info =
new DataLine.Info(SourceDataLine.class, Format);
line = (SourceDataLine)AudioSystem.getLine(info);
line.open(Format, bufferSize);
}
catch ( LineUnavailableException ex ) {
ex.printStackTrace();
return;
}
line.start();
try {
int numBytesRead = 0;
while (numBytesRead != -1) {
numBytesRead =
aMusicInputStream.read( buffer, 0, buffer.length );
if (numBytesRead != -1) {
line.write( buffer, 0, numBytesRead );
}
}
}
catch ( IOException ex ) {}
line.drain();
line.close();
aMusicInputStream = null;
MusicFile = null;
isFinished = true;
}
public void stop()
{
if( line.isActive() )
line.stop();
line.close();
MusicFile = null;
aMusicInputStream = null;
}
//////////////////////////////////////////////////////////////////////////
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -