Monday, November 16, 2009

Audio Capture Applet Source Code

Hello friends,check for an fine program on java.....
Applet Class

/**
 *This is a simple Sound Recorder program written in java.
 *@author Tapas kumar jena
 *@mail tapas.friends@gmail.com
 */

import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.BooleanControl;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.Port;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.TargetDataLine;
import javax.sound.sampled.AudioFormat.Encoding;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.Timer;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;


//Main class
public class AudioApplet extends JApplet implements ActionListener, ChangeListener, ItemListener {
 //Global declarations
 protected boolean running;
 ByteArrayOutputStream out = null;
 AudioFileFormat.Type fileType;
 Object lock = new Object();
 TargetDataLine line = null;
 SourceDataLine sline = null;
 volatile boolean paused = false;
 boolean first;

 JButton record;
 JButton play;
 JButton pause;
 JButton stop;
 JButton send;
 JButton listen;
 JButton save;

 JTextField fnametxt;
 JComboBox servercombo;
 JTextField statustxt;

 JSlider progress;
 JLabel time;
 Timer timer;
 int audioLength ;
 int audioPosition = 0;
 JLabel vol1 = null;
 JLabel vol2 = null;
 JSlider volslider = null;
 JToggleButton mute = null;
 FloatControl volCtrl = null;
 Port lineIn = null;
 String list[];
 volatile String msg;

 public void init()
 {
  setLayout(null);
  JLabel recorder = new JLabel("Recorder");
  JLabel fileName = new JLabel("Please Enter File Name");
  JLabel server = new JLabel("Listen From Server");
  JLabel status = new JLabel("Status...");

  fnametxt = new JTextField("FileName");
  servercombo = new JComboBox();
  statustxt = new JTextField("Check your status here...");

  record = new JButton("Record");
  play = new JButton("Play");
  pause = new JButton("Pause");
  stop = new JButton("Stop");
  send = new JButton("Upload");
  listen = new JButton("Listen");
  save = new JButton("Save");

  progress = new JSlider(0, audioLength, 0);
  time = new JLabel("0:00");
  mute = new JToggleButton("Mute");
  vol1 = new JLabel("Volume  -");
  vol2 = new JLabel("+");
  volslider = new JSlider(0,100);
  volslider.setToolTipText("Volume");
  volslider.setPaintTicks(true);
  volslider.setMinorTickSpacing(10);

  recorder.setBounds(10,10,70,25);
  record.setBounds(70,10,80,25);
  play.setBounds(155,10,80,25);
  pause.setBounds(240,10,80,25);
  stop.setBounds(325,10,80,25);
  fileName.setBounds(10,40,130,25);
  fnametxt.setBounds(180,40,140,25);
  send.setBounds(325,40,80,25);
  server.setBounds(10,70,130,25);
  servercombo.setBounds(180, 70, 140, 25);
  listen.setBounds(325,70,80,25);
  status.setBounds(10,100,70,25);
  statustxt.setBounds(100,100,222,25);
  save.setBounds(325,100,80,25);

  progress.setBounds(50, 140, 300, 20);
  time.setBounds(360, 140, 30, 20);
  vol1.setBounds(75, 170, 100, 20);
  volslider.setBounds(130, 180, 150, 20);
  vol2.setBounds(280, 172, 30, 20);
  mute.setBounds(330, 170, 65, 30);

  add(recorder);
  add(record);
  add(play);
  add(pause);
  add(stop);
  add(save);

  add(fileName);
  add(fnametxt);
  add(send);
  add(server);
  add(servercombo);
  add(listen);
  add(status);
  add(statustxt);

  add(progress);
  add(time);
  add(vol1);
  add(volslider);
  add(vol2);
  add(mute);

  record.setEnabled(true);
  pause.setEnabled(true);
  play.setEnabled(true);
  stop.setEnabled(true);
  save.setEnabled(true);
  send.setEnabled(true);
  listen.setEnabled(true);

  record.addActionListener(this);
  play.addActionListener(this);
  pause.addActionListener(this);
  stop.addActionListener(this);
  save.addActionListener(this);
  send.addActionListener(this);
  listen.addActionListener(this);
  mute.addActionListener(this);
  progress.addChangeListener(this);
  volslider.addChangeListener(this);
  servercombo.addItemListener(this);       
 }//End of init method

 //***************************************************/   
 //******* StateChanged method for ChangeListener*****/
 //***************************************************/

 public void stateChanged(ChangeEvent e) {
  if (e.getSource()==volslider) {
   volumeControl();
  }else {
   int value = progress.getValue();
   time.setText(value / 1000 + "." + (value % 1000) / 100);
  }
 }

