2013-09-30 2 views
4

개발중인 앱은 가로 모드로만 표시되어야합니다. 내 응용 프로그램 설명자에서가로로 시작하는 Adobe AIR Android가 작동하지 않습니다.

은 내가 iOS 기기의 응용 프로그램이 가로 모드에서 시작됩니다 예상대로 모든 작품에

<aspectRatio>landscape</aspectRatio> 
    <autoOrients>false</autoOrients> 

있습니다.

하지만 내 안드로이드 장치 (삼성 갤럭시 S3)에 배포하려고하면 응용 프로그램이 세로 모드로 실행됩니다.

내가 설명자 파일을 수정

읽을 :
<aspectRatio>landscape</aspectRatio> 
    <autoOrients>true</autoOrients> 

다음 응용 프로그램은 방향을 변경하는 것입니다.

을 :

디버깅하는 동안 내가 시작하는 애플 리케이션 방향이 stage.orientation는 == "기본"또한 내가 내 app.xml (응용 프로그램 설명자 파일)에 특정 구성을 안드로이드에 android:screenOrientation="landscape"을 추가 한

것을 발견

<android> 
    <manifestAdditions> 
     <![CDATA[ 
     <manifest android:installLocation="auto"> 
      <uses-permission android:name="android.permission.INTERNET"/> 
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
      <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
      <uses-permission android:name="android.permission.VIBRATE"/> 
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
      <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 
      <uses-permission android:name="android.permission.WAKE_LOCK"/> 
      <uses-permission android:name="android.permission.CAMERA"/> 
      <uses-permission android:name="android.permission.RECORD_AUDIO"/> 
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

      <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/> 
      <application android:enabled="true"> 
       <activity android:excludeFromRecents="false" android:screenOrientation="landscape"> 
        <intent-filter> 
         <action android:name="android.intent.action.MAIN"/> 
         <category android:name="android.intent.category.LAUNCHER"/> 
        </intent-filter> 
       </activity> 
      </application> 
     </manifest> 
     ]]> 
     </manifestAdditions> 

    <!--Color depth for the app (either "32bit" or "16bit"). Optional. Default 16bit before namespace 3.0, 32bit after --> 
    <!--<colorDepth></colorDepth>--> 
</android> 

이 것이 알려진 문제입니까? 이것의 원인이 무엇일까요?

편집 :

내 메인 클래스에 stage.setAspectRatio(StageAspectRatio.LANDSCAPE);를 사용하여 끝났다. PORTRAIT 이외의 기본 방향을 가진 장치에서도 작동합니다.

답변

2

비슷한 방향으로 문제가있었습니다. 특정 장치에 대해서만 방향 변경을 제한해야하므로 런타임에 값을 설정하여 해결했습니다 (앱이 완전히 초기화되기 전). 리스너에서

<s:Application ... 
    preinitialize="preinit()"> 

및 설정 방향 값 :

private function preinit():void 
{ 
    systemManager.stage.setOrientation(StageOrientation.ROTATED_LEFT); 
    systemManager.stage.autoOrients = false; 
} 

또는 대신 StageOrientation.ROTATED_RIGHT 시도 기본 응용 프로그램 태그에서

, 사전 초기화 이벤트를 수신합니다.

편집 : 조쉬 (Josh)가 언급했듯이, 이것은 초상화가 기본 인 장치 (예 : 삼성 S3)에서만 작동합니다.

+0

'StageOrientation'상수를 사용하여 가로인지 여부를 결정할 수 없습니다. 그들은 기본 방향에 의존합니다. 항상 기대 한 것과 다를 수 있습니다 (일부는 더 넓은 태블릿이 기본으로 풍경을 사용하고 대부분은 초상화를 사용함). 'stage.stageWidth'가'stage.stageHeight'보다 큼 (가로 방향)/작은 (세로 방향) 회전 및 올바른 방향으로 있는지 확인해야합니다. –

+0

동의하지만 전화 기본값은 항상 세로이므로 회전 된 방향은 항상 가로 방향입니다. 내가 명확하게 대답을 편집했습니다. –

+0

당신은 일반적으로 생각할 수있는 것이 옳았지 만, 손에서 손을 떼어내어 제조사 또는 더 나쁜 Adobe에 넣을 때 의지하면 안됩니다. AIR 자체는 장치 자체가 정확함에도 불구하고 과거의 잘못된 기본 방향을보고하는 것으로 알려져 있습니다 (첫 번째 망막 iPad에는이 문제가 분명히 있었고 첫 번째 망막 iPhone도있을 수 있음) –

관련 문제