Skip to content

Fix vibration for testapps #2034

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 9, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 21 additions & 8 deletions testapps/testapp/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,21 +123,34 @@ def on_pause(self):

def test_pyjnius(self, *args):
try:
from jnius import autoclass
from jnius import autoclass, cast
except ImportError:
raise_error('Could not import pyjnius')
return

print('Attempting to vibrate with pyjnius')
# PythonActivity = autoclass('org.renpy.android.PythonActivity')
# activity = PythonActivity.mActivity
ANDROID_VERSION = autoclass('android.os.Build$VERSION')
SDK_INT = ANDROID_VERSION.SDK_INT

Context = autoclass("android.content.Context")
PythonActivity = autoclass('org.kivy.android.PythonActivity')
activity = PythonActivity.mActivity
Intent = autoclass('android.content.Intent')
Context = autoclass('android.content.Context')
vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE)

vibrator.vibrate(1000)
vibrator_service = activity.getSystemService(Context.VIBRATOR_SERVICE)
vibrator = cast("android.os.Vibrator", vibrator_service)

if vibrator and SDK_INT >= 26:
print("Using android's `VibrationEffect` (SDK >= 26)")
VibrationEffect = autoclass("android.os.VibrationEffect")
vibrator.vibrate(
VibrationEffect.createOneShot(
1000, VibrationEffect.DEFAULT_AMPLITUDE,
),
)
elif vibrator:
print("Using deprecated android's vibrate (SDK < 26)")
vibrator.vibrate(1000)
else:
print('Something happened...vibrator service disabled?')

def test_ctypes(self, *args):
import ctypes
Expand Down
33 changes: 24 additions & 9 deletions testapps/testapp_encryption/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,19 +324,34 @@ def on_pause(self):

def test_pyjnius(self, *args):
try:
from jnius import autoclass
from jnius import autoclass, cast
except ImportError:
raise_error('Could not import pyjnius')
return

print('Attempting to vibrate with pyjnius')
python_activity = autoclass('org.kivy.android.PythonActivity')
activity = python_activity.mActivity
intent = autoclass('android.content.Intent')
context = autoclass('android.content.Context')
vibrator = activity.getSystemService(context.VIBRATOR_SERVICE)

vibrator.vibrate(1000)
ANDROID_VERSION = autoclass('android.os.Build$VERSION')
SDK_INT = ANDROID_VERSION.SDK_INT

Context = autoclass("android.content.Context")
PythonActivity = autoclass('org.kivy.android.PythonActivity')
activity = PythonActivity.mActivity

vibrator_service = activity.getSystemService(Context.VIBRATOR_SERVICE)
vibrator = cast("android.os.Vibrator", vibrator_service)

if vibrator and SDK_INT >= 26:
print("Using android's `VibrationEffect` (SDK >= 26)")
VibrationEffect = autoclass("android.os.VibrationEffect")
vibrator.vibrate(
VibrationEffect.createOneShot(
1000, VibrationEffect.DEFAULT_AMPLITUDE,
),
)
elif vibrator:
print("Using deprecated android's vibrate (SDK < 26)")
vibrator.vibrate(1000)
else:
print('Something happened...vibrator service disabled?')

def test_ctypes(self, *args):
import ctypes
Expand Down
23 changes: 20 additions & 3 deletions testapps/testapp_flask/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,16 @@
print('imported flask etc')
print('importing pyjnius')

from jnius import autoclass
from jnius import autoclass, cast

ANDROID_VERSION = autoclass('android.os.Build$VERSION')
SDK_INT = ANDROID_VERSION.SDK_INT
Context = autoclass('android.content.Context')
PythonActivity = autoclass('org.kivy.android.PythonActivity')
activity = PythonActivity.mActivity

vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE)
vibrator_service = activity.getSystemService(Context.VIBRATOR_SERVICE)
vibrator = cast("android.os.Vibrator", vibrator_service)

ActivityInfo = autoclass('android.content.pm.ActivityInfo')

Expand All @@ -50,7 +54,20 @@ def vibrate():
print('ERROR: asked to vibrate but without time argument')
print('asked to vibrate', args['time'])

vibrator.vibrate(float(args['time']) * 1000)
if vibrator and SDK_INT >= 26:
print("Using android's `VibrationEffect` (SDK >= 26)")
VibrationEffect = autoclass("android.os.VibrationEffect")
vibrator.vibrate(
VibrationEffect.createOneShot(
int(float(args['time']) * 1000),
VibrationEffect.DEFAULT_AMPLITUDE,
),
)
elif vibrator:
print("Using deprecated android's vibrate (SDK < 26)")
vibrator.vibrate(int(float(args['time']) * 1000))
else:
print('Something happened...vibrator service disabled?')
print('vibrated')

@app.route('/loadUrl')
Expand Down
29 changes: 21 additions & 8 deletions testapps/testapp_keyboard/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,21 +121,34 @@ def on_pause(self):