 public void itemStateChanged(ItemEvent ie) {
  msg = "  Listening from server [buffering]...";
  statustxt.setText(msg);
  listenAudio();       
 }

 //***************************************************/   
 //***** ActionPerformed method for ActionListener****/
 //***************************************************/

 public void actionPerformed(ActionEvent e) {
  if(e.getSource()==record){
   msg = "  Capturing audio from mic.....";
   statustxt.setText(msg);
   record.setEnabled(false);
   pause.setEnabled(true);
   stop.setEnabled(true);
   play.setEnabled(false);
   save.setEnabled(true);
   if(paused)
   {
    resumeRecord();
   }       
   else
   {
    recordAudio();
   }
  }
  else if (e.getSource()==play) {
   msg = "  Playing recorded audio.....";
   statustxt.setText(msg);
   stop.setEnabled(true);
   if(first)
   {
    playAudio();
   }
   else
   {
    resumePlay();           
   }
  }
  else if (e.getSource()==pause) {
   msg = "Paused....";
   statustxt.setText(msg);
   record.setEnabled(true);
   pause.setEnabled(true);
   pauseAudio();
   first=false;
  }
  else if (e.getSource()==stop) {
   msg = "  Action stopped by user.....";
   statustxt.setText(msg);
   progress.setValue(0);
   record.setEnabled(true);
   stop.setEnabled(false);
   play.setEnabled(true);
   running = false;
   stopAudio();

  }
  else if (e.getSource()==save) {
   msg = "  Saving file to user's System....";
   statustxt.setText(msg);
   saveAudio();
  }
  else if (e.getSource()==send) {
   msg = "  Sending recorded file to server...";
   statustxt.setText(msg);
   uploadAudio();

  }
  else if(e.getSource()==listen){
   msg = "  Listening from server [buffering]...";
   statustxt.setText(msg);
   //code for listen audio   
  }
  else {
   muteControl();

  }
 }

 //******************************************/
 //**************   Method Declarations  ****/
 //******************************************/ 

 private void recordAudio() {
  first=true;
  try {
   final AudioFileFormat.Type fileType = AudioFileFormat.Type.AU;                      
   final AudioFormat format = getFormat();
   DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
   line = (TargetDataLine)AudioSystem.getLine(info);               
   line.open(format);
   line.start();

   Runnable runner = new Runnable() {
    int bufferSize = (int) format.getSampleRate()* format.getFrameSize();
    byte buffer[] = new byte[bufferSize];           

    public void run() {
     out = new ByteArrayOutputStream();
     running = true;
     try {                      
     while (running) {                           
      int count = line.read(buffer, 0, buffer.length);
      if (count > 0) {
       out.write(buffer, 0, count);
       InputStream input = new ByteArrayInputStream(buffer);
       final AudioInputStream ais = new AudioInputStream(input, format, buffer.length /format.getFrameSize());
      }                           
     }
     out.close();
     }catch (IOException e) {                    
      System.exit(-1);
     }
    }
   };
   Thread recordThread = new Thread(runner);
   recordThread.start();
  }catch(LineUnavailableException e) {
   System.err.println("Line Unavailable:"+ e);
   e.printStackTrace();
   System.exit(-2);
  }
  catch (Exception e) {
   System.out.println("Direct Upload Error");
   e.printStackTrace();
  }
 }//End of RecordAudio method

 private void playAudio() {
  try{
   byte audio[] = out.toByteArray();
   InputStream input = new ByteArrayInputStream(audio);
   final AudioFormat format = getFormat();
   final AudioInputStream ais = new AudioInputStream(input, format, audio.length /format.getFrameSize());
   DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
   sline = (SourceDataLine)AudioSystem.getLine(info);
   sline.open(format);
   sline.start();              
   Float audioLen = (audio.length / format.getFrameSize()) * format.getFrameRate();

   Runnable runner = new Runnable() {
    int bufferSize = (int) format.getSampleRate() * format.getFrameSize();
    byte buffer[] = new byte[bufferSize];

    public void run() {
     try {
      int count;
      synchronized(lock){
       while((count = ais.read( buffer, 0, buffer.length)) != -1) {
        while(paused)  {
         if(sline.isRunning()) {
          sline.stop();
         }
         try{
          lock.wait();
         }
         catch(InterruptedException e) {
         }
        }
        if(!sline.isRunning()) {
         sline.start();
        }
        if(count > 0) {
         sline.write(buffer, 0, count);
        }           
       }                                             
      }
      first=true;
      sline.drain();
      sline.close();
     }catch(IOException e) {
      System.err.println("I/O problems:" + e);
      System.exit(-3);
     }
    }
   };

   Thread playThread  = new Thread(runner);
   playThread.start();
  }catch(LineUnavailableException e) {
   System.exit(-4);
  }
 }//End of PlayAudio method

