Блокировка ориентации экрана DreamService
Я возился с новым DreamService
API за последние несколько часов, и это довольно мило. Но у меня есть один вопрос.
Я хотел бы зафиксировать ориентацию экрана в альбомной ориентации, когда отображается DreamService
. Цель DreamService
- показать несколько широкоэкранных фотографий, и я бы предпочел не иметь черных полос в верхней и нижней части экрана.
Я пробовал несколько вещей, в том числе setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
в коде Java и android:screenOrientation="landscape"
в файле манифеста, но ни одна из них не была работал.
Это заставляет меня задуматься: возможно ли зафиксировать ориентацию DreamService
?
3 ответа:
Команда разработчиков Android подтвердила, что в настоящее время это невозможно во время живого общения разработчиков некоторое время назад.
Я считаю, что Google хочет, чтобыDreamServices
работал в обеих ориентациях экрана, поэтому это невозможно.
Обходной путь: Используйте этот lib https://github.com/rongi/rotate-layout
строить.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
" похоже, что исправление для этого было реализовано (и никто не сказал США). К сожалению, это не работает должным образом. На моем Nexus 6p (6.0.1, Build #MHC19Q), если я проведу пальцем по самому левому экрану (Google Now?), ударить меню гамбургеров в левом верхнем углу, выберите пункт Настройки и перейдите в меню внизу есть опция "разрешить вращение" главного экрана. С если этот параметр включен, то начальный экран можно будет повернуть в альбомную ориентацию ориентация, когда это необходимо. Затем Daydream может унаследовать это вращение и отображение в ландшафтном режиме тоже."--18 мая 2016
Жаль, что я не нашел никакого решения, мне пришлось использовать неприятный обходной путь, который может или не может работать для вас, это установка настройки автоматического поворота, прямо перед настройкой вашего макета:
В классе 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" />