Androidで外部のタイマーアプリを起動するコード例【ACTION_SET_TIMER】

Androidアプリから、指定時間後にタイマーとか設定したい場合・・・

やり方は大きく分けて2つあります。

  • 全て自前で実装する
  • 外部アプリを起動する

1つめの方法もアリだけど、すごく手間と時間がかかって非現実です。
(あと自前で実装するとバグとか不具合の温床にもなりやすい)

そこでアプリから外部のタイマーを呼び出す方法を紹介!

やっぱり自分で実装するより、他アプリの力を借りる方が楽です。

外部タイマーアプリを呼び出す基本手順

その手順とコード例は次の通り

1.まずパーミッションを追加

AndroidManifest.xml を開き、以下のパーミッション を追加

これがないと外部タイマーアプリを起動できません。

なので追加するのを忘れずに

2.タイマー起動用のIntentを発行

そうしたら指定時間後にタイマーを起動させるコードを書きます。

ポイントは ACTION_SET_TIME を指定すること

これを Intent#setAction  に指定することで、タイマーアプリが存在していれば、指定秒とか指定分後に自動でアラーム起動とかができます。

 

ここでは10秒後にタイマーアプリを起動する処理を書いてみました。

▼ こんな感じのコードを書けばOK( Activity#onCreate内 )

ここで大事なポイントは次の3つ

  • EXTRA_MESSAGE
    タイマーアプリ側で表示したいテキスト。これを設定しておかないと、ユーザーが「え?なんでタイマー鳴ってんの? (#^.^#) 」と混乱してしまう。
  • EXTRA_LENGTH
    タイマーが時間切れになるまでの時間。単位は "" でこれ以外の単位は使えない
  • EXTRA_SKIP_UI
    もしこの値が true ならタイマーのUIを非表示、もし false ならタイマーアプリが即起動する。基本的には true に設定しておくのがいいかも

ちなみに  ACTION_SET_TIMER  に渡せるパラメーターはこの3つだけです。

あとタイマーの時間設定は 秒数指定のみ ってことも気を付けないとダメですね。

 

これで指定秒数が経過したあとにアラームが起動するはず

▼ 自分のAndroid端末だとこんなアプリが起動した

アプリから10秒後に起動した外部のタイマーアプリ

普通にアラームが起動するのではなく、上画像のように「タイマー終了だよ」みたいなメッセージまで表示できるので気が利いてます。

ただし!特殊な端末によってはタイマーアプリがない場合もあります。

なので外部アプリが存在しない場合の処理も忘れずに・・・( ActivityNotFoundException の例外処理)

タイマー設定完了後に結果を受け取るには・・・

ただし、今紹介した方法だとタイマー設定したらActivity側では検知不可能

アプリ側で設定結果を受け取ることができません。

なので、ついでに Activity側でタイマー設定の結果を受け取る方法 も紹介します。

その手順とかコード例は次の通り

 

1.まずActiivty内で適当な リクエストコード を定数宣言

2.タイマーIntent を startActivityFroResult  から起動

3.結果を onActivityResult  で受け取る

ここに書くべき処理としては「タイマーを設定しました」みたいなトーストを表示したり、アプリ設定を保存したいとかですね。

タイマーが起動したことを感知したいなら、上の手順でできます。

タイマー呼び出しの手順まとめ

ということで、簡単に手順まとめ

  1. パーミッション追加
  2. タイマー起動用の Intent を発行
  3. 必要なら結果を受け取る

以上、アプリから外部タイマーを起動する方法でした。ではでは(^_^)/~