2012-03-21 23 views
32

Tôi bắt đầu xem xét PhoneGap ngày hôm qua và tạo ra một "đá cẩm thạch" đơn giản lăn xung quanh trong khi nghiêng điện thoại. Tôi hiện đang phát triển trên Android nhưng tôi muốn định hướng ở lại như cảnh quan thay vì di chuyển khi điện thoại được quay xung quanh. Có cách nào để làm điều này?PhoneGap - Buộc định hướng phong cảnh

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"); 
    } 
} 
+0

Sau khi bản phát hành Apache Cordova 3.0 sửa đổi AndroidManifest.xml sẽ phá vỡ quy trình phát triển của Cordova. Sử dụng plugin thay thế. Xem phản ứng trùng lặp có thể có ở đây: http://stackoverflow.com/questions/20294090/cordova-3-1-oriention-not-working/21165941#21165941 – sgimeno

Trả lời

45

Bạn đã thử cái này chưa?

android:screenOrientation="portrait" 

Bên trong tệp AndroidManifest.xml, nơi bạn đã khai báo hoạt động của mình, chỉ cần thêm dòng trên.

Ví dụ:

<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> 
+0

Tôi đã thêm nó vào thẻ hoạt động sai vì vậy đây là một chiến thắng! chúc mừng –

+0

@mayur Tốt bị bắt. –

+0

đã làm việc cho tôi! Cảm ơn. –

3

Hãy thử điều này trong hoạt động của bạn. Bên trong onCreate() và trước setContentView.

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

không chắc chắn về nơi để đặt này, tôi đã không chạm vào java trước. –

+0

@PhilJackson Bên trong phương thức onCreate() của hoạt động chính :-) – Gattsu

7

Nó rất đơn giản, bạn cần phải thêm android:screenOrientation="landscape" trong file .xml AndroidManifest của bạn.

<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> 
+0

nó hoạt động! –

27

Các cách chính xác để làm điều này cho tất cả các thiết bị là cấu hình config.xml

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

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

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

+7

Phonegap dường như bỏ qua các cài đặt này cho tôi, bất kể giá trị của chúng. – apanosa

+0

Lý tưởng nhất, điều này sẽ hoạt động hoàn hảo trên tất cả các nền tảng PhoneGap. Lý thuyết của tôi là WebView PhoneGap có thể bị khóa theo một hướng nhất định, nhưng Hoạt động chứa của nó quay theo các thuộc tính trong AndroidManifest.xml. Tuy nhiên, tôi vẫn nghĩ rằng điều này có thể được sửa bởi PhoneGap; PhoneGap có thể chỉnh sửa AndroidManifest.xml hoặc lớp DroidGap có thể quản lý/tránh xoay vòng. –

+1

@apanosa: giải pháp này liên quan đến việc xây dựng phonegap. Tôi xác nhận rằng nó hoạt động trên ios 7.x và android 2.x ngay bây giờ với phonegap 3.4.0. – cherouvim

1

Có lẽ quan trọng đề cập đến, vì tôi không biết nó:

Nếu bạn sử dụng bộ chuyển đổi apk phonegap trực tuyến với hydrat hóa được bật cho ứng dụng của bạn, bạn sẽ phải xây dựng lại ứng dụng của bạn hoàn toàn thay vì chỉ cập nhật ứng dụng. Điều này sẽ giúp bạn cũng với các tùy chọn như "định hướng" hoặc "toàn màn hình"!

Các vấn đề liên quan