📅  最后修改于: 2020-09-30 01:23:22             🧑  作者: Mango
Android AlarmManager允许您访问系统警报。
借助android中的Android AlarmManager,您可以安排应用程序在将来的特定时间运行。无论您的手机是否正在运行,它都可以工作。
Android AlarmManager拥有一个CPU唤醒锁,可确保在处理广播之前不让手机进入睡眠状态。
让我们看一个简单的AlarmManager示例,该示例在用户提供的特定时间后运行。
您只需要拖动一个编辑文本和一个按钮,如下所示。
当用户单击按钮时,活动类将启动警报服务。
package example.javatpoint.com.alarmmanager;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start= findViewById(R.id.button);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startAlert();
}
});
}
public void startAlert(){
EditText text = findViewById(R.id.time);
int i = Integer.parseInt(text.getText().toString());
Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (i * 1000), pendingIntent);
Toast.makeText(this, "Alarm set in " + i + " seconds",Toast.LENGTH_LONG).show();
}
}
让我们创建启动警报的BroadcastReceiver类。
package example.javatpoint.com.alarmmanager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.widget.Toast;
public class MyBroadcastReceiver extends BroadcastReceiver {
MediaPlayer mp;
@Override
public void onReceive(Context context, Intent intent) {
mp=MediaPlayer.create(context, R.raw.alarm);
mp.start();
Toast.makeText(context, "Alarm....", Toast.LENGTH_LONG).show();
}
}
您需要在AndroidManifest.xml文件中提供一个接收器条目。
让我们看看AndroidManifest.xml文件的完整代码。