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

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

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, который показывает это поведение (в обоих направлениях).

Другие вопросы по тегам