Button gedrückt halten

  • 4 Antworten
  • Letztes Antwortdatum
M

Martin2013

Neues Mitglied
0
Hallo,

will einen Motor steuern der soll sich drehen solange ich den finger am Button habe.

Kann mir wer sagen wie ich das am besten machen könnte ?
Kommunikation ist über Bluetooth mit einem Microcontroller.

Meine Idee wäre ja ich schicke an meinen Microcontroller den Befehl "start" sobald ich meinen Button drücke, und wenn ich ihn wieder loslasse soll er "stopp" schicken.

Mein code für den Button sieht nun so aus:
Code:
[SIZE=2]
[LEFT][/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]mPlayButton[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = (Button)findViewById(R.id.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]bplay[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);
[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]mPlayButton[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].setOnClickListener([/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] OnClickListener() {
[/SIZE][SIZE=2][COLOR=#646464][SIZE=2][COLOR=#646464]@Override[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]public[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]void[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] onClick(View v) {
String message = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"start"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
sendMessage(message);

}
});[/LEFT]

[/SIZE]

Nur wie schreib ich jetzt das mit "stopp" ? kann ich das irgendwie so mit
if(OnClick = false){
String message = "stopp";
sendMessage(message);
} mäßig schreiben ?
Aber ich will natürlich auch nicht das dauernd stopp rausgeschrieben wird wenn der Button nicht gedrückt wird.

mfg. martin​
 
OnClick wird erst ausgeführt, wenn der button wieder losgelassen wird.

Versuchs mal mit:
View | Android Developers

im motionEvent kannst du mit Action_Down und Action_up abfragen ob gedrückt oder losgelassen wurde.
Da kannst du dann dein start und stop senden.
 
Eine weitere mögliche Lösung könnte eventuell das Event "OnTouch" sein!

Code:
button.setOnTouchListener(new OnTouchListener() {      
@Override      
public boolean onTouch(View v, MotionEvent event) {        
       if(event.getAction() == MotionEvent.ACTION_DOWN) {            
           String message = "Start";
           sendMessage(message);
        } 
       else if (event.getAction() == MotionEvent.ACTION_UP) {            
           String message = "Stop";
           sendMessage(message);        
        }      
}   
};
Kann es leider nicht testen, da ich gerade ein Problem beim erneuten einrichten von Eclipse habe -> https://www.android-hilfe.de/forum/android-app-entwicklung.9/eclipse-einrichtung.529401.html
 
Zuletzt bearbeitet:
hmm genau das wollte ich eigentlich verlinken :D
Ich bin dann aber leider in der View gelandet, das bringt dir was, wenn du mal deine eigene View baust :D
 
Danke,
funktioniert super!
 
Zurück
Oben Unten