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

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

ただいまの
回答率

90.00%

AndroidでNofticationが動かない。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,103

vsmorse

score 54

Android Studioを使っていて、分からないことがあったので質問していただきます。
理想の流れは以下のような感じです。

1.サービスが起動する{ここはすでに完成済み。}
2.1秒」ごとにNofticationが更新されていく。
3.サービスが停止する{ここはすでに完成済み。}


なんですが、2.「1秒」ごとにNofticationが更新されていく。(つまりサービスの中身)ができない状態です。
サービスは以下の内容です。

package battery.vsmorse.com.myapp01;


import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.IBinder;

import android.support.v7.app.NotificationCompat;
import java.util.Timer;
import java.util.TimerTask;

public class TestService extends Service {
    private Timer timer = null;
    private int count = 0;

        @Override
        public void onCreate() {
            super.onCreate();
        }

        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {

       NotificationCompat.Builder builder = new NotificationCompat.Builder(
               getApplicationContext());

            // LargeIcon の Bitmap を生成
            Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.coda);

            // NotificationBuilderを作成

            // ステータスバーに表示されるテキスト
            Intent notificationIntent = new Intent(this, MainActivity.class);

            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

            // アイコン
            builder.setSmallIcon(R.drawable.coks);
            // Notificationを開いたときに表示されるタイトル
            builder.setContentTitle("TestApp");

            builder.setContentIntent(contentIntent);
            // Notificationを開いたときに表示されるアイコン
            builder.setLargeIcon(largeIcon);
            // 通知するタイミング
            builder.setWhen(System.currentTimeMillis());
            // 通知時の音・バイブ・ライト
            builder.setDefaults (Notification.DEFAULT_VIBRATE
                    | Notification.DEFAULT_LIGHTS);
            // タップするとキャンセル(消える)
            builder.setAutoCancel(false);

            timer = new Timer();
            timer.schedule( new TimerTask(){
                @Override
                public void run(){
  // Notificationを開いたときに表示されるサブタイトル
           builder.setContentText(count);
//  NotificationManagerを取得
            NotificationManager manager = (NotificationManager) getSystemService(Service.NOTIFICATION_SERVICE);
            // Notificationを作成して通知
            int NOTIFICATION_CLICK = 001;
            startForeground(NOTIFICATION_CLICK, builder.build());
                    count++;
               }
            }, 0, 1000);

            return super.onStartCommand(intent, flags, startId);
        }

        @Override
        public void onDestroy() {
            super.onDestroy();// timer cancel
            if( timer != null ){
                timer.cancel();
                timer = null;
            }
        }

        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    }


コンパイルは通りますが、
これを実行すると、実機で

myapp01は予期しない動作をしたので終了します。
logcat---
10-01 19:21:37.187 7216-7226/battery.vsmorse.com.myapp01; W/art: Suspending all threads took: 5.196ms


という画面が出て、強制終了させられてしまいます。
AndroidStudio2、
Android5.1を使っています。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正の依頼

  • yona

    2016/10/01 21:38

    実行時エラーのログを載せてください
    ログキャットを知らないんですか?

    キャンセル

  • vsmorse

    2016/10/02 06:18

    何度もありがとうございます。
    10-01 19:21:37.187 7216-7226/battery.vsmorse.com.myapp01; W/art: Suspending all threads took: 5.196ms

    キャンセル

  • yona

    2016/10/02 12:01

    そんなに短いわけありません。
    アプリ起動から終了までのログを省略せずに全て追記してください。

    キャンセル

まだ回答がついていません

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

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