import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public abstract class SocketConnectionMidlet extends MIDlet implements CommandListener, Runnable, ItemStateListener {
public Display display ;
private Command exitCommand;
public canvas canvas;
public String participante;
public String notasc;
public String recordStoreId="Notas";
public Form form;
public TextField messageToSend;
public StringItem messageReceived;
public SendMessageTask sendMessageTask;
public Command sendCommand;
public InputStream inputStream;
public OutputStream outputStream;
public SocketConnection socketConnection;
public MyRecordStore BD;
Thread listeningTask;
public SocketConnectionMidlet(String title) {
canvas = new canvas();
BD = new MyRecordStore(recordStoreId);
BD.open();
participante=title;
form = new Form(title);
messageReceived = new StringItem( null," " );
form.append( messageReceived );
messageToSend = new TextField( "Text to send:","",1024,TextField.ANY );
form.append( messageToSend );
exitCommand = new Command( "Exit",Command.EXIT,1 );
sendCommand = new Command( "Send",Command.ITEM,1 );
form.addCommand( sendCommand );
form.addCommand( exitCommand );
form.setCommandListener( this );
}
public void startApp() {
display = Display.getDisplay( this );
display.setCurrent( form );
listeningTask = new Thread(this) ;
listeningTask.start();
}
protected void pauseApp() {}
protected void destroyApp(boolean unconditional) {}
public void readMessages()
{
StringBuffer stringBuffer;
StringBuffer otherStringBuffer;
int characterRead;
while( true )
{
stringBuffer = new StringBuffer();
characterRead = -1;
try
{
while( ((characterRead = inputStream.read()) != -1) &&
(characterRead != '\n') )
{
stringBuffer.append( (char)characterRead );
}//end while
}//end try
catch(Exception e)
{
System.out.println(e);
}//end catch
if( characterRead == -1 )
{
break;
}//end if
else
{
otherStringBuffer = new StringBuffer( messageReceived.getText()+
"\n"+stringBuffer.toString() );
messageReceived.setText( otherStringBuffer.toString() );
String notass = stringBuffer.toString();
if(participante.equals("Client"))
{
if(notass.equals("Felicidades, Acertaste"))
{
messageReceived.setText("Haz Ganado");
}
else if (notass.equals("Intenta de nuevo"))
{
messageReceived.setText("Intenta de nuevo");
}
else{
messageReceived.setText("Toca las notas en 10 segundos" + notass);
try {
Thread.sleep(5000);
} catch (Exception ex) {}
int o=0;
while ( o <>
{
try {
Thread.sleep(1000);
} catch (Exception ex) {}
o++;
}
if (o<>
display.setCurrent( canvas );
else
display.setCurrent( form );
messageToSend.setString(BD.getRecord(BD.getNumberOfRecords()));
}
}
else if(participante.equals("Server"))
{
if(notass.equals(notasc))
{
sendMessageTask.send( outputStream,"Felicidades, acertaste");
}
else{
sendMessageTask.send( outputStream,"Intenta de nuevo" );
}
}
}
}
}
public abstract void run();
public void setSocketConnectionOptions()
{
try
{
// defines socket connection options
socketConnection.setSocketOption( socketConnection.DELAY,0 );
socketConnection.setSocketOption( socketConnection.KEEPALIVE,0 );
}
catch(Exception any)
{
}
}//end setSocketConnectionOptions
public void getAndOpenIOStreams()
{
try
{
// get and open output and input streams
inputStream = socketConnection.openInputStream();
outputStream = socketConnection.openOutputStream();
}
catch(Exception any)
{
}
}//end
public void createsAndStartsSendMessageTask()
{
// creates and starts the send message thread
sendMessageTask = new SendMessageTask();
sendMessageTask.start();
}//end createsAndStartsSendMessageTask
public void commandAction( Command theCommand,Displayable any )
{
if( theCommand == Alert.DISMISS_COMMAND ||
theCommand == exitCommand )
{
try
{
if( inputStream != null )
{
inputStream.close();
}//end if
if( outputStream != null )
{
outputStream.close();
}//end if
if( socketConnection != null )
{
socketConnection.close();
}//end if
}//end try
catch( IOException e ) {}
destroyApp( true );
notifyDestroyed();
}//end if
if (theCommand == sendCommand )
{
if(participante.equals("Server"))
notasc=messageToSend.getString();
sendMessageTask.send( outputStream, messageToSend.getString() );
}//end if
}//end commandAction
}
___________
package hello;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
public class canvas extends Canvas {
    String keyStatus;
    String theKeyPressed;
    String key;
    String nota;
    String notas;
    int vol, vel;
    private int pressedKey;
    private String[] displayStrings;
    private static final int[] kNoteX = {
        0, 11, 16, 29, 32, 48, 59, 64, 76, 80, 93, 96
    };
    private static final int[] kNoteWidth = {
        16, 8, 16, 8, 16, 16, 8, 16, 8, 16, 8, 16
    };
    private static final int[] kNoteHeight = {
        96, 64, 96, 64, 96, 96, 64, 96, 64, 96, 64, 96
    };
    private static final boolean[] kBlack = {
        false, true, false, true, false,
        false, true, false, true, false, true, false
    };
    private int mMiddleCX, mMiddleCY;
    private int mCurrentNote;
     private MyRecordStore DB;
     private RMSFilterStartsWith filter;
    private RMSOrder comparator;
     private String recordStoreId;
    public canvas() {
        int w = getWidth();
        int h = getHeight();
        int fullWidth = kNoteWidth[0] * 8;
        mMiddleCX = (w - fullWidth) / 2;
        mMiddleCY = (h - kNoteHeight[0]) / 2;
        mCurrentNote = 60;
        pressedKey = 0;
        displayStrings = new String[2];
        displayStrings[0] = "Presiona Select tras ingresar las notas... ";
        displayStrings[1] = "Nota: ";
        recordStoreId = "Notas";
        DB = new MyRecordStore(recordStoreId);
        DB.create();
        System.out.println( ">>> Record store: " + recordStoreId +
                            " has been created." ); 
        vel=100;
        vol=100;
    }
    public void paint(Graphics g) {
        int w = getWidth();
        int h = getHeight();
        g.setColor(0xffffff);
        g.fillRect(0, 0, w, h);
        g.setColor(0x000000);
        for (int i = 60; i <= 71; i++) {
            drawNote(g, i);
        }
        drawSelection(g, mCurrentNote);
        if (pressedKey != 0) {          
            key = getKeyName(pressedKey);
            if (key.equals("1"))
            nota="do";
            else if (key.equals("2"))
            nota="do #";
            else if (key.equals("3"))
            nota="re";
            else if (key.equals("4"))
            nota="re #";
            else if (key.equals("5"))
            nota="mi";
            else if (key.equals("6"))
            nota="fa";
            else if (key.equals("7"))
            nota="fa #";
            else if (key.equals("8"))
            nota="sol";
            else if (key.equals("9"))
            nota="sol #";
            else if (key.equals("*"))
            nota="la";
            else if (key.equals("0"))
            nota="la #";
            else if (key.equals("#"))
            nota="si";
            else if (key.equals("Select"))
             DB.addRecord(notas);
            g.drawString(displayStrings[0] ,
                    0, 0, Graphics.TOP | Graphics.LEFT);           
            g.drawString(displayStrings[1] +
                    "'" + nota + "'",
                    0, 20, Graphics.TOP | Graphics.LEFT);
            if (key.equals("1") ){
               mCurrentNote=60;
               notas = notas+nota;
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
               
            }
            if (key.equals("2")){
               mCurrentNote=61;
               notas = notas+nota;
               //repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("3")){
               mCurrentNote=62;
               notas = notas+nota;
               //repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("4")){
               mCurrentNote=63;
               notas = notas+nota;
              // repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("5")){
               mCurrentNote=64;
               notas = notas+nota;
               //repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("6")){
               mCurrentNote=65;
               notas = notas+nota;
              // repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("7")){
               mCurrentNote=66;
               notas = notas+nota;
             //  repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("8")){
               mCurrentNote=67;
               notas = notas+nota;
             //  repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("9")){
               mCurrentNote=68;
               notas = notas+nota;
             //  repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("*")){
               mCurrentNote=69;
               notas = notas+nota;
            //   repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("0")){
               mCurrentNote=70;
               notas = notas+nota;
            //   repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            if (key.equals("#")){
               mCurrentNote=71;
               notas = notas+nota;
            //   repaint();
            try { Manager.playTone(mCurrentNote, vel, vol); }
        catch (MediaException me) {}
            }
            
        } else {
            g.drawString("Presiona las teclas ... ", 0, 20, Graphics.TOP | Graphics.LEFT);
        }
    }
    private void drawNote(Graphics g, int note) {
        int n = note % 12;
        int octaveOffset = ((note - n) / 12 - 5) * 7 * kNoteWidth[0];
        int x = mMiddleCX + octaveOffset + kNoteX[n];
        int y = mMiddleCY;
        int w = kNoteWidth[n];
        int h = kNoteHeight[n];
        if (isBlack(n)) {
            g.fillRect(x, y, w, h);
        } else {
            g.drawRect(x, y, w, h);
        }
    }
    private void drawSelection(Graphics g, int note) {
        int n = note % 12;
        int octaveOffset = ((note - n) / 12 - 5) * 7 * kNoteWidth[0];
        int x = mMiddleCX + octaveOffset + kNoteX[n];
        int y = mMiddleCY;
        int w = kNoteWidth[n];
        int h = kNoteHeight[n];
        int sw = 6;
        int sx = x + (w - sw) / 2;
        int sy = y + h - 8;
        g.setColor(0xffffff);
        g.fillRect(sx, sy, sw, sw);
        g.setColor(0x000000);
        g.drawRect(sx, sy, sw, sw);
        g.drawLine(sx, sy, sx + sw, sy + sw);
        g.drawLine(sx, sy + sw, sx + sw, sy);
    }
    private boolean isBlack(int note) {
        return kBlack[note];
    }
    protected void keyPressed(int keyCode) {
        pressedKey = keyCode;
        keyStatus = "pressed";
        repaint();
    }
    protected void keyReleased(int keyCode)
      {
        keyStatus = "realease";
      }
}
_________
package hello;
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
public class SocketConnectionServerMidlet extends SocketConnectionMidlet
{
  private ServerSocketConnection serverSocketConnection;
  private String url;
  // Constructor
  public SocketConnectionServerMidlet()
  {
   super("Server");
   url = "socket://:2500";
 }//end constructor
  protected void pauseApp() {}
  protected void destroyApp( boolean flag ) {}
  public void run()
  {
    try
    {
      messageReceived.setText( "Waiting for clients..." );
      serverSocketConnection =(ServerSocketConnection)Connector.open( url );
      while( true )
      {
        form.setTitle( "Server -> no, pos güeiting.." );
        messageReceived.setText( "waiting for connections..." );
        // Gets a SocketConnection object that represents a server side
        // socket connection.
        socketConnection = (SocketConnection)
                           serverSocketConnection.acceptAndOpen();
        setSocketConnectionOptions();
        form.setTitle( "Server -> Connected !!!!" );
        messageReceived.setText( "Connection accepted " );
        getAndOpenIOStreams();
        // creates and starts the send message thread
        createsAndStartsSendMessageTask();
        form.addCommand( sendCommand );
        // then, read the messages !!
        readMessages();
      }//end while
    }//end try
    catch( IOException ie )
    {
      if( ie.getMessage().equals("ServerSocket Open") )
      {
        Alert a = new Alert( "server","port 2500 already occupied.",
                             null,AlertType.ERROR );
        a.setTimeout( Alert.FOREVER );
        a.setCommandListener( this );
        display.setCurrent( a );
      }//end if
    }//end catch
    catch( Exception e ) {}
 }//end connectionToClient
}//end class controlConexion
__________
package hello;
import javax.microedition.io.*;
//import javax.microedition.lcdui.*;
public class SocketConnectionClientMidlet extends SocketConnectionMidlet
{
  public String url;
  // Constructor
  public SocketConnectionClientMidlet()
  {
    super("Client");
    url = "socket://localhost:2500";
  }//end constructor
  public void run()
  {
    try
    {
      socketConnection = (SocketConnection)Connector.open( url );
      setSocketConnectionOptions();
      form.setTitle( "Client" );
      messageReceived.setText( "Connection established." );
      // get and open inpust and output streams
      getAndOpenIOStreams();
      // creates and starts send message task thread
      createsAndStartsSendMessageTask();
      // then , to read!!!
      readMessages();
    }//end try
    catch( Exception e )
    {
  }//end catch
 }//end connectToServer
  protected void pauseApp() {}
  protected void destroyApp( boolean flag ) {}
}//end class SocketConnectionClientMidlet
_________
package hello;
import java.io.*;
 class SendMessageTask extends Thread
  {
    private String message;
    OutputStream outputStream;
    public synchronized void send( OutputStream theOutputStream,String aMessage )
    {
      outputStream = theOutputStream;
      message = aMessage;
      notify();
    }//end
    // the run method is synchronized
    public synchronized void run()
    {
      //waits.....for a message to be send
      while( true )
      {
        if( message == null )
        {
          try
          {
            wait();
          }//end try
          catch( Exception e ) {}
        }//end if
        else
        {
            try
            {
                //sends the message
                outputStream.write( message.getBytes() );
                // and a new line
                outputStream.write( "\r\n".getBytes() );
            }//end try
            catch( IOException e )
            {
                e.printStackTrace();
            }//end catch
            message = null;
        }//end if
      }//end while
    }//end run
    public synchronized void stop()
    {
      message = null;
      notify();
    }//end stop
  }//end class SendMessageTask
 
No hay comentarios:
Publicar un comentario