package uk.co.mmscomputing.device.capi.samples; import java.io.*; import java.util.*; import javax.sound.sampled.*; import uk.co.mmscomputing.util.metadata.*; import uk.co.mmscomputing.device.capi.*; import uk.co.mmscomputing.device.capi.plc.*; import uk.co.mmscomputing.device.capi.ncc.*; import uk.co.mmscomputing.device.capi.exception.*; public class SimpleVoiceBox implements MetadataListener, Runnable{ CapiServerApplication appl; String phoneno; File dir; class WAVFilter implements FilenameFilter{ public boolean accept(File dir, String s){ s=dir+"/"+s; File f=new File(s); return f.isFile() && s.endsWith(".wav"); } } /* phoneno without leading 0s */ public SimpleVoiceBox(String phoneno, File dir)throws IOException{ this.phoneno=phoneno; // phone number to accept this.dir=dir; // dir with .wav files } public void run(){ try{ jcapi.checkInstalled(); System.out.println("running..."); CapiMetadata md=new CapiMetadata(); md.useMaxLogicalConnections(CapiEnumerator.getNoOfBChannels()); md.useALaw(); // set some defaults md.use64kBit(); md.acceptAllCalls(); md.useController(1); md.addListener(this); // want to listen; appl=new CapiServerApplication(md); appl.start(); // start capi thread while(true){ System.out.println("Wait for call."); CapiChannel channel=appl.accept(); channel.getInputStream().close(); // waste input data try{ String files[]=dir.list(new WAVFilter()); // send all .wav files in directory Arrays.sort(files); for(int i=0; i0){no=argv[0];} File userhome = new File(System.getProperty("user.home"),"mmsc"); File voicedir = new File(userhome,"phone"); voicedir.mkdirs(); if(argv.length>1){voicedir=new File(argv[1]);} System.err.println("\nStart SimpleVoiceBox\n\taccept: "+no+"\n\tsend : "+voicedir.getAbsolutePath()); System.err.println("\n\tType 'quit' on command line to quit:)\n"); try{ SimpleVoiceBox vb=new SimpleVoiceBox(no,voicedir); new Thread(vb).start(); vb.checkInput(); System.err.println("End SimpleVoiceBox."); }catch(Exception e){ System.err.println(e); } } }