在android中,如何从代码中更改Daydream的设置?

时间:2013-12-18 01:52:57

标签: android screensaver android-4.4-kitkat

我想写一个可以改变白日梦设置的应用程序。它需要将我自己的梦想设置为选中,并将播放时间选项设为“Either”。是否可以在sdk版本19中实现此功能?

1 个答案:

答案 0 :(得分:5)

如果要为用户设置白日梦,则无法执行此操作。但是,您可以在正确的位置打开系统设置,以便用户可以从已安装的白日梦中进行选择。

您可以提供按钮来访问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);
}

这将使用户进入“白日梦设置”或设备设置的“显示设置”部分。

如果您希望用户能够从设备设置转到特定活动以配置您的白日梦,您可以在此处添加<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 here,显示了这种行为(在两个方向上)。