def test_pyjnius(self, *args):
try:
from jnius import autoclass
from jnius import autoclass, cast
except ImportError:
raise_error('Could not import pyjnius')
return

print('Attempting to vibrate with pyjnius')
# PythonActivity = autoclass('org.renpy.android.PythonActivity')
# activity = PythonActivity.mActivity
ANDROID_VERSION = autoclass('android.os.Build$VERSION')
SDK_INT = ANDROID_VERSION.SDK_INT

Context = autoclass("android.content.Context")
PythonActivity = autoclass('org.kivy.android.PythonActivity')
activity = PythonActivity.mActivity
Intent = autoclass('android.content.Intent')
Context = autoclass('android.content.Context')
vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE)

vibrator.vibrate(1000)
vibrator_service = activity.getSystemService(Context.VIBRATOR_SERVICE)
vibrator = cast("android.os.Vibrator", vibrator_service)

if vibrator and SDK_INT >= 26:
print("Using android's `VibrationEffect` (SDK >= 26)")
VibrationEffect = autoclass("android.os.VibrationEffect")
vibrator.vibrate(
VibrationEffect.createOneShot(
1000, VibrationEffect.DEFAULT_AMPLITUDE,
),
)
elif vibrator:
print("Using deprecated android's vibrate (SDK < 26)")
vibrator.vibrate(1000)
else:
print('Something happened...vibrator service disabled?')

def test_ctypes(self, *args):
import ctypes
Expand Down
41 changes: 25 additions & 16 deletions testapps/testapp_pillow/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -337,25 +337,34 @@ def on_stop(self):

def test_pyjnius(self, *args):
try:
from jnius import autoclass
from jnius import autoclass, cast
except ImportError:
raise_error("Could not import pyjnius")
raise_error('Could not import pyjnius')
return

print("Attempting to vibrate with pyjnius")
# Todo: fix vibrate with Api level >= 26
# vibrate was deprecated in API level 26:
# https://developer.android.com/reference/android/os/Vibrator
try:
PythonActivity = autoclass("org.kivy.android.PythonActivity")
activity = PythonActivity.mActivity
Intent = autoclass("android.content.Intent")
Context = autoclass("android.content.Context")
vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE)

print('Attempting to vibrate with pyjnius')
ANDROID_VERSION = autoclass('android.os.Build$VERSION')
SDK_INT = ANDROID_VERSION.SDK_INT

Context = autoclass("android.content.Context")
PythonActivity = autoclass('org.kivy.android.PythonActivity')
activity = PythonActivity.mActivity

vibrator_service = activity.getSystemService(Context.VIBRATOR_SERVICE)
vibrator = cast("android.os.Vibrator", vibrator_service)

if vibrator and SDK_INT >= 26:
print("Using android's `VibrationEffect` (SDK >= 26)")
VibrationEffect = autoclass("android.os.VibrationEffect")
vibrator.vibrate(
VibrationEffect.createOneShot(
1000, VibrationEffect.DEFAULT_AMPLITUDE,
),
)
elif vibrator:
print("Using deprecated android's vibrate (SDK < 26)")
vibrator.vibrate(1000)
except Exception as e:
raise_error("Error when trying to vibrate: {}".format(e))
else:
print('Something happened...vibrator service disabled?')

def test_ctypes(self, *args):
try:
Expand Down
31 changes: 22 additions & 9 deletions testapps/testapp_sqlite_openssl/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,24 +192,37 @@ def on_pause(self):

def test_pyjnius(self, *args):
try:
from jnius import autoclass
from jnius import autoclass, cast
except ImportError:
raise_error('Could not import pyjnius')
return

print('Attempting to vibrate with pyjnius')
# PythonActivity = autoclass('org.renpy.android.PythonActivity')
# activity = PythonActivity.mActivity
ANDROID_VERSION = autoclass('android.os.Build$VERSION')
SDK_INT = ANDROID_VERSION.SDK_INT

Context = autoclass("android.content.Context")
PythonActivity = autoclass('org.kivy.android.PythonActivity')
activity = PythonActivity.mActivity
Intent = autoclass('android.content.Intent')
Context = autoclass('android.content.Context')
vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE)

vibrator.vibrate(1000)
vibrator_service = activity.getSystemService(Context.VIBRATOR_SERVICE)
vibrator = cast("android.os.Vibrator", vibrator_service)

if vibrator and SDK_INT >= 26:
print("Using android's `VibrationEffect` (SDK >= 26)")
VibrationEffect = autoclass("android.os.VibrationEffect")
vibrator.vibrate(
VibrationEffect.createOneShot(
1000, VibrationEffect.DEFAULT_AMPLITUDE,
),
)
elif vibrator:
print("Using deprecated android's vibrate (SDK < 26)")
vibrator.vibrate(1000)
else:
print('Something happened...vibrator service disabled?')

def test_ctypes(self, *args):
import ctypes
pass

def test_numpy(self, *args):
import numpy
Expand Down