lunes, 7 de diciembre de 2009

Código Fuente Parte 1

package hello;

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