質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Java

    13797questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6527questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    3703questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

【Android】指定時刻になったら処理を開始する

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 883

mendee

score 1

Android開発初心者です。
今設定した時刻の間だけGPSなどのデータを収集するようなアプリ開発に携わっています。
例えば朝5時にある処理を開始させて10時に終了させるといった
バッヂのような処理を実現することは可能でしょうか?

処理開始時刻と終了時刻はtimePicker起動してtextViewに値を設定しておいたものを使いたいため以下のように時刻取得をしています。

case R.id.startTime_button:
                final Calendar calendar = Calendar.getInstance();
                final int hour = calendar.get(Calendar.HOUR_OF_DAY);
                final int minute = calendar.get(Calendar.MINUTE);
                final TextView startTime = (TextView) findViewById(R.id.startTime);
                final TimePickerDialog timePickerDialog = new TimePickerDialog(this,
                    new TimePickerDialog.OnTimeSetListener() {
                        @Override
                        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                            startTime.setText(String.valueOf(hourOfDay) + ":" + String.valueOf(minute));
                        }
                    }, hour, minute, true);
                timePickerDialog.show();
                break;
            case R.id.stopTime_button:
                final Calendar calendar1 = Calendar.getInstance();
                final int hour1 = calendar1.get(Calendar.HOUR_OF_DAY);
                final int minute1 = calendar1.get(Calendar.MINUTE);
                final TextView stopTime = (TextView) findViewById(R.id.stopTime);
                final TimePickerDialog timePickerDialog1 = new TimePickerDialog(this,
                    new TimePickerDialog.OnTimeSetListener() {
                        @Override
                        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                            stopTime.setText(String.valueOf(hourOfDay) + ":" + String.valueOf(minute));
                        }
                    }, hour1, minute1, true);
                timePickerDialog1.show();
                break;

TimerやTimerTaskを使って一定時間後に処理を実施するようなことは出来そうですが、
似たような感じで「開始時刻」と「終了時刻」を予め設定して実行させる方法を教えていただきたいです。
もちろんスリップ状態に影響されないような方法です。

ちなみにAndroid Studioで開発しています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

処理はServiceに実装し、AlarmManagerでServiceを起動するといいですね。
終了に関しては中断でいいなら処理に中断処理を書くといいです、ただ、予定時刻までに終わらせるという意味なら処理時間を予測し終わらせるようにしてくださいとしかアドバイスできませんね。

また、AlarmManagerはバージョンアップによって大幅に修正が入っているので一年以内の情報を探してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/22 21:11

    了解しました。的確なアドバイスありがとうございます。
    ちなみに終了は中断でいいです。

    キャンセル

  • 2017/02/22 21:22

    中断ならループや処理単位で後続の処理を行わないようにする作りにしないといけないですね。
    これはTimer、TimerTaskでフラグを管理するようにすればいいですね。

    キャンセル

  • 2017/02/22 21:34

    なるほど。Timer,TimerTaskも出番があるのですね!
    ちなみにAlarmMnagerではなくHandlerが推奨されるようになったとの情報もありますが、この場合にはあまり適切ではないでしょうか?
    あと、研究用アプリでMainActivityに簡単なボタン二つ程設置しているような規模ですが、メイン処理はやはりServiceの方が良くて、MainActivityには書けないという理解でよろしいですか?
    すみません、色々聞いてしまいまして。。m(_ _)m

    キャンセル

  • 2017/02/22 22:05

    起動については精度の問題だと思いますよ。指定時間に寸分のズレも許さないならHandlerの方がいいとは思いますね。
    また、ActivityかServiceについては開始時刻から終了時刻までActivityが生き残ってる保証があるならServiceは不要ですね。

    キャンセル

  • 2017/02/22 22:14

    そういうことなんですね!ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    TableLayoutが崩れる columnの意味

    Calenderから月の初めの曜日を取得して、カレンダーの形にButtonを配置しようと思ったのですがうまく行きません。 今月のように月初めの曜日が日曜日の時は大丈夫なのですが、

  • 解決済

    指定日までのカウントダウン

    指定した日をダイアログボックスに入力し、ボタンを押下すると現在から指定までのカウントダウンを行うアプリを開発したいです。 インターネットの情報を参考に作成しようとしているので

  • 解決済

    画像と文字列を同時に送りたい(PHP->Android)

    前提・実現したいこと サーバ側PHPでDBからSELECTした画像及び文字列を、Android端末に渡したいと考えています。 画像単体の受け渡しには成功したのですが、同時に文字

  • 解決済

    ボタンを押してもテキストが表示されない

    前提・実現したいこと androidstudio 2.3 でアプリ開発の勉強を独学でやっています。 ボタンを押すとテキストが表示されるようにしたいです。 (じゃんけんゲームの

  • 解決済

    初めての人のためのRecyclerView実装サンプルコード探しています

    AndroidStudio2.3.1で、縦方向のリスト形式で画像(アイコン)とテキストが、表示されるようなアプリを 作ろうと考えていますが、実際に作る前にRecyclerView

  • 解決済

    [Android] 動的に生成したTextViewのmarginが機能しない

    [Android] 動的に生成したTextViewのmarginが機能しない 動的にTextViewを生成して、 drawble.xml の <shape> の装飾をかけたいと考え

  • 解決済

    ListViewでのCheckBoxにチェックが付かない

    前提・実現したいこと 現在ListViewで一覧を表示しているのですが、項目のLongClickからチェックボックスが表示され、複数選択出来るようなものを作りたいと思っています。

  • 解決済

    Android ダイアログ表示

    実現したいこと ・【TextView1】がクリックされた時にダイアログを表示 ・表示されたダイアログのボタンを押すと【TextView1】に文字を表示 試したこと 【TextV

同じタグがついた質問を見る

  • Java

    13797questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6527questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    3703questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。