文章目录

    • 1.定时闹钟
        • 单次闹钟
        • 重复闹钟
    • 2.定时情景模式切换

1.定时闹钟

单次闹钟

单次闹钟只要响音button,设置sender跳转至OnShotAlarm广播,通过alarmmanager.set设置单次单次闹钟,响应sender。

private View.OnClickListener mOneShortLisener = new View.OnClickListener() {        @Override        public void onClick(View v) {            start_Music = 0;            Intent intent = new Intent(main.this, OneShotAlarm.class);            PendingIntent sender = PendingIntent.getBroadcast(main.this, 0, intent, 0);            Calendar calendar = Calendar.getInstance();            calendar.setTimeInMillis(System.currentTimeMillis());            calendar.add(Calendar.SECOND, 5);            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);        }    };

重复闹钟

设置重复闹钟的操作和单次闹钟差别不大,只是要设置重复的间隔,再利用alarmmanager.setRepeating响音重复的广播跳转。

 private View.OnClickListener mStartReaptingLisener = new View.OnClickListener() {        @Override        public void onClick(View v) {            start_Music=0;            Intent intent = new Intent(main.this, RepeatingAlarm.class);            PendingIntent sender = PendingIntent.getBroadcast(main.this, 0, intent, 0);            long firstTime = SystemClock.elapsedRealtime();            firstTime += 1000;            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);            alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 1000, sender);        }    };

取消重复闹钟,只要利用alarmmanager.cancel即可。

private View.OnClickListener mStopReaptingLisener = new View.OnClickListener() {        @Override        public void onClick(View v) {            Intent intent = new Intent(main.this, RepeatingAlarm.class);            PendingIntent sender = PendingIntent.getBroadcast(main.this, 0, intent, 0);            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);            alarmManager.cancel(sender);        }    };

2.定时情景模式切换

(作为一只Android小白,我感觉我的做法好水)

用EditText获取用户所要循环的周期(没有用TimePicker,感觉很不人性话,以后会改进的),然后用RadioGroup设置单选,最后在主活动中获取,定时还是借助强大的AlarmManager,然后作为小白的我竟然忽略了一个严重的问题,BroadcastReceiver类不是View类,不能直接对RadioGroup操作于是。。。。:

在主活动中获取RadioGroup,然后通过Intent传值处理。

//读取RadioGroupRadioGroup radioGroup = findViewById(R.id.radiogroup);            if(Contrasl_Visal==0)            ((RadioButton)radioGroup.getChildAt(0)).setChecked(true);            Contrasl_Visal=+1;            int changeId = 0;            int m=0;            for(int i=0;i<radioGroup.getChildCount();i++)            {                RadioButton radioButton= (RadioButton) radioGroup.getChildAt(i);                if(radioButton.isChecked())                {                    changeId=m;                    break;                }                m=m+1;            }            Intent intent= new Intent(main.this,AlarmReceiver.class);            intent.putExtra("changId",changeId);
//通过传值分析用户所选的情景模式,然后直接用AudioManager改变情景模式。 public void onReceive(Context context, Intent intent) {        int changeId=0;        Intent intent1= new Intent();        intent1.putExtra("changId",changeId);        switch (changeId)        {            case RINGER_MODE_NORMAL1:            {                AudioManager audioManager= (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);                audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);                audioManager.setStreamVolume(AudioManager.RINGER_MODE_NORMAL,50,0);            }break;            case RINGER_MODE_VIBRATE1:            {                AudioManager audioManager= (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);                audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);            }break;            case RINGER_MODE_SILENT1:            {                AudioManager audioManager= (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);                audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);            }break;        }    }

注意: 在这中间遇到了很多空指针问题。
RadioGroup radioGroup = findViewById(R.id.radiogroup);
最后发现是我把他写在了最前面,在RadioGroup没有输入的时候就给读取了,当然是空的了,只得给他初始化,默认第一个RadioButton选中。((RadioButton)radioGroup.getChildAt(0)).setChecked(true);

虽然是一个非常简单的项目,然而没有熟练运用debug的我还是费了点功夫,从中更是学到了许多学习基本知识无法得到的经验,明白了做项目才能锻炼出能力,我会多加练习。小白进阶中。。。

更多相关文章

  1. FrameLayout的android:layout_height属性设置为dimen文件中的参
  2. TextView设置autoLink
  3. android studio 翻译插件,可以将英文翻译为中文
  4. 学习Android(安卓)Studio开发工具之Activity3(框架3)
  5. Android(安卓)build system 分析之 envsetup.sh
  6. Android配置文件,所有权限
  7. SwipeRecyclerview使用中一些常见错误处理方法【持续更新中】
  8. android studio 2.3 NDK
  9. Eclipse快捷键设置(转载)

随机推荐

  1. android编程开发入门实战例子–hello wor
  2. 常用的 Android(安卓)Studio 快捷键
  3. 在Android中修改快捷方式的图标
  4. android如何查找安装的apk app的包名和Ac
  5. 【WEB服务器】i-jetty环境搭配与编译 .
  6. Android(安卓)Studio 使用说明(一)
  7. Android获取CPU信息(CPU名字和主频)
  8. 设备驱动-----Android关机流程总结
  9. Android(安卓)Window与WMS通信过程
  10. [WebView学习之一]:Web Apps简介