📜  Android AlarmManager

📅  最后修改于: 2020-09-30 01:23:22             🧑  作者: Mango

Android AlarmManager

Android AlarmManager允许您访问系统警报。

借助android中的Android AlarmManager,您可以安排应用程序在将来的特定时间运行。无论您的手机是否正在运行,它都可以工作。

Android AlarmManager拥有一个CPU唤醒锁,可确保在处理广播之前不让手机进入睡眠状态。

Android AlarmManager示例

让我们看一个简单的AlarmManager示例,该示例在用户提供的特定时间后运行。

activity_main.xml

您只需要拖动一个编辑文本和一个按钮,如下所示。




    

活动课

当用户单击按钮时,活动类将启动警报服务。

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文件的完整代码。




    
        
            
                

                
            
        
        
        
    


输出: