2015年3月30日月曜日

Android 5.0.1 でDaydreamが動かない

早速入れておこうと思うスクリーンセイバーですが、なぜか動作せず。
現象としてはスクリーンセイバーを選択して「今すぐ表示」 を選んでもなぜか時計が表示されるという不可解な現象。
最初はAndroidのバグか!と思いながらも他のものを選択すると正しく動作するので、時間ができたときに対応しようと悔しい思いをしながら寝た訳ですが、早速デバッグしてみます。


そもそも設定画面に開発者~が出ていない(笑)
どこか忘れたけどタップすればいいんだっけ?とおもいつつひたすら設定項目を連打。
ようやくデベロッパーになりました。

さて、実際のログを表示させてみると、それっぽいのがありました。

03-30 12:30:09.941    1325-1339/? I/PowerManagerService﹕ Nap time (uid 1000)...
03-30 12:30:09.942    1325-1352/? W/DreamManagerService﹕ Dream ComponentInfo{jp.rallwell.siriuth.stardaydream/jp.rallwell.siriuth.stardaydream.StarDaydream} is not available because its manifest is missing the android.permission.BIND_DREAM_SERVICE permission on the dream service declaration.
03-30 12:30:09.942    1325-1352/? W/DreamManagerService﹕ Falling back to default dream ComponentInfo{com.google.android.deskclock/com.android.deskclock.Screensaver}
03-30 12:30:09.942    1325-1352/? I/DreamManagerService﹕ Entering dreamland.
03-30 12:30:09.942    1325-1352/? I/PowerManagerService﹕ Dreaming...
03-30 12:30:09.942    1325-1347/? I/DreamController﹕ Starting dream: name=ComponentInfo{com.google.android.deskclock/com.android.deskclock.Screensaver}, isTest=false, canDoze=false, userId=0
03-30 12:30:14.993    1500-1500/? D/PhoneStatusBar﹕ disable: < expand icons alerts system_info back home RECENT* clock SEARCH* >

なるほど、パーミッションが足りないようです。

パーミッションを追加してみるものの、結果は変らずメッセージを読み直してみると"service declaration"ってしっかり書いてありますね。
念のためデベロッパーズガイドも参照してみると。
 <service
     android:name=".MyDream"
     android:exported="true"
     android:icon="@drawable/my_icon"
     android:label="@string/my_dream_label"
     android:permission="android.permission.BIND_DREAM_SERVICE">
   <intent-filter>
     <action android:name=”android.service.dreams.DreamService” />
     <category android:name=”android.intent.category.DEFAULT” />
   </intent-filter>
 </service>
ってしっかり書いてありました。
ようやくこれでAndroid 5にも対応できました。というか今まで動かなかったとか。
やっぱり実機は必要ですねぇ(笑)

0 件のコメント:

コメントを投稿