【问题标题】:In android, how to change the settings of Daydream from code?在 android 中,如何从代码中更改 Daydream 的设置?
【发布时间】:2016-11-17 19:23:14
【问题描述】:

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

【问题讨论】:

    标签: android screensaver android-4.4-kitkat


    【解决方案1】:

    如果你想为用户设置白日梦,你不能这样做。但是,您可以在正确的位置打开系统设置,以便用户可以从已安装的 Daydreams 中进行选择。

    您可以提供一个按钮来访问 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 设置”或“显示设置”部分。

    如果您希望用户能够从设备设置转到特定活动以配置您的 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 here 显示了这种行为(双向)。

    【讨论】:

    • 有没有办法以编程方式启动用户选择的白日梦?我刚刚在这里发布了一个关于它的问题:stackoverflow.com/questions/21369368/…
    • 如果你有一个settingsActivity,不要忘记在你的应用程序的manifest文件中声明它,否则它不会被加载并且当用户尝试启动设置页面时你会得到一个错误.
    • android.Permission.BIND_DREAM_SERVICE 只会授予系统应用程序。
    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2019-08-17
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    相关资源
    最近更新 更多