android - 如何使 PS4 和 Xbox One 控制器在 iOS 13 和 Android 上使用 SDL2 正常工作?
问题描述
我使用 SDL2,并尝试让我的控制器在 iOS 13 和 Android 10 上都发出隆隆声。您可以在下面看到我的代码摘录:
joystick = SDL_JoystickOpen(device);
SDL_Haptic * haptic = SDL_HapticOpenFromJoystick(joystick);
SDL_HapticRumbleInit(haptic);
SDL_HapticRumblePlay(haptic, (float)0.5, 2000);
SDL_HapticClose(haptic);
但目前它仅适用于带有 PS4 控制器的 Android 10,带有 Xbox One 控制器,对 SDL_NumHaptics() 的 SDL 调用在 iOS 13 和 Android 10 上总是返回 0,这与 iOS 13 上的 PS4 控制器相同......
有人遇到过同样的问题吗?如果是,有没有办法解决或解决它?
先感谢您。
解决方案
您必须在关闭 Haptic 之前添加 SDL_Delay(2000)。如果您不这样做,那么您将在它真正发出隆隆声之前将其关闭
joystick = SDL_JoystickOpen(device);
SDL_Haptic * haptic = SDL_HapticOpenFromJoystick(joystick);
SDL_HapticRumbleInit(haptic);
SDL_HapticRumblePlay(haptic, (float)0.5, 2000);
SDL_Delay(2000);
SDL_HapticClose(haptic);
我还将添加相应的检查,如 sdl2 的 wiki 中所示:
SDL_Haptic *haptic;
// Open the device
haptic = SDL_HapticOpen( 0 );
if (haptic == NULL)
return -1;
// Initialize simple rumble
if (SDL_HapticRumbleInit( haptic ) != 0)
return -1;
// Play effect at 50% strength for 2 seconds
if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0)
return -1;
SDL_Delay( 2000 );
// Clean up
SDL_HapticClose( haptic );
推荐阅读
- c++ - Armadillo C++ 配置检查
- python - fast_executemany=True 等效于 SQLALCHEMY 中的 Oracle
- java - 为什么我们不能只抛出 Exception/Throwable 而不是有多个异常
- pytorch - 使用卷积自动编码器在照片上添加微笑的问题
- html - 如何在左侧垂直对齐多个div,在右侧垂直对齐一个大div?
- android - 无法解析所有配置文件:':app:debugRuntimeClasspath'
- c++ - 如何使用 Miracl c++ 实现双线性配对
- javascript - 为什么创建Vue组件时我的数组未定义?
- r - 具有目标“计数:泊松”的 xgboost 模型上的 R 中的 LIME
- javascript - 如何在 django 中创建和使用变量