Android实现定时自动静音小助手

Android实现定时自动静音小助手,第1张

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

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

背景

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

界面设计

<?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,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,intent,0);   alarmManager.setRepeating(AlarmManager.RTC,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实现定时自动静音小助手所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1145943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存