Android Vibration benutzen

Previous topic - Next topic

MK2004

Hallo,

ich versuche gerade ein kleines Spiel für Android zu Programmieren und wollte beim Tippen auf den Touchscreen wenn meine Spielfigur springt den Vibrationsmotor des Handys kurz vibrieren lassen.
Ich habe es mit dem Befehl FORCEFEEDBACK probiert aber ohne Erfolg keines meiner Testgeräte vibriert.
Als Testgeräte habe ich ein Samsung Galaxy S5 mini und ein Galaxy S8.

Über GETNUMJOYSTICKS bekomme ich die Info 2 Joysticks vorhanden.
Über GETJOYNAME$(0) bekomme ich Android accelerometer
und über GETJOYNAME$(1) bekomme ich Gamepad
als Information.

Aber keiner der beiden als Joystick angegebenen Geräte vermag zu vibrieren.

Ich komme da gerade nicht weiter und hoffe deshalb das mir hier Jemand helfen kann.


spacefractal

joysticks commands is not supported on Android, due the way they are used on that system. They are more treated like a keyboard, so you should use KEY() or use GameInput API insteead to support them. Analouge controllers is>256 as well. so you might want to read up to 320 or such.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

MK2004

Ich habe nur versucht die Joysticks abzufragen weil sich FORCEFEEDBACK ja auf die Vibration von Joysticks bezieht.
Ich will erreichen das das Android Handy wenn es Vibration besitzt kurz vibriert wenn ich auf den Touchscreen tippe.

MK2004

Ist es nicht irgendwie möglich die Klasse Vibrator und die Methode Vibrate über INLINE zu implementieren?

https://developer.android.com/reference/android/os/Vibrator#top_of_page

Ich habe das zwar versucht aber ich bekomme es nicht hin da ich mich mit C++ und Java nicht auskenne.
Kann mir da eventuell Jemand helfen?

MK2004

Hallo,

ich habe mein Problem mit der Vibration lösen können aber das ganze ist etwas Kompliziert.


Als erstes muss man in der Datei "AndroidManifest.xml" im Verzeichnis
C:\Program Files (x86)\GLBasic\Compiler\platform\android\templateproj\
folgendes einfügen, um unter Android die Berechtigung für den Zugriff auf die Vibrationsfunktion zu bekommen.
<uses-permission android:name="android.permission.VIBRATE"/>

Ich habe dafür Notepad++ verwendet.



Als zweites habe ich die Datei "SDLActivity.java" bearbeitet im Verzeichnis
C:\Program Files (x86)\GLBasic\Compiler\platform\android\templateproj\src\com\glbasic\test\

Die Änderungen beschreibe ich hier nicht da sich diese an drei verschiedenen Stellen in der Datei befinden.
Wer es genau wissen möchte der öffnet meine Datei mit Notepad++ und sucht nach "vibra" damit findet man alle meine Änderungen.
Die Datei ist im Anhang des Beitrags.



Als drittes ist dann nur noch die Ausführung in GLBasic

Code (glbasic) Select


?IFDEF ANDROID
        IMPORT "C" const char* android_JAVACALL(const char* string)
?ENDIF

// damit vibriert das Handy für 1000 Millisecunden
LOCAL v=CallJava$("vibriere:1000")

SLEEP 2000


        FUNCTION CallJava$: Args$
                LOCAL result$
                ?IFDEF ANDROID
                result$=android_JAVACALL(Args$)
                RETURN result$
                ?ENDIF
        ENDFUNCTION