⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmusicplayer.java

📁 网上收集的
💻 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 + -