锁定DreamService的屏幕方向

时间:2012-12-12 23:40:51

标签: android android-4.2-jelly-bean dreamservice

在过去的几个小时里,我一直在摆弄新的DreamService API,而且非常甜蜜。不过我确实有一个问题。

我想在显示DreamService时将屏幕方向锁定为横向。 DreamService的目的是显示一些宽屏照片,而我宁愿在屏幕的顶部和底部没有黑条。

我已经尝试了很多东西,包括Java代码中的setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)和清单文件中的android:screenOrientation="landscape",但没有一个有用。

这让我想知道:是否可以锁定DreamService的方向?

3 个答案:

答案 0 :(得分:2)

Android开发团队确认,目前在实时开发人员环聊期间无法实现这一目标。

我相信Google希望DreamServices能够在两个屏幕方向上工作,这就是为什么它不可能。

答案 1 :(得分:1)

解决方法:使用此库https://github.com/rongi/rotate-layout

build.gradle

 dependencies {
        compile 'rongi.rotate-layout:rotate-layout:2.0.0'
    }

your_daydream_layout.xml

<com.github.rongi.rotate_layout.layout.RotateLayout  
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   app:angle="-90">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <WebView
        android:id="@+id/daydream_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#2a2e31" />

    <TextView
        android:id="@+id/dream_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="sans-serif-light"
        android:text="..."
            android:textColor="#abc"
            android:textSize="20sp" />
    </RelativeLayout>
</com.github.rongi.rotate_layout.layout.RotateLayout>

顺便说一下: 允许自动旋转您的白日梦..来自https://code.google.com/p/android/issues/detail?id=40226

  

&#34;看起来已经实现了这个问题的解决方案(没有人告诉过   我们)。不幸的是,它没有正常工作。在我的Nexus 6p上(6.0.1,   如果我向最左边的屏幕(Google现在?)点击,请点按“构建#MHC19Q”   左上角的汉堡菜单,选择设置,然后转到   在底部,有一个&#34;允许轮换&#34;主屏幕选项。同   启用后,主屏幕将能够旋转到横向   需要时定位。然后Daydream可以继承旋转和   也以横向模式显示。&#34; - 2016年5月18日

答案 2 :(得分:0)

遗憾的是我没有找到任何解决方案,我不得不使用一个讨厌的解决方法,可能会或可能不会对你有用,就是在设置布局之前设置自动旋转设置:< / p>

在DreamService类中:

import android.provider.Settings;
<...>

    @Override
public void onAttachedToWindow() {

    Settings.System.putInt(getContentResolver(),
            android.provider.Settings.System.ACCELEROMETER_ROTATION, 0);

    setContentView(R.layout.dream_main);
<...>

在你的清单中:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />