2013-12-18 2 views
1

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

ответ

5

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

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

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

+0

Есть ли способ запустить выбранный вами мечты программным путем? Я просто разместил вопрос об этом здесь: http://stackoverflow.com/questions/21369368/how-do-you-start-the-users-selected-daydream-programmatically –

+1

Если у вас есть настройкиАктивность, не забывайте объявите его в файле манифеста приложения, иначе он не будет загружен, и вы получите сообщение об ошибке, когда пользователь попытается запустить страницу настроек. – markmanca