В андроиде как изменить настройки Daydream из кода?

Я хочу написать приложение, которое может изменить настройки мечты. Это потребует установить мою собственную мечту как выбранную, а также сделать вариант, когда играть как «Ибо». Возможно ли реализовать эту функцию в SDK версии 19?


person user3113441    schedule 18.12.2013    source источник


Ответы (1)


Если вы хотите установить мечту для пользователя, вы не можете этого сделать. Однако вы можете открыть системные настройки в нужном месте, чтобы пользователь мог выбирать из установленных мечтаний.

Вы можете предоставить кнопку для доступа к настройкам Daydream следующим образом:

public void onSettingsButtonClick(View v) {
    Intent intent;
    if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR2) {
        intent = new Intent(Settings.ACTION_DREAM_SETTINGS);
    } else {
        intent = new Intent(Settings.ACTION_DISPLAY_SETTINGS);
    }
    startActivity(intent);
}

Это приведет пользователя либо к разделу «Настройки Daydream», либо к разделу «Настройки дисплея» в настройках устройства.

Если вы хотите, чтобы пользователь мог перейти от настроек устройства к определенному действию для настройки вашей мечты, вы можете добавить здесь тег <meta-data/> как элемент службы Daydream в свой манифест:

    <service
        android:name="some.package.SomeDaydream"
        android:exported="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.service.dreams.DreamService" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <meta-data
            android:name="android.service.dream"
            android:resource="@xml/dream_info" />
    </service>

При нацеливании на уровень API 21 и выше вы должны объявить службу в файле манифеста с разрешением BIND_DREAM_SERVICE. Например:

 android:permission="android.permission.BIND_DREAM_SERVICE">

Затем в /res/xml/ добавьте dream_info.xml:

<?xml version="1.0" encoding="utf-8"?>
<dream xmlns:android="http://schemas.android.com/apk/res/android"
    android:settingsActivity="some.package/.SomeActivity" />

У меня есть пример Daydream здесь, который показывает такое поведение (в обоих направлениях).

person Adam S    schedule 18.12.2013
comment
Есть ли способ программно запустить выбранную пользователем мечту? Я только что разместил вопрос об этом здесь: stackoverflow.com/questions/21369368/ - person Jacob Tabak; 27.01.2014
comment
Если у вас есть settingsActivity, не забудьте объявить его в файле манифеста вашего приложения, иначе он не будет загружен, и вы получите сообщение об ошибке, когда пользователь попытается запустить страницу настроек. - person markmanca; 14.03.2015
comment
android.Permission.BIND_DREAM_SERVICE будет предоставляться только системным приложениям. - person laim2003; 22.07.2019