Java ME Handy Java App die die Navigationstasten abfragt

Knexi

Mitglied
Hallo,

ich würde gerne eine java mobile app erstellen mit der die Navigationstasten auf dem Handy abgefragt werden. Beim Drucken der Taste soll also eine Aktion ausgeführt werden. Da ich mich bisher mit der Programmiersprache Java noch wenig beschäftigt haben brauche ich eure Hilfe.

Danke im Vorraus und MfG
 
Java:
    private void tastaturEreignis(int taste) throws IOException {

        while(this.released)
        {
            tastenCode = taste;
            int aktion = getGameAction(taste);
            switch (aktion) {

                case LEFT:
                {
                    this.dir="L";

                    System.out.println("Links");
                } break;
                case RIGHT:
                {
                    this.dir="R";
                    
                } break;
                case UP:
                {
                    this.dir="F";
                    
                } break;
                case DOWN:
                {
                    this.dir="B";
                  
                } break;
                case FIRE:
                {
                    this.dir="N";
                  
                }

            }


        repaint();
        }
    }

ich habe dieses key pressed event geschrieben aber es wird keine aktion ausgeführt


MfG
 
Schaut "gut" (also müsste funktionieren, über deinen Programmierstil lässt sich streiten 😉) aus. Wann rufst du die Methode auf? Ist released richtig gesetzt bzw. wird es irgendwann auch wieder anders gesetzt?
 
Schaut "gut" (also müsste funktionieren, über deinen Programmierstil lässt sich streiten 😉) aus. Wann rufst du die Methode auf? Ist released richtig gesetzt bzw. wird es irgendwann auch wieder anders gesetzt?

Ah ich hab kein key released event vielleicht liegts daran? Und wo sollte ich die Methode aufrufen? Direkt im ApplicationStart?

MfG
 
Hm? Du redest wirr. Die Methode solltest du aufrufen, wenn du sie brauchst. Und du brauchst kein key released event, du musst dein released-flag anders setzen. Ansonsten hast du eine Endlosschleife, die alles andere blockiert, solang du sie nicht in einem separaten Thread laufen lässt und ab und an schlafen lässt.
 
Zuletzt bearbeitet:
Danke habe den Fehler gefunden. Habe das Canvas an der falschen Stelle aufgerufen bin aber nun auf ein neues Problem gestoßen.

ich bekomme beim debuggen eine null pointer exeption:

java.lang.NullPointerException
at at.htlklu.elektronik.bluetooth.BTCommunicator.sendString(BTCommunicator.java:234)
at B2P.Bluetooth2PicMIDlet$CanvasKey.tastaturEreignis(Bluetooth2PicMIDlet.java:570)
at B2P.Bluetooth2PicMIDlet$CanvasKey.keyPressed(Bluetooth2PicMIDlet.java:549)
at javax.microedition.lcdui.Canvas.callKeyPressed(Canvas.java:1110)
at javax.microedition.lcdui.Display$DisplayAccessor.keyEvent(+198)
at javax.microedition.lcdui.Display$DisplayManagerImpl.keyEvent(+11)
at com.sun.midp.lcdui.DefaultEventHandler.keyEvent(+127)
at com.sun.midp.lcdui.AutomatedEventHandler.keyEvent(AutomatedEventHandler.java:623)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+114)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)


Java:
  protected void keyPressed(int keyCode){
      try {
           tastaturEreignis(keyCode);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
  }
      private void tastaturEreignis(int keyCode) throws IOException {

    int gameAction = getGameAction(keyCode);
    String dir;

    switch(gameAction){
      case UP:
      {
        message = "[UP]";
        dir="F";
        bt.sendString(dir);
      }break;
      case DOWN:
      {
        message = "[DOWN]";
        dir="B";
        bt.sendString(dir);

      } break;
      case LEFT:
      {
        message = "[LEFT]";
        dir="L";
        bt.sendString(dir);
      }break;
      case RIGHT:
      {
        message = "[RIGHT]";
        dir="R";
        bt.sendString(dir);
      }break;
      case FIRE:
      {
        message = "[FIRE]";
      }break;
      
    
      default:
        message = "";
      break;
    }
    repaint();
  }


Liegt der Fehler vielleicht nur daran dass ich die app auf dem handy emulator keine bluetooth verbindung simuliert werden kann und somit kein bluetooth string gesendet werden kann?
Oder ist ein anderer Grund für die exeption verantwortlich? wenn ja welcher?

MfG Knexi
 
Es wäre natürlich hilfreich, wenn du uns mitteilen würdest, wo die Fehlermeldung auftritt. Nichts desto trotz vermute ich jetzt einfach mal, dass dein Attribut bt null ist.
 

Zurück
Oben