 private void resumeRecord(){
  synchronized(lock) {
   paused = false;
   lock.notifyAll();
   first = true;
  }
 }//End of ResumeRecord method

 private void stopAudio() {
  if (sline != null) {
   sline.stop();
   sline.close();
  }else {
   line.stop();
   line.close();
  }
 }//End of StopAudio method

 private void resumePlay(){
  synchronized(lock) {
   paused = false;
   lock.notifyAll();
   System.out.println("inside resumeplay method");
  }
 }//End of ResumePlay method

 private void pauseAudio(){
  paused = true;
 }

 private void saveAudio() {
  Thread thread = new saveThread();
  thread.start();
 }

 private void uploadAudio() {
  Thread th= new uploadThread();
  th.start();
 }

 private void listenAudio() {
  Thread thread = new listenThread();
  thread.start();
 }

 private AudioFormat getFormat() {
  Encoding encoding = AudioFormat.Encoding.PCM_SIGNED;
  float sampleRate = 44100.0F;
  int sampleSizeInBits = 16;
  int channels = 2;
  int frameSize = 4;
  float frameRate = 44100.0F;
  boolean bigEndian = false;
  return new AudioFormat(encoding, sampleRate, sampleSizeInBits, channels, frameSize, frameRate, bigEndian);
 }//End of getAudioFormat method

 class saveThread extends Thread  {
  public void run(){
   AudioFileFormat.Type fileType = AudioFileFormat.Type.WAVE;
   FileDialog fd = new FileDialog(new Frame(), "Save as WAVE", FileDialog.SAVE);
   fd.setFile("*.wav");
   fd.setVisible(true);
   String name = fd.getDirectory() + fd.getFile();
   File file = new File(name);

   try{
    byte audio[] = out.toByteArray();
    InputStream input = new ByteArrayInputStream(audio);
    final AudioFormat format = getFormat();
    final AudioInputStream ais = new AudioInputStream(input, format, audio.length /format.getFrameSize());
    AudioSystem.write(ais,fileType,file);
   }catch (Exception e){
    e.printStackTrace();
   }
  }
 }//End of inner class saveThread

 class uploadThread extends Thread{
  public void run(){
   AudioFileFormat.Type fileType = AudioFileFormat.Type.AU;

   try{                   
    line.flush();
    line.close();
   }
   catch(Exception e){
    e.printStackTrace();
    System.err.println("Error during upload");
   }               
  }
 }//End of inner class uploadThread

 class listenThread extends Thread{
  public void run() {
   try {
    URL upload=new URL("http://localhost:8080/TapasApplet/upload");
    HttpURLConnection conn = (HttpURLConnection) upload.openConnection();
    conn.setRequestMethod("POST");

    conn.setDoOutput(true);
    conn.setDoInput(true);
    conn.setUseCaches(false);
    conn.setDefaultUseCaches(false);
    conn.setChunkedStreamingMode(1000);
    conn.setRequestProperty("Content-Type", "application/octet-stream");
    InputStream is = conn.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String serfile = br.readLine();
    while(line != null){
     //un complete code here   
     serfile=br.readLine();
    }
   } catch (IOException e) {
    System.err.println("Error in UserThread run() method");
    e.printStackTrace();
   }
  }

 }

 public void volumeControl() {
  try {
   if(AudioSystem.isLineSupported(Port.Info.LINE_OUT))
   {
    lineIn = (Port)AudioSystem.getLine(Port.Info.LINE_OUT);
    lineIn.open();
   }
   else if(AudioSystem.isLineSupported(Port.Info.HEADPHONE))
   {
    lineIn = (Port)AudioSystem.getLine(Port.Info.HEADPHONE);
    lineIn.open();
   }
   else if(AudioSystem.isLineSupported(Port.Info.SPEAKER))
   {
    lineIn = (Port)AudioSystem.getLine(Port.Info.SPEAKER);
    lineIn.open();
   }
   else
   {
    System.out.println("Unable to get Output Port");
    return;
   }
   final FloatControl controlIn = (FloatControl)lineIn.getControl(FloatControl.Type.VOLUME);
   final float volume = 100 * (controlIn.getValue() / controlIn.getMaximum());
   System.out.println(volume);
   int sliderValue=volslider.getValue();
   controlIn.setValue((float)sliderValue / 100);

  } catch (Exception e) {
   System.out.println(" VOLUME control: exception = " + e);
  }
 }//End of volumeControl method

