强制停止自动旋转(Android、C++、SDL2)
Forcing auto-rotation to stop (Android, C++, SDL2)
我有一个游戏,它通过一个名为C4Droid的应用程序在Android上运行良好(如果你不知道C4Droid,只需谷歌一下)。它是用C++编写的,只使用 SDL2。
它在纵向上运行,因此,当我在打开自动旋转的情况下倾斜设备时,它会变得横向。
现在,我想要做的是做一些避免它的事情,即使在打开自动旋转时也能获得横向。请回答?
在 Manifist 文件中设置方向,如下所示 android:screenOrientation
<activity
android:name="com.androidgames.mreater.MrEaterGame"
android:label="Mr. Eater"
android:screenOrientation="portrait"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
不,没有办法只在 SDL2 中执行此操作(您可以在 iOS 中执行此操作,但由于某种原因,他们在 Android 中使其不同)。 Wadali 的答案是最好的,以下是您可以在构建环境中使用它的一些方法:
- 使用不同的生成环境。如果您在桌面计算机上构建 APK,则可以控制 AndroidManifest.xml 文件的内容。如果你真的想在手机上做,还有其他适用于Android的C/C++编译器。你失去的部分是 C4Droid 的易用性 - 你需要学习如何自己构建 APK。
- 像往常一样使用 C4Droid 构建它,然后使用 APK 编辑器提取、编辑和重新打包 AndroidManifest.xml。如果您愿意将APK复制到台式计算机,则可以使用apktool解压缩APK,编辑所需的文件,然后再次重新打包(注意:执行此操作后,您需要对APK重新签名才能使用);否则,似乎也有一些APK编辑器实用程序可用于Android。
有用于控制方向的 Android API,但您无法从 SDL2 中访问它们。SDL2 创建自己的活动,并且没有任何扩展它或允许您提供自己的活动的方法,因此您无法向自己的代码公开其他 Android API 调用。
你知道
SDL_HINT_ORIENTATIONS吗?
https://wiki.libsdl.org/SDL_HINT_ORIENTATIONS
即使SDL文档声称它们适用于iOS,它们似乎在Android中也能正常工作。
SDL_SetHint(SDL_HINT_ORIENTATIONS, "Portrait");
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用ndk-build.cmd构建Android.so文件
- Android NDK传感器向事件队列报告奇怪的间隔
- Android P-9.0.0_r53 Logcat主缓冲区超出定义大小
- OpenCV Android C++ imwrite not found
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- Android Studio 中带有静态库的原生C++代码
- 如何在 Android Studio 4 中编译 C/C++ 原生代码
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- Android 在编译二进制文件时重建静态库
- 我只想在Android 4.4中使用C++11库
- 无法将标准库导入本机 android 项目中的头文件
- Android Java USB for native cpp
- 来自 Android 应用程序内部的 boost 类型的 boost::wrapexcept<boost::system::system_error> 的未捕获异常
- Android Studio:如何在build.gradle中定义自定义宏(针对不同的构建变体),并让原生C / C++
- 在Android原生C++中使用Facemark opencv contrib
- 最小的CMake构建为Android
- 更新后的Android Studio现在需要Clang,不再链接到GCC的库
- Qt 和 Android - 如何使用 Qandroidjniobject 启动相机