# Zugriff auf den gesamten Bildschirm bei PDAs



## Grizzly (24. Mai 2004)

Hi,

mir ist folgendes aufgefallen: Wenn ich mit J2ME MIDP 1.0 ein MIDlet schreibe und das auf meinem PDA laufen lassen, fehlen mir immer ca. 20 Pixel am unteren Rand. Diese werden ja normalerweise von den Command-Buttons belegt. Ich verwende diese aber nicht.
In der API Beschreibung hab' ich zu dem Thema nichts gefunden.

Gibt es irgendwie eine Möglichkeit auch diesen Bereich per Graphics-Zugriff zu nutzen? :?:


----------



## pogo (29. Jul 2004)

ich glaube du hast keine chance auf diese fläche zuzugreifen.


----------



## Grizzly (29. Jul 2004)

Bleibt zu hoffen, dass das in J2ME MIDP 2.0 besser wird. Hat das eigentlich schon jemand von Sun gezogen und ausprobiert? Dazu muss man sich ja anmelden und dafür war ich bis jetzt zu faul.


----------



## pogo (29. Jul 2004)

ja ich hab schon MIDP 2 programmiert auf einem Nokia 6600
hat gut funktioniert und hat ein paar nette Sachen
man kann PUSHs senden. 

Hab ein Programm geschrieben, dass automatisch startet, wenn auf nem Server ein neuer Eintrag geschrieben wird


----------



## Guest (17. Aug 2004)

Ich habe ähnliches Problem.
Wenn die Keypad-Area zu ist (d.h. maximale Größe des Displays sichtbar),
dann wird ein gestartetes Midlet im Vollen Display-Bereich darsgestellt.
Fährt das Keypad raus, dann kriegt es das Midlet nicht mit und ist
unten beschnitten.

Hat jemand eine Idee, ob es einer Möglichkeit gibt auf die Resize-Events
des Diaplays zu reagieren?
Die getWidth(), getHeight() Methoden liefern immer die Werte zurück, 
die beim Start des Midlets aktuell waren.


----------



## Grizzly (17. Aug 2004)

Anonymous hat gesagt.:
			
		

> Ich habe ähnliches Problem.
> Wenn die Keypad-Area zu ist (d.h. maximale Größe des Displays sichtbar),
> dann wird ein gestartetes Midlet im Vollen Display-Bereich darsgestellt.
> Fährt das Keypad raus, dann kriegt es das Midlet nicht mit und ist
> ...


Verstehe ich nicht ganz. :bahnhof: Bei welchem Gerät tritt das auf?


----------



## Guest (17. Aug 2004)

Tungsten T3. Siehe http://www.palmone.com/us/products/handhelds/tungsten-t3/
Man kann da den Eingabebereich ein-/ausblenden (Stretch display).
Dadurch ändert sich der Bereich, in dem eine Programm 
dargestellt werden kann.

Ein einfacher Test. Canvas mit zwei diagonalen Linien, die ein Kreuz bilden. 
Es wird über den gesamten sichtbaren Bereich gezeichnet. Macht man den 
Eingabebereich auf, dann zeichnet sich das Midlet nicht neu, der untere Teil
wird vom Eingabebereich verdeckt.

Kennst Du Dich da aus?
Ich spiele damit erst seit zwei Tagen herum. Möchte sehen, was sich mit den 
Dingern so anstellen lässt und ob Java dazu taugt. 

Gruß,
Michael (semi)


----------



## Grizzly (17. Aug 2004)

Ich selber habe ein guten alten Palm m105 und einen Palm m505. Allerdings kann man bei denen nix ausblenden.

Selber habe ich auch schon mit J2ME MIDP 1.0 for Palm rumgespielt. Aber nachdem dieses Problem aufgetreten ist, hatte ich irgendwie keine Lust mehr...  
Wollte 'ne kleine Oberflächen API schreiben, da MIDP 1.0 nur sehr begrenzte Möglichkeiten in die Richtung bietet. Liegt wohl daran, dass es auch auf Handys laufen sollte.
Aber auch für Spiele dürfte das natürlich ein Problem sein. Nicht nur das einem dann die Pixel fehlen, es sind auch sehr merkwürdig aus.


----------



## Guest (18. Aug 2004)

Ist schon verrückt. Es gibt in MIDP 2 in Displayable die protected 
Methode
	
	
	
	





```
protected void sizeChanged(int w, int h)
```
die aber bei Änderung der Größe des Displays nicht aufgerufen
wird, obwohl dies laut der API-Dokumentation passieren sollte.
Hier der Testcode:

```
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class ResizeTest extends MIDlet
{
  private Canvas canvas;

  public ResizeTest()
  {
    super();
    canvas = new TestCanvas();
  }

  protected void startApp() throws MIDletStateChangeException
  {
    Display.getDisplay(this).setCurrent(canvas);
  }

  protected void pauseApp()
  {
  }

  protected void destroyApp(boolean unconditional) throws MIDletStateChangeException
  {
  }

  public class TestCanvas extends Canvas
  {
    private int width;
    private int height;

    public TestCanvas()
    {
      this.width  = getWidth();
      this.height = getHeight();
    }

    protected void sizeChanged(int w, int h)
    {
      this.width  = w;
      this.height = h;
      repaint();
    }

    protected void paint(Graphics g)
    {
      g.setGrayScale (255);
      g.fillRect (0, 0, this.width, this.height);
      g.setGrayScale (0);
      g.drawLine(0,0,this.width-1,this.height-1);
      g.drawLine(0,this.height-1,this.width-1,0);
    }
  }

}
```
So sieht's aus (von links nach rechts)






Irgendwas mache ich falsch oder das ganze J2ME ist ein Witz,
wenn einfachste Sachen wie Event-Callbacks des Displays nicht 
implementiert sind oder aus welchen Gründen auch immer nicht 
funktionieren.

Oder soll ich auf MIDP 5.0 (stable) warten?


----------

