GLBasic forum

Other languages => GLBasic - de => Topic started by: MK2004 on 2018-Nov-28

Title: Android Vibration benutzen
Post by: MK2004 on 2018-Nov-28
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.

Title: Re: Android Vibration benutzen
Post by: spacefractal on 2018-Nov-29
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.
Title: Re: Android Vibration benutzen
Post by: MK2004 on 2018-Nov-29
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.
Title: Re: Android Vibration benutzen
Post by: MK2004 on 2018-Dec-04
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?
Title: Re: Android Vibration benutzen
Post by: MK2004 on 2019-Feb-07
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