全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

android 设置闹钟及通知示例

简单说一下这次demo内容,首先做一个设置一次性闹钟,先得到alarmManager,打开一个时间对话框,在里面设置闹钟的时间,时间一到发送广播,然后广播接受者接到跳转到新的activity播放音乐。接着是一个反复闹钟,最后是一个简单的通知,具体代码如下:

import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.NotificationCompat;
import android.view.View;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

  private AlarmManager alarmManager;
  private PendingIntent pendingIntent;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //获取闹钟管理者
    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
  }

  public void setAlarm(View view){

    //获取当前系统的时间
    Calendar calendar=Calendar.getInstance();
    int hour=calendar.get(Calendar.HOUR_OF_DAY);
    int minute=calendar.get(Calendar.MINUTE);


    //弹出时间对话框
    TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
      @Override
      public void onTimeSet(TimePicker timePicker, int i, int i1) {
        Calendar c=Calendar.getInstance();
        c.set(Calendar.HOUR_OF_DAY,i);
        c.set(Calendar.MINUTE,i1);


        Intent intent=new Intent();
        intent.setAction("com.zking.g150820_android28_alarm_notification.RING");

        //将来时态的跳转 ang eng ing ong
        PendingIntent pendingIntent=PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0);

        //设置闹钟
        alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent);

        //时间一到,发送广播(闹钟响了)
        //广播接受者中(跳转Activity)
        // 跳转Activity,在这个Activity中播放音乐
      }
    },hour,minute,true);

    timePickerDialog.show();
  }

  public void setAlarmCycle(View view){

    //获取当前系统的时间
    Calendar calendar=Calendar.getInstance();
    int hour=calendar.get(Calendar.HOUR_OF_DAY);
    int minute=calendar.get(Calendar.MINUTE);


    //弹出时间对话框
    TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
      @Override
      public void onTimeSet(TimePicker timePicker, int i, int i1) {
        Calendar c=Calendar.getInstance();
        c.set(Calendar.HOUR_OF_DAY,i);
        c.set(Calendar.MINUTE,i1);


        Intent intent=new Intent();
        intent.setAction("com.zking.g150820_android28_alarm_notification.RING");

        //将来时态的跳转 ang eng ing ong
        pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0);

        //设置闹钟
//        alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent);

        //设置周期闹钟
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),5000, pendingIntent);

        //时间一到,发送广播(闹钟响了)
        //广播接受者中(跳转Activity)
        // 跳转Activity,在这个Activity中播放音乐

      }
    },hour,minute,true);

    timePickerDialog.show();
  }


  public void cancelCycle(View view){
    alarmManager.cancel(pendingIntent);
  }

  public void sendNotification(View view){
    //实例化通知管理器
    NotificationManager notificationManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    //实例化通知
    NotificationCompat.Builder builder=new NotificationCompat.Builder(this);

    builder.setContentTitle("今日大事件");
    builder.setContentText("骑士击败勇士夺冠");
    builder.setDefaults(NotificationCompat.DEFAULT_ALL);

    builder.setAutoCancel(true);

    builder.setSmallIcon(android.R.drawable.ic_media_play);

    builder.setContentIntent(PendingIntent.getActivity(this,0x102,new Intent(this,RingActivity.class),0));

    Notification notification=builder.build();

    //发送通知
    notificationManager.notify(0x101,notification);

  }

}

布局文件(xml):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
  android:layout_width="match_parent" android:layout_height="match_parent"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  android:orientation="vertical"
  tools:context="ghq.zking.com.ghq_android_28.MainActivity">

  <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="设置闹钟(一次)"
    android:onClick="setAlarm"
    />
  <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="设置闹钟(周期)"
    android:onClick="setAlarmCycle"
    />

  <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="取消周期"
    android:onClick="cancelCycle"
    />

  <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"

    android:text="发送通知"
    android:onClick="sendNotification"
    />


</LinearLayout>

广播接受者代码:

public class RingReceived extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    if ("ghq.zking.com.ghq_android_28_alarm_notification.RING".equals(intent.getAction())){
      //跳转到Activity
      Intent intent1=new Intent(context,RingActivity.class);
      //给Intent设置标志位
      intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      context.startActivity(intent1);
    }
  }
}

闹钟播放activity代码:

public class RingActivity extends AppCompatActivity {

  private MediaPlayer mediaPlayer;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ring);
    mediaPlayer = MediaPlayer.create(this, R.raw.love);
    mediaPlayer.start();
  }

  public void stop(View view){
    mediaPlayer.stop();
    finish();
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android  # 设置闹钟  # 闹钟  # 设置通知铃声  # Android通过AlarmManager类实现简单闹钟功能  # Android实现简易闹钟功能  # 简单实现Android闹钟程序 附源码  # Android编程实现闹钟的方法详解  # Android闹钟设置的解决方案  # Android手机闹钟用法实例  # Android编程闹钟设置方法详解  # Android编程实现PendingIntent控制多个闹钟的方法  # Android闹钟启动时间设置无效问题的解决方法  # Android实现闹钟小程序  # 跳转  # 一到  # 是一个  # 对话框  # 在这个  # 弹出  # 响了  # 将来  # 做一个  # 在里面  # 管理器  # 到新  # 大家多多  # 跳转到  # 大事件  # 今日  # activity_main  # layout  # getSystemService  # calendar 


相关文章: C#怎么创建控制台应用 C# Console App项目创建方法  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  如何选择高效稳定的ISP建站解决方案?  如何快速搭建高效简练网站?  如何在Golang中指定模块版本_使用go.mod控制版本号  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何在阿里云服务器自主搭建网站?  红河网站制作公司,红河事业单位身份证如何上传?  如何设置并定期更换建站之星安全管理员密码?  制作门户网站的参考文献在哪,小说网站怎么建立?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  建站之星与建站宝盒如何选择最佳方案?  清除minerd进程的简单方法  宝塔建站教程:一键部署配置流程与SEO优化实战指南  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  安云自助建站系统如何快速提升SEO排名?  如何基于云服务器快速搭建个人网站?  定制建站如何定义?其核心优势是什么?  个人摄影网站制作流程,摄影爱好者都去什么网站?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  建站之星伪静态规则如何设置?  建站之星好吗?新手能否轻松上手建站?  如何快速完成中国万网建站详细流程?  如何快速启动建站代理加盟业务?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  jQuery 常见小例汇总  如何高效搭建专业期货交易平台网站?  如何高效配置香港服务器实现快速建站?  ,想在网上投简历,哪几个网站比较好?  大型企业网站制作流程,做网站需要注册公司吗?  外贸公司网站制作哪家好,maersk船公司官网?  北京企业网站设计制作公司,北京铁路集团官方网站?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  c# await 一个已经完成的Task会发生什么  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  平台云上自主建站:模板化设计与智能工具打造高效网站  浅谈Javascript中的Label语句  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  建站之星客服服务时间及联系方式如何?  家庭服务器如何搭建个人网站?  浅析上传头像示例及其注意事项  个人网站制作流程图片大全,个人网站如何注销?  山东云建站价格为何差异显著?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。