强制停止自动旋转(Android,C ++,SDL2)

时间:2014-12-25 16:03:45

标签: android c++ sdl-2 screen-rotation auto-rotation

我有一款游戏,它通过名为C4Droid的应用程序在Android上运行良好(如果你不了解C4Droid,只需谷歌吧)。它是用C ++编写的,只使用SDL2。

它在纵向上运行,因此,当我打开自动旋转设备时,它会变得风景。

现在,我想要的是做一些事情,即使在打开自动旋转时也能避免它出现。请回答?

3 个答案:

答案 0 :(得分:3)

在Manifest文件中设置方向,如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>

答案 1 :(得分:1)

不,只能在SDL2中执行此操作(您可以在iOS中使用,但出于某种原因,他们在Android中使其​​不同)。 wadali的答案是最好的,这里有一些方法可以在你的构建环境中使用它:

  • 使用其他构建环境。如果您在桌面计算机上构建APK,则可以控制AndroidManifest.xml文件的内容。如果你真的想在手机上这样做,还有其他适用于Android的C / C ++编译器。您丢失的部分是C4Droid的易用性 - 您需要自己学习如何构建APK。
  • 像往常一样使用C4Droid构建它,然后使用APK编辑器提取,编辑和重新打包AndroidManifest.xml。如果您愿意将APK复制到桌面计算机,则可以使用apktool解压缩APK,编辑所需文件,然后重新打包(注意:您需要重新签名后才能重新签名)在它可以使用之前这样做);否则,似乎还有一些适用于Android的APK编辑器实用程序。

有用于控制方向的Android API,但您无法从SDL2中访问它们。 SDL2创建自己的活动,并且没有任何方法可以扩展它或让您提供自己的活动,因此您不能将其他Android API调用暴露给您自己的代码。

答案 2 :(得分:0)

您了解SDL_HINT_ORIENTATIONS吗?

https://wiki.libsdl.org/SDL_HINT_ORIENTATIONS

即使SDL文档声称它们适用于iOS,它们似乎在Android上也能正常工作。

SDL_SetHint(SDL_HINT_ORIENTATIONS, "Portrait");