2016-12-27 9 views
0

ユーザーがスイッチを使用しているときに、毎日午後12時にリマインダを設定したいとします。 isChecked()には、私はsetTextを「午後12時に思い出させる」としています。私はそこに警報やリマインダを設定したい。コードは以下の通りである:アンドロイドでスイッチをisChecked()するとリマインダーを設定するにはどうすればいいですか?

private RadioButton radioButtonPlayback, radioButtonTranslate; 
    private TextView switchStatus; 
    private Switch mySwitch; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 


     switchStatus = (TextView) findViewById(R.id.switchStatus); 
     mySwitch = (Switch) findViewById(R.id.mySwitch); 

     //set the switch to ON 
     mySwitch.setChecked(true); 
     //attach a listener to check for changes in state 
     mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

       if (isChecked) { 
        switchStatus.setText("Remind at: 12:00 PM"); 

       } else { 
        switchStatus.setText("No reminders set"); 
       } 

      } 
     }); 

     //check the current state before we display the screen 
     if (mySwitch.isChecked()) { 
      switchStatus.setText("Remind at: 12:00 PM"); 
     } else { 
      switchStatus.setText("No reminders set"); 
     } 
+0

あなたが直面している問題は何ですか? –

+0

あなたはリマインダを設定するコードを探していますか? –

+0

@ReadyAndroid私は問題に直面していません。ステータスがisChecked()であるときに通知を設定する方法を知りたいだけです。 –

答えて

0

はこれを試してみてください:

mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 

    { 

     @Override 
     public void onCheckedChanged (CompoundButton buttonView,boolean isChecked){ 
     if (isChecked) { 
      Intent myIntent = new Intent(MainActivity.this, AlarmReceiver AlarmReceiver.class); 
      pendingIntent = PendingIntent.getService(MainActivity.this, 0, myIntent, 0); 
      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

      Calendar calendar = Calendar.getInstance(); 
      calendar.setTimeInMillis(System.currentTimeMillis()); 
      calendar.set(Calendar.HOUR_OF_DAY, 12); 
      calendar.set(Calendar.MINUTE, 59); 
      calendar.set(Calendar.SECOND, 0); 
      alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
     } 
    } 
    } 

    ); 

AlarmReceiverClass:

public class AlarmReceiver extends WakefulBroadcastReceiver { 

    @Override 
    public void onReceive(final Context context, Intent intent) { 
     //this will update the UI with message 
     AlarmActivity inst = AlarmActivity.instance(); 
     inst.setAlarmText("Alarm! Wake up! Wake up!"); 

     //this will sound the alarm tone 
     //this will sound the alarm once, if you wish to 
     //raise alarm in loop continuously then use MediaPlayer and setLooping(true) 
     Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
     if (alarmUri == null) { 
      alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     } 
     Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri); 
     ringtone.play(); 

     //this will send a notification message 
     ComponentName comp = new ComponentName(context.getPackageName(), 
       AlarmService.class.getName()); 
     startWakefulService(context, (intent.setComponent(comp))); 
     setResultCode(Activity.RESULT_OK); 
    } 
} 

アラームサービスクラス:menifestで

public class AlarmService extends IntentService { 
    private NotificationManager alarmNotificationManager; 

    public AlarmService() { 
     super("AlarmService"); 
    } 

    @Override 
    public void onHandleIntent(Intent intent) { 
     sendNotification("Wake Up! Wake Up!"); 
    } 

    private void sendNotification(String msg) { 
     Log.d("AlarmService", "Preparing to send notification...: " + msg); 
     alarmNotificationManager = (NotificationManager) this 
       .getSystemService(Context.NOTIFICATION_SERVICE); 

     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
       new Intent(this, AlarmActivity.class), 0); 

     NotificationCompat.Builder alamNotificationBuilder = new NotificationCompat.Builder(
       this).setContentTitle("Alarm").setSmallIcon(R.drawable.ic_launcher) 
       .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) 
       .setContentText(msg); 


     alamNotificationBuilder.setContentIntent(contentIntent); 
     alarmNotificationManager.notify(1, alamNotificationBuilder.build()); 
     Log.d("AlarmService", "Notification sent."); 
    } 
} 

<service 
      android:name=".AlarmService" 
      android:enabled="true" /> 
     <receiver android:name=".AlarmReceiver" /> 
+0

マニフェストファイルに何かを追加する必要はありますか? –

+0

私はそうは思わない。コードを試しましたか?ログに権限エラーがありますか? – Nidhi

+0

はい私はコードを試しましたが、私は警告通知を受け取っていません。 MyAlarmService.classファイルに何を書き込む必要がありますか? –

関連する問題