2

ホーム画面の時計ウィジェットの開発に興味があり、ホーム画面ウィジェットのチュートリアルServiceを読んで、車輪を再発明するのではなく、現在の時刻を更新するために参照できる既存のものがあるかどうか疑問に思いましたか?

Android フォンにRetro Clockアプリケーションをダウンロードしたところ、クリックすると目覚まし時計の設定がポップアップ表示されますが、デフォルトの Googleアナログ時計ウィジェットでは、クリックしても何も起こりません。

Retro Clockウィジェットが Alarm Clock サービスを実装しているためですか? もしそうなら、どうすればそのサービスを参照できますか? それとも、これはすべて間違っていて誤解されていますか?

どんな助けでも大歓迎です。

編集:

時計を更新するサービスを実装すると、バッテリーの寿命が大幅に消耗するとService思います。

4

3 に答える 3

5

私の推測では、Retro Clock ウィジェットはタッチに反応し、目覚まし時計の設定ページを起動するインテントを起動します。Android のソース コードを調べて、それがどのような意図なのかを理解することができます。ウィジェットを接続して実際にインテントを起動する方法については、Android 開発ガイドのコード例をご覧ください。


時計ウィジェットの場合、2 つの要件があるようです。少なくとも 1 分間に 1 回更新する必要がありますが、デバイスがスリープ状態の間は更新する必要はありません。ここに私が見つけた引用があります:

注: (updatePeriodMillis で定義されているように) 更新の時間になったときにデバイスがスリープ状態の場合、デバイスは更新を実行するために起動します。1 時間に 1 回以上更新しない場合は、バッテリー寿命に重大な問題が発生することはおそらくないでしょう。ただし、より頻繁に更新する必要がある場合や、デバイスがスリープ状態のときに更新する必要がない場合は、代わりに、デバイスを復帰させないアラームに基づいて更新を実行できます。これを行うには、AlarmManager を使用して、AppWidgetProvider が受け取るインテントでアラームを設定します。アラーム タイプを ELAPSED_REALTIME または RTC に設定します。これにより、デバイスが起動しているときにのみアラームが配信されます。次に updatePeriodMillis をゼロ ("0") に設定します。

アプリウィジェットガイドより)


ちなみに、HTC Heroで遊ぶ機会がありました。ヒーローをスリープ状態から目覚めさせると、アナログ時計ウィジェットの針が 12 から始まることに気付きました。その後、適切な時間になるように針を回転させます。これはおそらく、電話がスリープしている間は更新されないためです。

于 2009-12-21T20:15:14.203 に答える
3

これをチェックしてください。サービスで時計を実装し、スクリーン オフ イベントをサブスクライブして、バッテリーを節約するために画面がオフになっている間はサービスを一時停止します。

于 2010-06-05T10:14:45.890 に答える
2

目覚まし時計がポップアップする理由は、OnClick メソッドが実装されており、そこから目覚まし時計が起動されるためです。OnClick から任意のアクティビティを起動できます。多くの場合、ウィジェットはそれを使用して独自の構成ユーティリティを起動します。

于 2009-12-21T20:13:53.180 に答える