From 72ab30c3a8cd9d95f520383f0495c80af6caf2be Mon Sep 17 00:00:00 2001 From: badlogicgames Date: Wed, 12 Jan 2011 02:46:32 +0000 Subject: [PATCH] [added] Input.vibrate() for patterns and Input.cancelVibrate() to cancel any vibration. [added] VibrateTest --- .../gdx/backends/android/AndroidInput.java | 8 +++++ .../gdx/backends/android/AndroidLocklessInput.java | 8 +++++ .../com/badlogic/gdx/backends/jogl/JoglInput.java | 6 ++++ .../badlogic/gdx/backends/lwjgl/LwjglInput.java | 6 ++++ .../badlogic/gdx/backends/angle/AngleInput.java | 6 ++++ gdx/src/com/badlogic/gdx/Input.java | 13 +++++++++ tests/gdx-tests-android/AndroidManifest.xml | 1 + .../src/com/badlogic/gdx/tests/VibratorTest.java | 34 ++++++++++++++++++++++ 8 files changed, 82 insertions(+) create mode 100644 tests/gdx-tests/src/com/badlogic/gdx/tests/VibratorTest.java diff --git a/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidInput.java b/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidInput.java index d4e4c1afe..f27a0dcf4 100644 --- a/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidInput.java +++ b/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidInput.java @@ -361,6 +361,14 @@ public final class AndroidInput implements Input, OnKeyListener, OnTouchListener @Override public void vibrate (int milliseconds) { vibrator.vibrate(milliseconds); } + + @Override public void vibrate (long[] pattern, int repeat) { + vibrator.vibrate(pattern, repeat); + } + + @Override public void cancelVibrate () { + vibrator.cancel(); + } @Override public boolean justTouched () { return justTouched; diff --git a/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidLocklessInput.java b/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidLocklessInput.java index 5bcb729e3..c208b4eac 100644 --- a/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidLocklessInput.java +++ b/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidLocklessInput.java @@ -348,6 +348,14 @@ public final class AndroidLocklessInput implements Input, OnKeyListener, OnTouch vibrator.vibrate(milliseconds); } + @Override public void vibrate (long[] pattern, int repeat) { + vibrator.vibrate(pattern, repeat); + } + + @Override public void cancelVibrate () { + vibrator.cancel(); + } + @Override public boolean supportsVibrator () { return true; } diff --git a/backends/gdx-backend-jogl/src/com/badlogic/gdx/backends/jogl/JoglInput.java b/backends/gdx-backend-jogl/src/com/badlogic/gdx/backends/jogl/JoglInput.java index 48f9fc586..09f03e7fd 100644 --- a/backends/gdx-backend-jogl/src/com/badlogic/gdx/backends/jogl/JoglInput.java +++ b/backends/gdx-backend-jogl/src/com/badlogic/gdx/backends/jogl/JoglInput.java @@ -440,4 +440,10 @@ public class JoglInput implements Input, MouseMotionListener, MouseListener, Mou @Override public boolean isButtonPressed (int button) { return pressedButtons.contains(button); } + + @Override public void vibrate (long[] pattern, int repeat) { + } + + @Override public void cancelVibrate () { + } } diff --git a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglInput.java b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglInput.java index 9ff1a47d2..730c368f0 100644 --- a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglInput.java +++ b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglInput.java @@ -583,4 +583,10 @@ final class LwjglInput implements Input { @Override public boolean isButtonPressed (int button) { return Mouse.isButtonDown(toLwjglButton(button)); } + + @Override public void vibrate (long[] pattern, int repeat) { + } + + @Override public void cancelVibrate () { + } } diff --git a/backends/gdx-backends-angle/src/com/badlogic/gdx/backends/angle/AngleInput.java b/backends/gdx-backends-angle/src/com/badlogic/gdx/backends/angle/AngleInput.java index c22f3486c..f60f13d50 100644 --- a/backends/gdx-backends-angle/src/com/badlogic/gdx/backends/angle/AngleInput.java +++ b/backends/gdx-backends-angle/src/com/badlogic/gdx/backends/angle/AngleInput.java @@ -296,4 +296,10 @@ public class AngleInput implements Input { @Override public boolean isButtonPressed (int button) { return false; } + + @Override public void vibrate (long[] pattern, int repeat) { + } + + @Override public void cancelVibrate () { + } } diff --git a/gdx/src/com/badlogic/gdx/Input.java b/gdx/src/com/badlogic/gdx/Input.java index 396b3a523..1dbad30d5 100644 --- a/gdx/src/com/badlogic/gdx/Input.java +++ b/gdx/src/com/badlogic/gdx/Input.java @@ -298,6 +298,19 @@ public interface Input { * @param milliseconds the number of milliseconds to vibrate. */ public void vibrate (int milliseconds); + + /** + * Vibrate with a given pattern. + * Pass in an array of ints that are the times at which to turn on or off the vibrator. The first one is how long to wait before turning it on, and then after that it alternates. If you want to repeat, pass the index into the pattern at which to start the repeat. + * @param pattern an array of longs of times to turn the vibrator on or off. + * @param the index into pattern at which to repeat, or -1 if you don't want to repeat. + */ + public void vibrate (long[] pattern, int repeat); + + /** + * Stops the vibrator + */ + public void cancelVibrate(); /** * Sets whether the BACK button on Android should be caught. This will prevent the app from being paused. Will have no effect diff --git a/tests/gdx-tests-android/AndroidManifest.xml b/tests/gdx-tests-android/AndroidManifest.xml index b9e0cb9a4..3c3721cf8 100644 --- a/tests/gdx-tests-android/AndroidManifest.xml +++ b/tests/gdx-tests-android/AndroidManifest.xml @@ -60,5 +60,6 @@ + diff --git a/tests/gdx-tests/src/com/badlogic/gdx/tests/VibratorTest.java b/tests/gdx-tests/src/com/badlogic/gdx/tests/VibratorTest.java new file mode 100644 index 000000000..32f5f806b --- /dev/null +++ b/tests/gdx-tests/src/com/badlogic/gdx/tests/VibratorTest.java @@ -0,0 +1,34 @@ +package com.badlogic.gdx.tests; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.GL10; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.tests.utils.GdxTest; + +public class VibratorTest extends GdxTest { + + @Override public boolean needsGL20 () { + return false; + } + + SpriteBatch batch; + BitmapFont font; + + @Override + public void create() { + batch = new SpriteBatch(); + font = new BitmapFont(); + } + + @Override + public void render() { + Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); + batch.begin(); + font.draw(batch, "Touch screen to vibrate", 100, 100); + batch.end(); + + if(Gdx.input.justTouched()) + Gdx.input.vibrate(100); + } +} -- 2.11.0