定时静音助手的实现方法,供大家参考,具体内容如下

背景

突发奇想,刚好这学期刚上安卓课程,想设计一个时间助手。工作、学习中经常会被突如其来的电话所打扰,在上班,上课时这突如其来的铃声会惹来别人的反感,而只靠人们的记性是很难在准确的时间记得静音。如果一直静音,那么在休息时间又有可能漏接重要的电话。基于这种考虑,设计了这样一自动静音小助手,来帮助人们在忙碌的生活中定时静音,定时开启正常模式,简单方便。

界面设计

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/btnAddAlarm1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="添加静音开始时间" />

android:id="@+id/tvAlarmRecord1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="16dp" />

android:id="@+id/btnAddAlarm2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="添加静音停止时间" />

android:id="@+id/tvAlarmRecord2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="16dp" /

点击完按钮的会出现一个时间点设置的对话框 代码如下

android:orientation="vertical" android:layout_width="fill_parent"

android:layout_height="fill_parent">

android:layout_width="fill_parent" android:layout_height="wrap_content" />

效果图

功能设计

原理介绍

先简单介绍一下工作原理。在添加时间点之后,需要将所添加的时间点保存在文件或者数据库中,我使用了SharedPrefences来保存时间点,key和value都是时间点,然后用到AlarmManager每隔一分钟扫描一次,在扫描过程中从文件获取当前时间(时:分)的value,如果成功获得value就说明当前时间为时间点,此时调用audioManager ,当扫描掉button1设置的文件信息,就调用AudioManager.RINGER_MODE_SILENT,如果扫描到button2设置的文件信息,就调用AudioManager.RINGER_MODE_NORMAL,时期出去正常模式。

此程序包含两个java文件,分别是MainActivity.java和TimeReceiver.java,TimeReceiver主要是判断是否到达时间点,MainActivity 主要是整体的框架和逻辑。

MainActivity代码如下:

package com.example.timesilent;

import android.os.Bundle;

import android.app.Activity;

import android.app.AlarmManager;

import android.app.PendingIntent;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

import android.widget.TimePicker;

import android.app.AlertDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.SharedPreferences;

public class MainActivity extends Activity implements OnClickListener

{

private SharedPreferences sharedPreferences1;

private SharedPreferences sharedPreferences2;

private TextView tvAlarmRecord1;

private TextView tvAlarmRecord2;

@Override

public void onClick(View v) {

View view =getLayoutInflater().inflate(R.layout.time,null);

final TimePicker timePicker1=(TimePicker)view.findViewById(R.id.timepicker1);

timePicker1.setIs24HourView(true);

switch(v.getId())

{

case R.id.btnAddAlarm1:

{

new AlertDialog.Builder(this).setTitle("设置静音开始时间").setView(view).setPositiveButton("确定",new DialogInterface.OnClickListener(){

@Override

public void onClick(DialogInterface dialog,int which)

{

String timeStr=String.valueOf(timePicker1.getCurrentHour())+":"+String.valueOf(timePicker1.getCurrentMinute());

tvAlarmRecord1.setText(tvAlarmRecord1.getText().toString()+"\n"+timeStr);

sharedPreferences1.edit().putString(timeStr,timeStr).commit();

}

}).setNegativeButton("取消",null).show();

break;

}

case R.id.btnAddAlarm2:

{

new AlertDialog.Builder(this).setTitle("设置静音结束时间").setView(view).setPositiveButton("确定",new DialogInterface.OnClickListener(){

@Override

public void onClick(DialogInterface dialog,int which)

{

String timeStr=String.valueOf(timePicker1.getCurrentHour())+":"+String.valueOf(timePicker1.getCurrentMinute());

tvAlarmRecord2.setText(tvAlarmRecord2.getText().toString()+"\n"+timeStr);

sharedPreferences2.edit().putString(timeStr,timeStr).commit();

}

}).setNegativeButton("取消",null).show();

break;

}

}

}

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button btnAddAlarm1 = (Button) findViewById(R.id.btnAddAlarm1);

Button btnAddAlarm2 = (Button) findViewById(R.id.btnAddAlarm2);

tvAlarmRecord1 = (TextView) findViewById(R.id.tvAlarmRecord1);

tvAlarmRecord2 = (TextView) findViewById(R.id.tvAlarmRecord2);

btnAddAlarm1.setOnClickListener(this);

btnAddAlarm2.setOnClickListener(this);

sharedPreferences1 = getSharedPreferences("alarm_record1",

Activity.MODE_PRIVATE);

sharedPreferences2 = getSharedPreferences("alarm_record2",

Activity.MODE_PRIVATE);

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

Intent intent = new Intent(this, TimeReceiver.class);

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,

intent, 0);

alarmManager.setRepeating(AlarmManager.RTC, 0, 60 * 1000, pendingIntent);

}

}

TimeReceiver的代码如下:

package com.example.timesilent;

import java.util.Calendar;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.media.AudioManager;

import android.content.SharedPreferences;

public class TimeReceiver extends BroadcastReceiver

