android 定时静音,Android实现定时自动静音小助手
定时静音助手的实现方法,供大家参考,具体内容如下
背景
突发奇想,刚好这学期刚上安卓课程,想设计一个时间助手。工作、学习中经常会被突如其来的电话所打扰,在上班,上课时这突如其来的铃声会惹来别人的反感,而只靠人们的记性是很难在准确的时间记得静音。如果一直静音,那么在休息时间又有可能漏接重要的电话。基于这种考虑,设计了这样一自动静音小助手,来帮助人们在忙碌的生活中定时静音,定时开启正常模式,简单方便。
界面设计
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实现定时自动静音小助手相关推荐
- 2023 电脑PC WIN10一键禁用自带杀毒和自动更新小助手
禁用后(记得重启电脑) 2023 电脑PC WIN10一键禁用自带杀毒和自动更新小助手......................................
- 【自动群发小助手】微信也能定时发送消息?过年终于不用熬夜守点发祝福了~
前言
- 数字货币自动交易小助手
区间交易,即网格交易,不同叫法,同一意思.参考其他助手用户关于区间交易交参数的讨论 无论从日内的分时图来看,还是从长期的日K线,周K线,震荡都是股价走势的主形态.货币出于震荡的时间比趋势的时间一般都长 ...
- android 自动静音模式,Android实现定时自动静音小助手
定时静音助手的实现方法,供大家参考,具体内容如下 背景 突发奇想,刚好这学期刚上安卓课程,想设计一个时间助手.工作.学习中经常会被突如其来的电话所打扰,在上班,上课时这突如其来的铃声会惹来别人的反感, ...
- android 自定义dialog 定时关闭,Android编程实现自定义Dialog的大小自动控制方法示例...
本文实例讲述了Android编程实现自定义Dialog的大小自动控制方法.分享给大家供大家参考,具体如下: Android应用开发中,无论是出于功能还是增加用户体验,弹出对话框(Dialog)进行一些 ...
- 【CF 应用开发大赛】智能静音android应用
2019独角兽企业重金招聘Python工程师标准>>> 应用名称:智能静音android应用 应用URL地址:http://my.oschina.net/u/938197 应用说明及 ...
- android后台通知,Android后台定时提醒功能实现
前提:考虑到自己每次在敲代码或者打游戏的时候总是会不注意时间,一不留神就对着电脑连续3个小时以上,对眼睛的伤害还是挺大的,重度近视了可是会遗传给将来的孩子的呀,可能老婆都跟别人跑了. 于是,为了保护眼 ...
- android提醒功能,android service实现循环定时提醒功能
人每天都要喝8杯水才能保持健康,于是苦逼的程序员总是一遍代码就忘了时间,于是我突发奇想能不能开发一个apk能够实现固定的间隔时间定时提醒我要喝水了呢? apk基本功能: 1)能够设置间隔时间 2)在a ...
- android notification 定时显示,Android编程使用Service实现Notification定时发送功能示例...
本文实例讲述了android编程使用service实现notification定时发送功能.分享给大家供大家参考,具体如下: /** * 通过启动或停止服务来管理通知功能 * * @descripti ...
最新文章
- 你的肠道菌群是遗传自你父母,还是后天环境塑造的?
- 斯坦福全球AI报告:清华AI课程人数增16倍,人才需求暴增 35 倍
- hibernate开发错误及解决办法
- 扩展欧几里得 POJ 1061
- linux bash 学习
- IT168调研:企业移动安全应用状况调查
- java kafka 消费_java编程之Kafka_消费者API详解
- mysql 从库可以写入吗_mysql主从库配置读写分离以及备份
- Angular Service
- nodejs es6 中的单例模式
- mysql order by 自定义
- 老王python培训视频教程完整版
- Pandas---条件筛选与组合筛选
- SIFT,SURF,ORB,FAST,BRISK 特征提取算法比较
- Android 智能手机开发概述
- STM32F103---标准库函数驱动DS18B20
- python语音标注平台_Python下的自然语言处理利器-LTP语言技术平台 pyltp 学习手札...
- libqr--简单好用的c++二维码生成库
- 单片机方案|口袋秤芯片方案
- 花生壳PHTunnel嵌入Openwrt实例