 public void muteControl() {
  BooleanControl mControl;
  try {
   mControl = (BooleanControl) sline.getControl(BooleanControl.Type.MUTE);

   if (mControl.getValue() == true)
   {
    mControl.setValue(false);
   }
   else
   {
    mControl.setValue(true);
   }             
  } catch (Exception e) {
   System.out.println(" MUTE control: exception = " + e);
  }
 }       
}//End of main class AudioBroadcast

The above prograam looks like below -




Wednesday, November 11, 2009

Signature Capturing Applet

Hello friends, those who are looking for an Signature Capturing Applet with complete source code including Applet class and servlet class, Check it here...

Applet Class
/**
 *@ Tapas ku. jena
 *mail: tapas.friends@gmail.com
 */

 //SignaptureApp.java

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.imageio.ImageIO;
import java.applet.Applet;

public class SignaptureApp extends Applet implements MouseMotionListener ,MouseListener{
    
    int width;
    int height;
    Image img;
    Graphics graph;
    int lock = 0;
    Point p;

    public void init() {

        width = getSize().width;
        height = getSize().height;
        img = createImage(width, height);
        graph = img.getGraphics();
        graph.setColor(Color.BLUE);

        addMouseListener(this);
        addMouseMotionListener(this);
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        
        if (lock == 1) {
            return;
        }
        int x = e.getX();
        int y = e.getY();
        graph.setColor(Color.BLUE);
        graph.drawLine(p.x,p.y,x, y);
        p=e.getPoint();    
        repaint();
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        
    }
    
    @Override
    public void paint(Graphics g) {
        update(g);
    }

    @Override
    public void update(Graphics g) {
        g.drawImage(img, 0, 0,this);
    }

    //This Method save the signeture to a file in to server as an image(png)
    public void sign() {
        BufferedImage bufferedImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
        bufferedImage.createGraphics().drawImage(img, 0, 0, this);
        try {
            ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
            ImageIO.write(bufferedImage, "png", byteStream);
            byte[] buf = byteStream.toByteArray();
            URL url = new URL("http://localhost:8080/SignApp/UploadPhoto");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setDoInput(true);
            con.setDoOutput(true);
            con.setUseCaches(false);
            con.setChunkedStreamingMode(1000);
            con.setRequestProperty("Content-Type", "application/octet-stream");
            con.setRequestMethod("POST");
            OutputStream os = con.getOutputStream();
            os.write(buf);
            System.out.println("Saved");
            os.flush();
            os.close();
        } catch (IOException e1) {
            System.out.println("Error during sending file to server");
            e1.printStackTrace();
        }
    }

    public void lock() {
        lock = 1;
    }

    public void unlock() {
        lock = 0;
    }

    public void clear() {
        graph.setColor(Color.white);
        graph.fillRect(0, 0, width, height);
        graph.setColor(Color.black);
        repaint();
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        if (lock == 1) {
            return;
        }
        int x = e.getX();
        int y = e.getY();
        graph.fillOval(x, y, 3, 3);
        repaint();
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        
    }

    @Override
    public void mouseExited(MouseEvent e) {
        
    }

    @Override
    public void mousePressed(MouseEvent e) {
        p=e.getPoint();
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        
    }

}
Servlet Class

/**
 *@ Tapas ku. jena
 *mail: tapas.friends@gmail.com
 */

 //UploadPhoto.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class UploadPhoto extends HttpServlet {
        
 public void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException ,                IOException {

    
        ServletContext sc = this.getServletContext();
    
            try {
        
                String path = sc.getRealPath(File.separator)+"Images/image.png";
        
                File yourFile = new File(path);
                FileOutputStream toFile = new FileOutputStream( yourFile );
                BufferedInputStream fromClient = new BufferedInputStream( req.getInputStream() );
                
                int c;
                while( (c = fromClient.read()) != -1) {
                    toFile.write(c);
                    System.out.println("Image Uploading");
                }
                
                System.out.println("Upload Completed....");
                toFile.flush();
                toFile.close();
                fromClient.close();
                
            } catch (Exception e) {
                System.err.println("Error occoured at serverside during upload");
                e.printStackTrace();
            }
        }

 public void doGet(HttpServletRequest request,HttpServletResponse response) throws                              IOException,ServletException {

            doPost(request, response);  
    }
}

Tuesday, November 10, 2009

Free Ebook, Audio, Video, Image Downloads


Hello friends! are looking for downloading some free ebooks, audios, videos etc. ,then visit the following link.

http://www.4shared.com/

http://www.onlinefreeebooks.net/ 

http://www.onlinecomputerbooks.com/ 

http://www.hongkiat.com/blog/20-best-websites-to-download-free-e-books/