关于 android 的方向,我的 config.xml 有什么问题?

What is wrong in my config.xml regarding orientation on android?

我尝试了许多不同的方法来做一件简单的事情,让我的 phonegap 构建应用程序以将方向锁定为横向。

当前和不需要的(更不用说丑陋的)行为是,当我启动我的 android 应用程序时,几秒钟后,我看到屏幕(及其内容)处于纵向模式,然后 "locks" 本身变成风景。

我的 config.xml 怎么了?可能缺少什么?

<?xml version='1.0' encoding='utf-8'?>
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:gap="http://phonegap.com/ns/1.0" id="myid"  version="0.8.7" >
    <gap:config-file platform="android" parent="/manifest/application" >
        <application android:debuggable="false" />
        <activity android:screenOrientation="landscape" android:configChanges="orientation" android:name=".Activity.SplashScreenActivity" />
    </gap:config-file>

    <gap:config-file platform="ios" parent="UIViewControllerBasedStatusBarAppearance" overwrite="true">
        <false/>
    </gap:config-file>
    <preference name="orientation" value="landscape" />
    <preference name="screen-orientation" value="landscape" />
    <preference name="Orientation" value="landscape" />
    <name>myappname</name>

    <description>
       best app
    </description>
    <author email="support@phonegap.com" href="http://phonegap.com">
        PhoneGap Team
    </author>
    <content src="index.html" />

    <preference name="fullscreen" value="true" />
    <preference name="permissions" value="none" />
    <preference name="target-device" value="universal" />
    <preference name="webviewbounce" value="false" />
    <preference name="prerendered-icon" value="true" />
    <preference name="stay-in-webview" value="false" />
    <preference name="ios-statusbarstyle" value="black-opaque" />
    <preference name="detect-data-types" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <preference name="show-splash-screen-spinner" value="true" />
    <preference name="auto-hide-splash-screen" value="true" />
    <preference name="disable-cursor" value="false" />
    <preference name="android-minSdkVersion" value="7" />
    <preference name="android-installLocation" value="auto" />
    <preference name="EnableViewportScale" value="false" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="UIWebViewBounce" value="false" />
    <preference name="AutoHideSplashScreen" value="false" />
    <preference name="SplashScreenDelay" value="10000" />

    <icon src="icon.png"/>
    <gap:splash src="res/screen/android/splash.png" />

    <platform name="android">
        <!-- icons for android -->
        <icon src="res/icon/android/icon-36-ldpi.png" density="ldpi" />
        <icon src="res/icon/android/icon-48-mdpi.png" density="mdpi" />
        <icon src="res/icon/android/icon-72-hdpi.png" density="hdpi" />
        <icon src="res/icon/android/icon-96-xhdpi.png" density="xhdpi" />
    </platform>

    <gap:splash src="res/screen/android/splash.png" gap:platform="android" gap:qualifier="ldpi" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="android" gap:qualifier="mdpi" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="android" gap:qualifier="hdpi" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="android" gap:qualifier="xhdpi" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="android" gap:qualifier="fr-xhdpi" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="android" gap:qualifier="port-xxhdpi" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="android" gap:qualifier="land-xxhdpi" />

    <!-- -->
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="320" height="480" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="640" height="960" />

    <!-- iPhone 5 / iPod Touch (5th Generation) -->
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="640" height="1136" />

    <!-- iPhone 6 -->
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="750" height="1334" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="1242" height="2208" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="2208" height="1242" />

    <!-- iPad -->
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="768" height="1024" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="1024" height="768" />

    <!-- Retina iPad -->
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="1536" height="2048" />
    <gap:splash src="res/screen/android/splash.png" gap:platform="ios" width="2048" height="1536" />



    <gap:plugin name="com.phonegap.plugins.facebookconnect">
        <param name="APP_ID" value="1636377466592822" />
        <param name="APP_NAME" value="myfacebookapp" />
    </gap:plugin>

    <gap:plugin name="com.sharinglabs.cordova.plugin.cache" version="1.0.0" />

    <gap:plugin name="com.rjfun.cordova.plugin.lowlatencyaudio" version="1.1.3" />

    <gap:plugin name="com.phonegap.plugins.pushplugin" version="2.4.0" />

    <gap:plugin name="org.apache.cordova.media" version="0.2.13" />

    <gap:plugin name="org.apache.cordova.device" version="0.2.12" />

    <gap:plugin name="net.yoik.cordova.plugins.screenorientation" version="1.3.1" />

    <gap:plugin name="org.apache.cordova.splashscreen" version="0.3.4" />

    <gap:plugin name="com.adobe.plugins.gaplugin" />

    <gap:plugin name="net.bgta.phonegap.plugin.appversion" version="1.1.1" />

    <access origin="*" subdomains="true"/>
</widget>

@totothegreat, 你的 config.xml

有几个问题
  1. 使用 Phonegap Build Docs,而不是常规文档。有细微差别。足以让你绊倒。
  2. 互联网上的例子也是五花八门,人们常常不清楚他们是在使用 Phonegap CLI 还是 Phonegap Build。清楚示例的含义。不行就问作者
  3. 设置横屏只需要一个设置。它在 documentation 中为:
    <preference name="orientation" value="landscape" />
  4. 我还注意到您的图标和启动画面不正确。 这是 你的参考.

如果你不明白,你可以看看我的Demo for Mobile Popups. It is done in landscape mode. The source is on github。注意:有一瞬间,您可以看到应用程序旋转到横向模式。如果您仍然遇到问题,这可能是您的测试设备中的响应错误。这个问题的意义在这份报告中得到了最好的体现: Android Fragmentation Visualized

too much test devices have this rotation stuff (in android), so is it solvable?

我认为广泛的解决方案需要一些时间。

例如,我拥有一辆Sprout Channel Cubby which I bought for development for a client project. It costs about 0. I also have a Samsung Galaxy Tab 2 7.0。两者是有区别的。

我玩 Words with Friends,它总是需要纵向模式。在Cubby上,我经常看到程序在旋转,因为Cubby的默认模式是Landscape。在三星上,我也看到它在旋转(如果我处于横向模式),但应用程序在屏幕翻转之前更改为纵向模式。我相信发生这种情况是因为三星默认为纵向模式。

换句话说,如果最终用户已经将观看模式设置为"auto-rotate",您可以强制应用程序进入正确的模式,但总会有一些残留影响,而 效果 的数量在很大程度上取决于 OS 实施、硬件和编程。

除此之外还有数千个 Android 模型(请参阅 OpenSignals 的文章)。在什么时候,残留影响会最小?!?这是一个很难回答的问题。