Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中设置不同时间的多个报警_Android_Android Alarms - Fatal编程技术网

如何在android中设置不同时间的多个报警

如何在android中设置不同时间的多个报警,android,android-alarms,Android,Android Alarms,我正在做一个android应用程序,我需要在不同的时间设置多个警报。例如,我需要设置上午10点,下午2点,每天晚上9点。我想用这些时间设置重复警报,并在这个时间到达时响铃。这三个响铃应该每天发生。下面是我尝试过的示例代码。但它没有响铃。我如何解决这个问题?谢谢 我的代码: 请参见本教程。。和@rashi在你的例子中,警报设置为每5秒一次。但我需要特别设置@不同的计时。请参考我上面的代码 // For setting up hours as arrays h[0

我正在做一个android应用程序,我需要在不同的时间设置多个警报。例如,我需要设置上午10点,下午2点,每天晚上9点。我想用这些时间设置重复警报,并在这个时间到达时响铃。这三个响铃应该每天发生。下面是我尝试过的示例代码。但它没有响铃。我如何解决这个问题?谢谢

我的代码:

请参见本教程。。和@rashi在你的例子中,警报设置为每5秒一次。但我需要特别设置@不同的计时。请参考我上面的代码
            // For setting up hours as arrays

    h[0] = 10;
    h[1] = 14;
    h[2] = 21;

    Calendar cal[] = new Calendar[3];

    for (int i = 0; i < 3; i++) {
        cal[i] = Calendar.getInstance();
        cal[i].set(Calendar.HOUR_OF_DAY, h[i]);
        cal[i].set(Calendar.MINUTE, i);
        cal[i].set(Calendar.SECOND, i);
    }

    AlarmManager[] alarmManager = new AlarmManager[3];
    ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();
    for (int f = 0; f < cal.length; f++) {
        Intent intent = new Intent(AlarmMainActivity.this,
                AlarmReceiverActivity.class);
        PendingIntent pi = PendingIntent.getBroadcast(
                AlarmMainActivity.this, f, intent, 0);

        alarmManager[f] = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager[f].set(AlarmManager.RTC_WAKEUP,
                cal[f].getTimeInMillis(), pi);

        intentArray.add(pi);

    }
    Button stopAlarm = (Button) findViewById(R.id.stopAlarm);
    stopAlarm.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View arg0, MotionEvent arg1) {
            mMediaPlayer.stop();
            finish();
            return false;
        }
    });

    playSound(this, getAlarmUri());
}

private void playSound(Context context, Uri alert) {
    mMediaPlayer = new MediaPlayer();
    try {
        mMediaPlayer.setDataSource(context, alert);
        final AudioManager audioManager = (AudioManager) context
                .getSystemService(Context.AUDIO_SERVICE);
        if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
            mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
            mMediaPlayer.prepare();
            mMediaPlayer.start();
        }
    } catch (IOException e) {
        System.out.println("OOPS");
    }
}

// Get an alarm sound. Try for an alarm. If none set, try notification,
// Otherwise, ringtone.
private Uri getAlarmUri() {
    Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
    if (alert == null) {
        alert = RingtoneManager
                .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        if (alert == null) {
            alert = RingtoneManager
                    .getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        }
    }
    return alert;
}