1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

SensorListener - Alternative?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von funcoder, 06.01.2010.

  1. funcoder, 06.01.2010 #1
    funcoder

    funcoder Threadstarter Erfahrener Benutzer

    Beiträge:
    218
    Erhaltene Danke:
    38
    Registriert seit:
    15.08.2009
    Hallo Zusammen,

    bin gerade dabei ein erstes 2D Spiel zu entwickeln via Canvas. Soweit kein Problem das einzige was ich noch lösen müsste, wäre wie ich die Fingereingaben auf dem Touchscreen abrufen kann.
    Das einzige was ich gefunden habe beeinhaltet den Sensor Listener. Dieser ist aber als deprecated in Eclipse hinterlegt.

    Nun meine Frage: Was ist die Alternative zu dem SensorListener? Und hat jemand vielleicht ein Beispiel dazu?

    Danke im Voraus

    MfG
    C0DER
     
  2. herrlado, 06.01.2010 #2
    herrlado

    herrlado Fortgeschrittenes Mitglied

    Beiträge:
    390
    Erhaltene Danke:
    25
    Registriert seit:
    26.10.2009
    Wenn man anständig programmiert und irgendwas als deprecated markiert, gibt man an was man stattdessen nehmen sollte.
    Steht dort nichts?

     
  3. funcoder, 06.01.2010 #3
    funcoder

    funcoder Threadstarter Erfahrener Benutzer

    Beiträge:
    218
    Erhaltene Danke:
    38
    Registriert seit:
    15.08.2009
    ok. in Eclipse selbst steht kein Hinweis. Wenn ich in der Reference bei deverloper.android.com nachschaue steht zwar ein Hinweis, dass man den SensorEventListener verwenden soll. Aber wenn ich da nach Beispielen schau bezieht sich das immer auf den Bewegungssensor und nicht auf den Touchscreen.

    Gibt es da keine Alternative damit ich die Fingerposition auf dem Touchscreen auslesen kann?
     
  4. Fr4gg0r, 06.01.2010 #4
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Hi,
    das versuch ich auch grade bekomm es aber irgendwie nicht hin :confused:

    Ich hab's nach diesem Developer Guide gemacht und onTouchEvent in meine View eingebaut:
    Code:
    public boolean onTouchEvent(MotionEvent event){
            if(event.getAction() == MotionEvent.ACTION_DOWN){
                draw((int)event.getX(), (int)event.getY(), "BLACK");
            }
            return true;
    
    draw(int, int, String) habe ich selber definiert, da passiert aber garnix beim berühren.
     
  5. Melbar, 06.01.2010 #5
    Melbar

    Melbar Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    23
    Registriert seit:
    16.05.2009
    Phone:
    Samsung Galaxy S3
    Hallo,

    wenn es um normale Touchevents geht, also einfaches tippen auf den Screen, ist der View.onTouchListener der richtige siehe Handling UI Events | Android Developers

    Code:
    
    LinearLayout main  = (LinearLayout) findViewById (R.id.LinearLayout);
    ...
    main.setOnTouchListener(new OnTouchListener(){
    
                public boolean onTouch(View arg0, MotionEvent arg1) {
                    // do something
                }
                
            });
    
    Wenn es um Gesten geht gibts den GestureBuilder mit diesem kann man Gesten vorher aufzeichnen und später einfach wieder erkennen. (siehe Tutorial)

    Gruß
    Stefan
     
  6. funcoder, 06.01.2010 #6
    funcoder

    funcoder Threadstarter Erfahrener Benutzer

    Beiträge:
    218
    Erhaltene Danke:
    38
    Registriert seit:
    15.08.2009
    Hi skrhgw,

    dein Code funktioniert einwandfrei, Danke:D

    @Fr4gg0r
    die genauen Touch Koordinaten kann man mit

    X = arg1.getX();
    Y = arg1.getY();

    innerhalb der onTouch Methodeabrufen.

    C0DER
     
  7. Fr4gg0r, 07.01.2010 #7
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Dies wäre der Weg innerhalb der Activity. Ich möchte bzw. muss es jedoch innerhalb der View definieren, und wenn ich die google Developer Seiten richtig verstanden habe, müsste das mit onTouchEvent() funktionieren.
    Nur irgendwie wird die Funktion beim Berühren des Touchscreens nicht aufgerufen.
     
  8. Melbar, 07.01.2010 #8
    Melbar

    Melbar Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    23
    Registriert seit:
    16.05.2009
    Phone:
    Samsung Galaxy S3
    Hi Fr4gg0r,

    wenn du eine View abgeleitet hast dann sollte das onTouchEvent auch aufgerufen werden. Du kannst ja mal deinen Quelltext etwas mit dem Quelltext der API Demos (com.example.android.apis.view.CustomView) vergleichen dort wird die com.example.android.apis.view.LabelView verwendet die ja auch von View abgeleitet ist und wenn ich dort die Methode onTouchEvent wie folgt eingefüge und läuft es ohne Probleme.

    Code:
    @Override
    public boolean onTouchEvent(MotionEvent event) {
          // TODO Auto-generated method stub
          if(event.getAction() == MotionEvent.ACTION_DOWN){
              Log.d("ONTOUCH", "toch");
          }        
          return true;
      }
     
    Fr4gg0r bedankt sich.
  9. Fr4gg0r, 07.01.2010 #9
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Hi,
    genauso hatte ich es auch.
    Habe mich geiirt: OnTouchEvent wurde korrekt aufgerufen, ich habe jedoch invalidate() vergessen, sodass die darin enthaltenen Funktionen ihren Dienst nicht taten.
     

Diese Seite empfehlen