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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Android

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

Android Studio

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

Q&A

解決済

1回答

1687閲覧

Notificationで通知をさせたいです。

bake

総合スコア13

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2019/07/01 15:53

編集2019/07/01 15:57

//タイマー終了後のところでNotificationを用いて、タイマー終了後にステータスバーに表示させたいのですができません。
よろしくお願いします。(OnFinishのところでtoastやsettextはタイマー終了後に反映されてます。)

java

1public class TimerActivity extends AppCompatActivity { 2 3 private TextView timerText; 4 private EditText edit; 5 private AlarmManager aManager; 6 private Calendar calendar; 7 private SharedPreferences data; 8 9 long countNumber = 5000; 10 11 // インターバル msec 12 long interval = 100; 13 14 // 表示形式を設定 15 private SimpleDateFormat dataFormat = new SimpleDateFormat("mm:ss.SSS"); 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.my_fragment); 21 22 edit= (EditText)findViewById(R.id.timesec); 23 aManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 24 25 data = PreferenceManager.getDefaultSharedPreferences(this); 26 27 // レイアウトと関連 28 Button startButton = findViewById(R.id.start_button); 29 Button stopButton = findViewById(R.id.stop_button); 30 Button resetButton = findViewById(R.id.reset_button); 31 Button setButton = findViewById(R.id.set_button); 32 Button button1 = (Button) findViewById(R.id.main_button); 33 34 //テキストに初期時間の設定msec 35 timerText = findViewById(R.id.timer); 36 timerText.setText(dataFormat.format(5000)); 37 38 // インスタンス生成 39 // CountDownTimer(long millisInFuture, long countDownInterval) 40 final CountDown countDown = new CountDown(countNumber, interval); 41 42 //タイマー開始 43 startButton.setOnClickListener(new View.OnClickListener() { 44 @Override 45 public void onClick(View v) { 46 // 開始 47 countDown.start(); 48 } 49 }); 50 51 //タイマー中止 52 stopButton.setOnClickListener(new View.OnClickListener(){ 53 54 @Override 55 public void onClick(View v) { 56 // 中止 57 countDown.cancel(); 58 } 59 }); 60 61 //タイマーリセット 62 resetButton.setOnClickListener(new View.OnClickListener(){ 63 @Override 64 public void onClick(View v) { 65 // リセット 66 timerText.setText(dataFormat.format(180000)); 67 } 68 }); 69 70 setButton.setOnClickListener(new View.OnClickListener() { 71 72 73 @Override 74 public void onClick(View v) { 75 //時間をセットする。 76// String timesec = edit.getText().toString(); 77// timerText.setText(timesec); 78// long timesec1 = Long.valueOf(timesec); 79// 80// countNumber = timesec1; 81 82// SharedPreferences data = getSharedPreferences("save", Context.MODE_PRIVATE); 83// SharedPreferences.Editor editor = data.edit(); 84// editor.putLong( "save", timesec1 ); 85// editor.commit(); 86 87 } 88 }); 89 } 90 91 class CountDown extends CountDownTimer { 92 93 CountDown(long millisInFuture, long countDownInterval) { 94 super(millisInFuture, countDownInterval); 95 } 96 //タイマー終了後 97 @Override 98 public void onFinish() { 99 100 // 完了 101 Toast.makeText(TimerActivity.this,"タイマーが終了しました。",Toast.LENGTH_LONG).show(); 102 103 //ステータスバーに通知:表示されない 104 Intent intent = new Intent(TimerActivity.this, AlarmNotificationActivity.class); 105 PendingIntent pendingIntent = PendingIntent.getActivity(TimerActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 106 107 NotificationCompat.Builder builder = new NotificationCompat.Builder(TimerActivity.this); 108 Notification notification = builder 109 110 // 通知のタイトル 111 .setContentTitle("タイマー終了!") 112 // この通知が未だ表示されていない時だけ、音やバイブレーション、ショートメッセージの表示を行う 113 .setOnlyAlertOnce(false) 114 // タップしたら消えるようにする 115 // 通知の詳細メッセージ 116 .setContentText("00:00.000") 117 // 通知のアイコン 118 .setSmallIcon(R.drawable.ic_launcher) 119 // 通知を表示した瞬間、通知バーに表示するショートメッセージ 120 .setTicker("通知だヨ!") 121 // 通知をタップした時に使う PendingIntent 122 .setContentIntent(pendingIntent) 123 .setAutoCancel(true) 124 .build(); 125 NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 126 127 manager.notify(0, notification); 128 129 timerText.setText(dataFormat.format(0)); 130 } 131 132 // インターバルで呼ばれる 133 @Override 134 public void onTick(long millisInFuture) { 135 timerText.setText(dataFormat.format(millisInFuture)); 136 137 } 138 } 139} 140 141 142public class AlarmNotificationActivity extends AppCompatActivity { 143 144 145 @Override 146 protected void onCreate(Bundle savedInstanceState) { 147 super.onCreate(savedInstanceState); 148 149 Notification notification = new Notification(); 150 NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 151 manager.notify(0, notification); 152 } 153} 154 155

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/07/01 22:36 編集

できないとのことですが、現状のコードではどう言う動作になりますか?
bake

2019/07/02 04:14

エラーは表示されないのですが、notificationのコードは反映されておらず、何も動作しません。
guest

回答1

0

ベストアンサー

通知を表示させようとしているAndroidのOSは何でしょうか?
もし、Android 8.0 Oreo以上であるならば通知の仕方が変わっており
通知チャンネルを使用する必要があります。
以下、通知チャンネルを使用したNotificaitonの作成方法のサンプルです。

OreoでNotificationを表示させる方法

Android 8.0 Oreo 通知対応チェックリスト

投稿2019/07/02 11:38

razuma

総合スコア1313

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bake

2019/07/02 12:31

回答ありがとうございます! 実機ではなくエミュレータを使っていまして.osは8以上だったのですが 以前、チャンネルを使わずにoncreate下でnotificationの部分だけを実装して通知ができた事を確認できています。
razuma

2019/07/02 13:10

一応、手元の環境だとエミュレータでonCreateに書いてもoreoの場合は通知が表示されませんでした。 NotificationChannelだとエミュレータでも表示されたのでそちらをお試しください。 また、oreoでNotificationChannelを使わずに通知ができたコードを書いていただければそちらを調べてみようと思います。 ヘッドアップ通知されないなどはpriorityが関係している場合もありますが、今回のケースとは少し違うかなと思います。一応、ご参考までに。 https://qiita.com/mstssk/items/c448fa79fb8618cc0bc
bake

2019/07/02 15:40

ご丁寧に本当にありがとうございます!channelでやってみます。コードの方明日送らせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問