当前位置: 移动技术网 > IT编程>移动开发>Android > Android实现定时自动静音小助手

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

成年身份证号码大全和姓名,聂海胜的资料,古董鉴定网

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

背景

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

界面设计

<?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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网