{

@Override

public void onReceive(Context context, Intent intent)

{

SharedPreferences sharedPreferences1 = context.getSharedPreferences(

"alarm_record1", Activity.MODE_PRIVATE);

SharedPreferences sharedPreferences2 = context.getSharedPreferences(

"alarm_record2", Activity.MODE_PRIVATE);

String hour = String.valueOf(Calendar.getInstance().get(

Calendar.HOUR_OF_DAY));

String minute = String.valueOf(Calendar.getInstance().get(

Calendar.MINUTE));

String time1 = sharedPreferences1.getString(hour + ":" + minute, null);

String time2 = sharedPreferences2.getString(hour + ":" + minute, null);

AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);

if (time1!= null)

{

audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

}

if (time2!= null)

{

audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

}

}

}

程序运行效果

初始状态

开始静音状态

恢复正常状态

源码地址

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

android 定时静音,Android实现定时自动静音小助手相关推荐

  1. 2023 电脑PC WIN10一键禁用自带杀毒和自动更新小助手

    禁用后(记得重启电脑) 2023 电脑PC WIN10一键禁用自带杀毒和自动更新小助手......................................

  2. 【自动群发小助手】微信也能定时发送消息?过年终于不用熬夜守点发祝福了~

    前言

  3. 数字货币自动交易小助手

    区间交易,即网格交易,不同叫法,同一意思.参考其他助手用户关于区间交易交参数的讨论 无论从日内的分时图来看,还是从长期的日K线,周K线,震荡都是股价走势的主形态.货币出于震荡的时间比趋势的时间一般都长 ...

  4. android 自动静音模式,Android实现定时自动静音小助手

    定时静音助手的实现方法,供大家参考,具体内容如下 背景 突发奇想,刚好这学期刚上安卓课程,想设计一个时间助手.工作.学习中经常会被突如其来的电话所打扰,在上班,上课时这突如其来的铃声会惹来别人的反感, ...

  5. android 自定义dialog 定时关闭,Android编程实现自定义Dialog的大小自动控制方法示例...

    本文实例讲述了Android编程实现自定义Dialog的大小自动控制方法.分享给大家供大家参考,具体如下: Android应用开发中,无论是出于功能还是增加用户体验,弹出对话框(Dialog)进行一些 ...

  6. 【CF 应用开发大赛】智能静音android应用

    2019独角兽企业重金招聘Python工程师标准>>> 应用名称:智能静音android应用 应用URL地址:http://my.oschina.net/u/938197 应用说明及 ...

  7. android后台通知,Android后台定时提醒功能实现

    前提:考虑到自己每次在敲代码或者打游戏的时候总是会不注意时间,一不留神就对着电脑连续3个小时以上,对眼睛的伤害还是挺大的,重度近视了可是会遗传给将来的孩子的呀,可能老婆都跟别人跑了. 于是,为了保护眼 ...

  8. android提醒功能,android service实现循环定时提醒功能

    人每天都要喝8杯水才能保持健康,于是苦逼的程序员总是一遍代码就忘了时间,于是我突发奇想能不能开发一个apk能够实现固定的间隔时间定时提醒我要喝水了呢? apk基本功能: 1)能够设置间隔时间 2)在a ...

  9. android notification 定时显示,Android编程使用Service实现Notification定时发送功能示例...

    本文实例讲述了android编程使用service实现notification定时发送功能.分享给大家供大家参考,具体如下: /** * 通过启动或停止服务来管理通知功能 * * @descripti ...

最新文章

  1. 你的肠道菌群是遗传自你父母,还是后天环境塑造的?
  2. 斯坦福全球AI报告:清华AI课程人数增16倍,人才需求暴增 35 倍
  3. hibernate开发错误及解决办法
  4. 扩展欧几里得 POJ 1061
  5. linux bash 学习
  6. IT168调研:企业移动安全应用状况调查
  7. java kafka 消费_java编程之Kafka_消费者API详解
  8. mysql 从库可以写入吗_mysql主从库配置读写分离以及备份
  9. Angular Service
  10. nodejs es6 中的单例模式
  11. mysql order by 自定义
  12. 老王python培训视频教程完整版
  13. Pandas---条件筛选与组合筛选
  14. SIFT,SURF,ORB,FAST,BRISK 特征提取算法比较
  15. Android 智能手机开发概述
  16. STM32F103---标准库函数驱动DS18B20
  17. python语音标注平台_Python下的自然语言处理利器-LTP语言技术平台 pyltp 学习手札...
  18. libqr--简单好用的c++二维码生成库
  19. 单片机方案|口袋秤芯片方案
  20. 花生壳PHTunnel嵌入Openwrt实例

热门文章

  1. CODING 敏捷实战系列课第一讲:正本清源——敏捷的为什么
  2. 清理Git提交记录最简单的方法
  3. 工程伦理慕课答案(带题目供复习)
  4. 中国各省、自治区的名字来历
  5. 字符串中的 ↵ 回车符替换
  6. 七年级上册英语第三单元单词课文翻译
  7. 敢不敢挑战,半年学好英语。
  8. CSS基础班笔记(二)
  9. http://blog.csdn.net/wxl1555/article/details/53916856
  10. Python校实训第一天----分支语句之星座查询