android - 使用 BroadcastReceiver 制作闹钟
问题描述
我想在android中制作一个闹钟,我用BroadcastReceiver写这个但是我有一些问题......我想在指定的时间开始闹钟,例如我想在每3:50开始闹钟......但是当我正在运行应用程序警报也开始......
下面是我的代码:
任何人都可以帮助我:
有我的广播接收器:
public class MyBroadcastReceiver extends BroadcastReceiver {
public static MediaPlayer mediaPlayer;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.tester.alarmmanager")) {
Toast.makeText(context, "Its time!!!", Toast.LENGTH_SHORT).show();
mediaPlayer = MediaPlayer.create(context, R.raw.entezar);
mediaPlayer.start();
}
}
}
在 MainActivity 中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StartAlarm(03,50);
}
public void StartAlarm(int hour, int min){
Intent intent = new Intent(this, MyBroadcastReceiver.class);
intent.setAction("com.tester.alarmmanager");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(),23433,intent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
Log.v("time picker",calendar.getTime()+"");
calendar.set(Calendar.HOUR_OF_DAY,hour);
calendar.set(Calendar.MINUTE,min);
calendar.set(Calendar.SECOND,00);
if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT){
alarmManager.setExact(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
Toast.makeText(MainActivity.this, "Alarm>kitkat", Toast.LENGTH_SHORT).show();
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT){
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
Toast.makeText(MainActivity.this, "Alarm<kitkat", Toast.LENGTH_SHORT).show();
}
}
在清单中:
<receiver android:name=".Utility.MyBroadcastReceiver">
<intent-filter>
<action android:name="com.tester.alarmmanager"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
解决方案
之后添加calendar.getInstance()
calendar.setTimeInMillis(System.currentTimeMillis())
推荐阅读
- python - 带有 Python Pyramid 应用程序的 Docker 和 WSGI?
- angular - Angular 单元测试注入参数
- c# - 如何正确绑定套接字 C#
- tomcat - Tomcat中NIO和BIO的根本区别是什么?
- pine-script - 是否可以在 pine 脚本中创建一条扁平的短线?
- regex - 如何纠正正则表达式中的不平衡括号错误?
- vb.net - 我的控制台应用程序在启动后关闭,但如果我以正常方式启动,它可以正常工作
- c# - 使用 LINQ to Objects 过滤和返回布尔值的这两个语句之间是否有“正确”的方式?
- java - 在 try-with-resources 中关闭动态数量的 AutoCloseable 对象
- mips - 不明白这个lw在做什么