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

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

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

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

Q&A

解決済

1回答

3117閲覧

Androidのアラームアプリが上手く動かない

sun-solar-arrow

総合スコア113

Android

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

0グッド

0クリップ

投稿2016/04/10 13:17

Androidのアラームアプリが上手く動きません。
仕様は、
・TimePickerで時間をセット(12時間表示)
・EditTextでやることを書く
・セットというボタンを押すと時間になると通知される
です。
しかし、
セットというボタンを押すとすぐ通知されてしまいます。
ログはまた見れてません。
また、しばらく返信はすぐに出来ないと思います。

Java

1import android.content.*; 2import android.app.*; 3public class Alarm extends BroadcastReceiver 4{ 5 6 @Override 7 public void onReceive(Context context, Intent receive){ 8 int Notificationid=receive.getIntExtra("notification",0); 9 NotificationManager notification=(NotificationManager) context.getSystemService(Context.LOCATION_SERVICE); 10 Intent boot=new Intent(context,MainActivity.class); 11 12 PendingIntent contentintent=PendingIntent.getActivity(context,0,boot,0); 13 14 Notification.Builder builder=new Notification.Builder(context); 15 16 builder.setSmallIcon(android.R.drawable.ic_dialog_alert) 17 .setContentTitle("時間になりました") 18 .setContentText(receive.getCharSequenceExtra("TODO")) 19 .setWhen(System.currentTimeMillis()) 20 .setPriority(Notification.PRIORITY_DEFAULT) 21 .setAutoCancel(true) 22 .setDefaults(Notification.DEFAULT_SOUND) 23 .setContentIntent(contentintent); 24 notification.notify(Notificationid,builder.build()); 25 } 26}

java

1import android.app.*; 2import android.os.*; 3import android.widget.*; 4import android.view.View.*; 5import android.view.*; 6import android.view.inputmethod.*; 7import android.content.*; 8import java.util.*; 9public class MainActivity extends Activity implements OnClickListener{ 10 private RelativeLayout layout; 11 private InputMethodManager im; 12 private int notificationId=0; 13 @Override 14 public void onClick(View view){ 15 EditText edit=(EditText) findViewById(R.id.editText); 16 Intent bootintent=new Intent(this,Alarm.class); 17 bootintent.putExtra("notification",notificationId); 18 bootintent.putExtra("TODO",edit.getText()); 19 PendingIntent alarmintent=PendingIntent.getBroadcast(MainActivity.this,0,bootintent,PendingIntent.FLAG_CANCEL_CURRENT); 20 AlarmManager alarm=(AlarmManager) getSystemService(Context.ALARM_SERVICE); 21 TimePicker timepicker=(TimePicker) findViewById(R.id.timePicker); 22 23 switch(view.getId()){ 24 case R.id.set: 25 int hour=timepicker.getCurrentHour(); 26 int minute=timepicker.getCurrentMinute(); 27 28 Calendar start=Calendar.getInstance(); 29 start.set(Calendar.HOUR_OF_DAY,hour); 30 start.set(Calendar.MINUTE,minute); 31 start.set(Calendar.SECOND,0); 32 long alarmstart=start.getTimeInMillis(); 33 34 alarm.set(AlarmManager.RTC_WAKEUP,alarmstart,alarmintent); 35 36 Toast.makeText(MainActivity.this,"通知をセットしました",Toast.LENGTH_SHORT).show(); 37 notificationId++; 38 break; 39 case R.id.cancel: 40 alarm.cancel(alarmintent); 41 Toast.makeText(MainActivity.this,"通知をキャンセルしました",Toast.LENGTH_SHORT).show(); 42 break; 43 } 44 } 45 46 47 @Override 48 protected void onCreate(Bundle savedInstanceState) 49 { 50 super.onCreate(savedInstanceState); 51 setContentView(R.layout.main); 52 53 54 layout=(RelativeLayout) findViewById(R.id.mainLayout); 55 56 im=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 57 Button Click=(Button) findViewById(R.id.set); 58 Click.setOnClickListener(this); 59 60 Button cancel=(Button) findViewById(R.id.cancel); 61 cancel.setOnClickListener(this); 62 } 63 64 @Override 65 public boolean onTouchEvent(MotionEvent event) 66 { 67 im.hideSoftInputFromWindow(layout.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 68 layout.requestFocus(); 69 return false; 70 } 71}

どうか宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

下記の箇所でalarmstartの値を調べてください。現在時刻よりも前の時間をセットすると即時実行されます。
12時間表記と24時間表記の違いが怪しいです。

Java

1alarm.set(AlarmManager.RTC_WAKEUP,alarmstart,alarmintent);

投稿2016/04/10 14:14

yona

総合スコア18155

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

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

sun-solar-arrow

2016/04/11 10:55 編集

分かりました。試してみます。そう言えば参考にした本は24時間で表示していたような…そこもやってみます。
sun-solar-arrow

2016/04/11 12:32

直りました。いつもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問