Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Υπάρχει τρόπος να αλλάξω προγραμματιστικά το sensitivity της οθόνης αφής σε μια εφαρμογή που έχω φτιάξει;

 

Γιατί ενώ πατάω για πολύ λίγο, συνήθως πυροδοτούνται τουλάχιστον 2-3 "click" events κι έχω βάλει να πετάει pop-up μήνυμα σε περίπτωση που έχει πατηθεί η οθόνη. Σκεφτείτε το σαν turne-based παιχνίδι που παίζει ο ένας και μετά πρέπει να περιμένει να παίξει ο άλλος για να συνεχίσει να "ξαναπατάει" την οθόνη. Αν πατάω "τσιμπώντας" (με το νύχι δηλαδή :) ) συνήθως αποφεύγεται το πρόβλημα αλλά χάνεται κατά πολύ το usability.

Δημοσ.

Στο directx input εφαρμοζουν την τεχνικη του current & preview state(mouse/keyboard)

 

Αν το preview state ειναι ιδιο με το current τοτε δεν εχουμε κανενα γεγονος

 

πχ αν preview state keydonw & current state keydown= nothing

preview state keyup & current state keydown =keydown

preview state keydown & current keyup = keyup

Δημοσ.

θα σου δώσω ένα παράδειγμα σε C# XNA που είναι περίπου το ίδιο σε Android.

 

>
    KeyboardState oldState = Keyboard.GetState();
 KeyboardState newState = Keyboard.GetState();

    private bool CheckKeyStatus(Keys key)
 {
	 return (oldState.IsKeyDown(key) && newState.IsKeyUp(key));
 }

    private void HandleKB()
 {
	 // Set new state
	 newState = Keyboard.GetState();
	 if (CheckKeyStatus(Keys.Up))
	 {
		 // Your code here.
		 // Example: Player.X --;
	 }
	 // Keep state because we must compare it with new one.
	 oldState = newState;
 }

 

και για να μην ξεχνάμε, το HandleKB πρέπει να το καλέσεις, δεν καλείται αυτόματα όπως πχ Draw/Update=

μάλλον στο OnTouch θα το καλέσεις, δεν ξέρω για Android....

 

+ ότι πρέπει να δεις αν το Android έχει κάποια συνάρτηση(βιβλιοθήκη) σαν το Keyboard/KeybopardState.. (κάτι αντίστοιχο).

Δημοσ. (επεξεργασμένο)

Μάλιστα. Περίμενα κάποια απάντηση του στυλ ότι υπάρχει κάποια συνάρτηση/μέθοδος που το κάνει αυτόματα, π.χ. Application.setSensitivity(). :)

Αν δε γνωρίζει κανείς κάτι τέτοιο μάλλον θα καταφύγω στις παραπάνω λύσεις. Έψαξα και στο API αλλά δεν ξέρω σε ποιο πακέτο μπορεί να βρίσκεται ενδεχομένως κάτι τέτοιο και στο google τα σχετικά αποτελέσματα δεν είναι σχετικά...

Επεξ/σία από Lucky Luke
Δημοσ. (επεξεργασμένο)

εμένα μου κάνει εντύπωση που έχεις αυτό το πρόβλημα (μιλάμε για απλή εφαρμογή ή κάποια εφαρμογή OpenGL?)

 

μήπως έχεις βάλει λάθος Event?

Επεξ/σία από IHateLove
Δημοσ.

Να σου πω την αλήθεια κι εμένα μου κάνει εντύπωση γιατί σε άλλη συσκευή (με ελάχιστα παλιότερη έκδοση android, νομίζω 2.3 αντί 2.3.7) δεν είχα τόσο μεγάλο πρόβλημα. Γι' αυτό και κατέληξα στο γεγονός ότι έχει να κάνει με το sensitivity.

Όχι, δε χρησιμοποιώ Opengl ή κάτι πολύ εξειδικευμένο από γραφικά, μόνο ζωγραφική πάνω σε canvas.

 

Σε εξομoιωτή δεν υπάρχει πρόβλημα γιατί με το ποντίκι για να θεωρήσει ότι γίνεται επόμενη "κίνηση" πρέπει να ξανακάνεις click ενώ με την οθόνη αφής αυτό εξαρτάται από το πόση ώρα ακουμπάει το δάχτυλο στην οθόνη.

Ο handler που χρησιμοποιώ είναι ο

>onTouchEvent(MotionEvent event)

που νομίζω είναι ο κατάλληλος για την περίπτωσή μου...

Δημοσ.

@λίγο ατυχές το παράδειγμα μου, μιλάμε για Touching και όχι Keyboard keys... (τι είχα στο μυαλό μου άραγε)

 

σχετικά με τον εξομοιωτή, δοκίμασα πριν το onTouch και δεν είχε θέμα με το ποντίκι.

όταν το πάταγα το label άλλαζε 2-3 φορές (Random numbers)

Δημοσ.

Τελικά αυτό που έκανα και πλησιάζει αρκετά στη συμπεριφορά που θέλω να έχει είναι να μετράει τα touch events και αν δεν έχει ξεπεράσει τα 5 (αυτό το νούμερα το έβγαλα λίγο εμπειρικά κι έπειτα από δοκιμές) συνεχόμενα touches να μη θεωρείται ότι έγινε 2η κίνηση, δηλαδή σαν να εξομοίωσα-συγχώνευσα τις 5 συνεχόμενες κινήσεις (λόγω παρατεταμένης αφής της οθόνης) σε 1.

Αν ξεπερνάει τα 5 τότε βγάζει μήνυμα λάθους όπως θα έβγαζε αν έχουμε ήδη "παίξει" και επιχειρούμε να ξαναπαίξουμε ενώ δεν είναι σειρά μας.

Δημοσ.

Είναι το Othello. Το είχαμε ξεκινήσει με άλλα 2 παιδιά στα πλαίσια εργασίας στη σχολή, αρχικά μόνο σε emulator. Απλά το έχω πιάσει λίγο μόνος μου και προσπαθώ να διορθώσω bugs και άλλα που βλέπω να προκύπτουν μετά το deployment σε πραγματική συσκευή.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...