PhoneGap - Forcing Landscape orientation

谁都会走 提交于 2019-11-26 04:51:34

问题


I started looking into PhoneGap yesterday and created a simple \"marble\" rolling around while tilting the phone. I am currently developing on Android but I want the orientation to stay as landscaping instead of moving when the phone gets spun around. Is there a way of doing this?

Manifest:

<?xml version=\"1.0\" encoding=\"utf-8\"?>
<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"
    package=\"com.phonegap.helloworld\"
    android:versionCode=\"1\"
    android:versionName=\"1.0\" >
<supports-screens
    android:largeScreens=\"true\"
    android:normalScreens=\"true\"
    android:smallScreens=\"true\"
    android:resizeable=\"true\"
    android:anyDensity=\"true\"
/>
<uses-permission android:name=\"android.permission.CAMERA\" />
<uses-permission android:name=\"android.permission.VIBRATE\" />
<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />
<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />
<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\" />
<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />
<uses-permission android:name=\"android.permission.INTERNET\" />
<uses-permission android:name=\"android.permission.RECEIVE_SMS\" />
<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />
<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" />
<uses-permission android:name=\"android.permission.READ_CONTACTS\" />
<uses-permission android:name=\"android.permission.WRITE_CONTACTS\" />
<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />
<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" /> 
<uses-permission android:name=\"android.permission.GET_ACCOUNTS\" />
<uses-permission android:name=\"android.permission.BROADCAST_STICKY\" />
<uses-sdk android:minSdkVersion=\"8\" />
    <application
        android:icon=\"@drawable/ic_launcher\"
        android:label=\"@string/app_name\" >
        <activity
            android:name=\".App\" 
            android:configChanges=\"orientation|keyboardHidden\"
            android:label=\"@string/app_name\" >
            <intent-filter>
                <action android:name=\"android.intent.action.MAIN\" />
                <category android:name=\"android.intent.category.LAUNCHER\" />
            </intent-filter>
        </activity>
        <activity 
            android:name=\"com.phonegap.DroidGap\" 
            android:label=\"@string/app_name\" 
            android:screenOrientation=\"landscape\"
            android:configChanges=\"orientation|keyboardHidden\"> 
            <intent-filter></intent-filter> 
        </activity> 
    </application>
</manifest>

Code:

package com.phonegap.helloworld;

import android.os.Bundle;
import org.apache.cordova.*;

public class App extends DroidGap {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.loadUrl(\"file:///android_asset/www/index.html\");
    }
}

回答1:


Have you tried this?

android:screenOrientation="portrait"

Inside the AndroidManifest.xml file, where you have declared your activity, just add the above line.

For example:

<activity
            android:name=".Activity.SplashScreenActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait">
            <intent-filter>
                <action
                    android:name="android.intent.action.MAIN" />
                <category
                    android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>



回答2:


The correct way to do this for all devices is to configure config.xml

<preference name="orientation" value="portrait" />

<preference name="orientation" value="landscape" />

https://build.phonegap.com/docs/config-xml




回答3:


It is very simple, you need to add android:screenOrientation="landscape" in your AndroidManifest.xml file.

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".LogUploaderActivity" android:label="Log Uploader" android:screenOrientation="landscape" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>



回答4:


Please try this in your activity. Inside onCreate() and before setContentView.

// keeps the screen orientation in Landscape mode
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);



回答5:


Maybe important to mention because i did not know it:

If you use the online phonegap apk converter with hydration enabled to your application, u'll have to rebuild your app completly instead of just update it. This will help you also with preferences like "orientation" or "fullscreen" !



来源:https://stackoverflow.com/questions/9801128/phonegap-forcing-landscape-orientation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!