Android实现定时自动静音小助手
发布时间 - 2026-01-11 01:59:09 点击率:次定时静音助手的实现方法,供大家参考,具体内容如下

背景
突发奇想,刚好这学期刚上安卓课程,想设计一个时间助手。工作、学习中经常会被突如其来的电话所打扰,在上班,上课时这突如其来的铃声会惹来别人的反感,而只靠人们的记性是很难在准确的时间记得静音。如果一直静音,那么在休息时间又有可能漏接重要的电话。基于这种考虑,设计了这样一自动静音小助手,来帮助人们在忙碌的生活中定时静音,定时开启正常模式,简单方便。
界面设计
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btnAddAlarm1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="添加静音开始时间" /> <TextView android:id="@+id/tvAlarmRecord1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16dp" /> <Button android:id="@+id/btnAddAlarm2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="添加静音停止时间" /> <TextView android:id="@+id/tvAlarmRecord2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16dp" / </LinearLayout>
点击完按钮的会出现一个时间点设置的对话框 代码如下
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TimePicker android:id="@+id/timepicker1" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
效果图
功能设计
原理介绍
先简单介绍一下工作原理。在添加时间点之后,需要将所添加的时间点保存在文件或者数据库中,我使用了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);
}
}
}
程序运行效果
初始状态
开始静音状态
恢复正常状态
源码地址
github
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android定时静音助手
# Android定时自动静音助手
# Android定时静音
# Android给通知channel静音的方法实例
# Android实现静音检测功能
# Android 判断网络状态对音频静音的实现方法
# Android EasyPlayer声音自动停止、恢复
# 一键静音等功能
# android实现来电静音示例(监听来电)
# android系统在静音模式下关闭camera拍照声音的方法
# Android音频录制MediaRecorder之简易的录音软件实现代码
# Android简单的利用MediaRecorder进行录音的实例代码
# Android实现录音功能实现实例(MediaRecorder)
# Android实现录音静音降噪
# 突如其来
# 主要是
# 都是
# 很难
# 又有
# 添加时间
# 时间为
# 介绍一下
# 每隔
# 数据库中
# 恢复正常
# 对话框
# 具体内容
# 工作原理
# 大家多多
# 过程中
# 只靠
# 判断是否
# 中经
# 小助手
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
如何快速使用云服务器搭建个人网站?
使用C语言编写圣诞表白程序
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
网站制作免费,什么网站能看正片电影?
如何在阿里云虚拟服务器快速搭建网站?
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
Laravel怎么连接多个数据库_Laravel多数据库连接配置
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
浅析上传头像示例及其注意事项
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
BootStrap整体框架之基础布局组件
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
iOS验证手机号的正则表达式
教你用AI润色文章,让你的文字表达更专业
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Laravel如何使用Vite进行前端资源打包?(配置示例)
java ZXing生成二维码及条码实例分享
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何快速生成橙子建站落地页链接?
Laravel如何创建自定义中间件?(Middleware代码示例)
如何在建站之星网店版论坛获取技术支持?
在线教育网站制作平台,山西立德教育官网?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Python并发异常传播_错误处理解析【教程】
Laravel如何实现模型的全局作用域?(Global Scope示例)
怎么用AI帮你为初创公司进行市场定位分析?
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
如何在阿里云通过域名搭建网站?
EditPlus中的正则表达式实战(6)
在线制作视频的网站有哪些,电脑如何制作视频短片?
无锡营销型网站制作公司,无锡网选车牌流程?
香港服务器如何优化才能显著提升网站加载速度?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
黑客入侵网站服务器的常见手法有哪些?
北京网站制作的公司有哪些,北京白云观官方网站?
JavaScript模板引擎Template.js使用详解
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】

