ロック画面ウィジェット操作中スリープしてしまう問題

286 views
Skip to first unread message

MOW

unread,
Apr 8, 2014, 2:50:23 AM4/8/14
to android-g...@googlegroups.com
 今ロック画面の配置して、ある程度の時間操作する可能性のあるウィジェットを作っていますが、ロック画面ウィジェットの操作ではスリープタイマーがリセットされない仕様のようで、操作中にもかかわらずバックライトが減光され、スリープに移行してしまいます。ロック画面ウィジェットは長時間さわるものを置くべきではないという事かもしれませんが、ロック画面ウィジェットにおけることが便利であるツールを作りたいので、正直ちょっと困っています。

 それならとdocを眺めて、タッチイベント時にPowerManager#userActivityを呼べばいいのかと試したのですが、どうも必要とされるDEVICE_POWERパーミッションは一般ユーザーでは唱えられないらしくダメ。
 タッチイベント時にWakeLock を取得してacquire()とrelease()を続けて記述してみたりしましたが、これでスリープには入らなくなりましたが減光はされる為残念ながらいまいち。

 教えていただきたいのですが、

 1)ロック画面ウィジェットで操作中はスリープタイマーをリセットする設定は有るのでしょうか?
 2)タッチ時のイベントでPowerManager#userActivityの代用となる方法は存在するのでしょうか?

 どうかよろしくお願い致します。

Shigeo Mutoh

unread,
Apr 8, 2014, 4:21:59 AM4/8/14
to android-g...@googlegroups.com
武藤です。

(14/4/8 15:50), MOW wrote:
> タッチイベント時にWakeLock
> を取得してacquire()とrelease()を続けて記述してみたりしましたが、

acquireとreleaseを続けて記述したのですか? 本当ですか?
それでは無意味な挙動を示すと思ったのですが。。

では。


MOW

unread,
Apr 8, 2014, 6:25:40 AM4/8/14
to android-g...@googlegroups.com
そうですね、無意味でした。。スリープタイマーのリセットを期待したのですが、結局期待した効果は得られませんでした、、、。

良い方法ございましたら、是非ご享受願えませんでしょうか。

Makoto Yamazaki

unread,
Apr 8, 2014, 11:09:31 AM4/8/14
to android-g...@googlegroups.com
zaki です。

aquire(), release() する WakeLock を作成する際に SCREEN_BRIGHT_WAKE_LOCK | ON_AFTER_RELEASE
だとうまくいったりしないでしょうか。


ドキュメントによると、 ON_AFTER_RELEASE は PARTIAL_WAKE_LOCK 以外と組み合わせると
release() 後にタイマーがリセットされると書いてあります。



2014-04-08 19:25 GMT+09:00 MOW <souts...@gmail.com>:
そうですね、無意味でした。。スリープタイマーのリセットを期待したのですが、結局期待した効果は得られませんでした、、、。

良い方法ございましたら、是非ご享受願えませんでしょうか。

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。



--
YAMAZAKI Makoto

MOW

unread,
Apr 8, 2014, 5:05:38 PM4/8/14
to android-g...@googlegroups.com

aquire(), release() する WakeLock を作成する際に SCREEN_BRIGHT_WAKE_LOCK | ON_AFTER_RELEASE
だとうまくいったりしないでしょうか。


 ありがとうございます。早速試してみましたが、挙動は変わりませんでした。(スリープには行かないが、画面の減光は発動する。)

 困りました。DEVICE_POWERパーミッションを使えるように、システムからGoogleの署名を抜く話も海外で見かけましたが、そこまではしないとやはり無理なんでしょうかね・・・。アプリに不必要な、怪しげな権限を要求するアプリにはしたくないなぁ…。

 一週間ほど悩んで検索しまくってたのですが、正直ロック画面ウィジェットの開発でこの手の話題を見かけないのが不思議でいます。ロック画面ウィジェットで長時間操作するものではないのかもしれませんが、それはガイドラインとして提示するべきで強制するものではないと思うんだけどなぁ…。

Shigeo Mutoh

unread,
Apr 8, 2014, 10:56:55 PM4/8/14
to android-g...@googlegroups.com
武藤です。

逆に MOWさんに質問したいのですが、ロック画面widgetの「タッチ操作」
ってできるのでしょうか?

ロック画面の意味がない、と思ったので。。

よろしくお願いします。

MOW

unread,
Apr 9, 2014, 12:43:30 AM4/9/14
to android-g...@googlegroups.com
 MOWです。

 出来ます・・よ?基本ホーム画面のウィジェットと同じですので。ボタンコンポーネントのクリック操作をし続けても、スリープタイマーがリセットされないため困っております。

 意味無意味はアプリによるかと思いますが、例えば天気予報を表示するロック画面ウィジェットでも、ボタンをおす度に時間天気や週間天気、設定した地域の天気に切り替えることができたら便利だと思います。ロック画面ウィジェットですので、セキュリティに関する操作はどうかと思いますが、使い方はアイディア次第ではないかと。
 

2014年4月9日水曜日 11時56分55秒 UTC+9 TM:

Shigeo Mutoh

unread,
Apr 9, 2014, 8:51:22 PM4/9/14
to android-g...@googlegroups.com
武藤です。

実機で現象を確認しました。
キーガードやパターンによるロック画面中に現れている電卓widgetに入力でき、
おっしゃいますように入力イベントに関係なくdimmerしました。
たしかにこれは困った問題ですね。

たぶん、この辺が関係あるかと思い読んでみました。
https://github.com/android/platform_frameworks_base/blob/kitkat-release/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java

具体的な方法としてはuserActivity()を呼びたいわけですが、呼べないん
ですよねえ。

以下のも試してみる価値はありそうです。
private void sendUserPresentBroadcast() {
final UserHandle currentUser = new
         UserHandle(mLockPatternUtils.getCurrentUser());
mContext.sendBroadcastAsUser(USER_PRESENT_INTENT, currentUser);
}

すみませんが他はご自分で読んでみてください。
それか、もうcontributeする気になるとか。たぶんユーザーイベントを全く
フォローしてないと思うのです。alermを使ってるだけに見えるから。

では。

MOW

unread,
Apr 10, 2014, 12:12:00 AM4/10/14
to android-g...@googlegroups.com
 ありがとうございます。うーん、ちょっと頑張って色々読んで試してみます。

 親切にありがとうございました。


2014年4月10日木曜日 9時51分22秒 UTC+9 TM:
Reply all
Reply to author
Forward
0 new messages