我想在指定时间用我的歌曲触发闹钟,下面就是我所做的:
这是在java文件中:
公共类MainActivity扩展Activity实现View.OnClickListener
/** Called when the user clicks the Send button */
public void startMusic(View view) {
Integer hr = timepickerStart.getCurrentHour();
Integer min = timepickerStart.getCurrentMinute();
// Start service using AlarmManager
if(selectedFile != null && selectedFile.length() > 0)
{
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
final Intent intent = new Intent(this,MusicPlayActivity.class);
intent.putExtra(EXTRA_MESSAGE, selectedFile.getPath());
PendingIntent pendingIndent = PendingIntent.getBroadcast(this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
Calendar firingCal = Calendar.getInstance();
System.out.println("Before Present time in mili" + firingCal.getTimeInMillis());
firingCal.add(Calendar.HOUR, hr);
firingCal.add(Calendar.MINUTE, min);
firingCal.add(Calendar.SECOND, 0);
long intendedTime = firingCal.getTimeInMillis();
System.out.println("After setting Present time in mili" + firingCal.getTimeInMillis());
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, intendedTime, AlarmManager.INTERVAL_DAY, pendingIndent);
Toast.makeText(this, "Alarm set from today", Toast.LENGTH_LONG).show();
} else
{
Toast.makeText(this, "Please select music File", Toast.LENGTH_LONG).show();
}
}
现在在清单文件中
<activity android:name="com.example.test.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
问题在于它是按照自己的意愿开始的。
例如:
如果移动时间为9:30 AM 2/12/2013 (DD/MM/YYYY)
,我会在同一天选择10:00 AM
的触发时间。这根本不会在10:00 AM
触发,它会在3/12/2013
某个不同的时间触发10:00 AM
而不是{{1}}
我无法正确判断时间。
答案 0 :(得分:0)
首先,为什么使用包装类(Integer
)来存储小时和分钟只需使用int
变量
将值设置为日历而不是添加到日历
firingCal.set(Calendar.HOUR, hr);//better use Calander.HOUR_OF_DAY bcoz hour range is 0 to 11 HOUR_OF_DAY 0 23 bcoz of this also your alarm is triggering next day
firingCal.set(Calendar.MINUTE, min);
firingCal.set(Calendar.SECOND, 0);
答案 1 :(得分:0)
我做了一些简单的报警管理器演示,在我的情况下运行正常,尝试,如果它适合你,而不是在你的代码中实现相同
这是我的MainActivity
这是MyReceiver Class
这里是布局xml文件
在第76行的AlarmActivity中,此行mMediaPlayer.setVolume(0,0);
负责静音警报声,如果您不想将其静音而不是简单地注释该行。