程序功能:在主界面中有两种模式选择,一个是会议模式,一个是正常模式,当选择会议模式,手机设定为静音,当选择为正常模式,手机设定为响铃。当单击添加按钮时,系统会自动从编辑框中提取输入电话号码,若输入的电话号码不全为数字时,会提示出错。

程序效果如下:

首先给出布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RadioGroup android:id="@+id/rg"android:layout_marginTop="5dp"android:layout_width="wrap_content"android:layout_height="wrap_content"><RadioButton android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/rb1"android:text="会议模式"/><RadioButton android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/rb2"android:text="正常模式"/></RadioGroup><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:orientation="horizontal"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="请输入号码:"/><EditText android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/et"/></LinearLayout><Button android:id="@+id/btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="添加"/><TextView android:layout_marginTop="5dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tv"/>
</LinearLayout>

布局文件中的最后一个TextView控件是用来显示添加来电显示电话号码的。

接下来给出主功能代码:

package com.example.sample6_13;import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends Activity {private RadioGroup rg;private EditText et;private Button btn;private TextView tv;private RadioButton rb1;private RadioButton rb2;private Vibrator vibrator;private List<String> num;private StringBuilder sb;private int count;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sb = new StringBuilder();num = new ArrayList<String>();TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);tm.listen(myPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);InitViews();}PhoneStateListener myPhoneStateListener = new PhoneStateListener(){@Overridepublic void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager.CALL_STATE_IDLE://待机状态Toast.makeText(MainActivity.this, "手机处于待机状态", Toast.LENGTH_SHORT).show();if(rb1.isChecked() == true){//会议模式AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);if(am != null){am.setRingerMode(AudioManager.RINGER_MODE_SILENT);//设置静音模式am.getStreamVolume(AudioManager.STREAM_RING);}}else{AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);if(am != null){am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);//设置静音模式am.getStreamVolume(AudioManager.STREAM_RING);}}break;case TelephonyManager.CALL_STATE_RINGING:if(num.size() == 0){return;}for(int i=0;i<num.size();i++){if(incomingNumber.equals(num.get(i))){vibrator.vibrate(new long[]{100,10,100,1000},0);Toast.makeText(MainActivity.this, "手机正在震动", Toast.LENGTH_SHORT).show();}}break;case TelephonyManager.CALL_STATE_OFFHOOK:vibrator.cancel();Toast.makeText(MainActivity.this, "手机震动已取消", Toast.LENGTH_SHORT).show();break;}};};private void InitViews() {rg = (RadioGroup) findViewById(R.id.rg);rb1 = (RadioButton) findViewById(R.id.rb1);rb2 = (RadioButton) findViewById(R.id.rb2);et = (EditText) findViewById(R.id.et);btn = (Button) findViewById(R.id.btn);tv = (TextView) findViewById(R.id.tv);vibrator = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String msg = et.getText().toString().trim();if(msg.matches("^[0-9]*$") && !msg.equals("")){num.add(msg);et.setText("");sb.append(count++);sb.append(".");sb.append(msg);sb.append("\n");tv.setText(sb.toString());}else{Toast.makeText(MainActivity.this, "电话号码中只允许有数字并且不能为空", Toast.LENGTH_SHORT).show();}}});rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {if(checkedId == rb1.getId()){//会议模式AudioManager am = (AudioManager) MainActivity.this.getSystemService(Context.AUDIO_SERVICE);if(am != null){am.setRingerMode(AudioManager.RINGER_MODE_SILENT);//设置为静音模式am.getStreamVolume(AudioManager.STREAM_RING);Toast.makeText(MainActivity.this, "手机已设定为静音模式", Toast.LENGTH_SHORT).show();}}else if(checkedId == rb2.getId()){AudioManager am = (AudioManager) MainActivity.this.getSystemService(Context.AUDIO_SERVICE);if(am != null){am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);//设置为正常模式am.getStreamVolume(AudioManager.STREAM_RING);Toast.makeText(MainActivity.this, "手机已设定为正常模式", Toast.LENGTH_SHORT).show();}}}});}
}

手机设定为静音模式:

am.setRingerMode(AudioManager.RINGER_MODE_SILENT);//设置静音模式
am.getStreamVolume(AudioManager.STREAM_RING);

手机设定为正常模式:

am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);//设置静音模式
am.getStreamVolume(AudioManager.STREAM_RING);

具体代码参考上面,最后就是添加权限了:

<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

设置手机静音和固定电话来电时手机震动相关推荐

  1. i908/i908E手机如何拨打固定电话分机号

    俺用的是这个型号的手机. 着急间发现不能拨打分机号, 因为接通之后, 键盘会自动锁屏, 屏幕进入省电黑屏模式... Google了一下, 发现正确操作方法: 电话接通后手机会自动锁屏,如果需要继续使用 ...

  2. 安卓_手机卫士_第五天(手机定位,设备管理器,电话归属地)

    安卓手机卫士第五天(手机定位,设备管理器,电话归属地) 手机定位 网络定位 根据IP显示具体的位置, 原理是建立一个库那个IP地址对应那个地方:早期警方破案就采用此特点:纯真IP数据库软件介绍有局限性 ...

  3. 手机静音html还有声音,为什么手机静音了还有声音

    语音内容: 大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 以iOS13的iPhone11和系统版本为EMUI10.0的华为p30为例,手机静音模式下还有声音是因为手机没有关闭媒 ...

  4. android手机密码忘了哪个电话打开,安卓手机锁屏密码忘了怎么办 解决锁屏密码六种方法介绍...

    每个人都有安全意识是很正常的,跟上潮流,为自己设置一个锁屏密码,弄个复杂点的,可是也会有这样的情况发生,密码复杂到连自己都不记得了那该怎么办呢,忘记了锁屏图案密码,使自己的手机无法打开盖如何解决呢,小 ...

  5. oppo手机计算机的隐藏功能介绍,OPPO手机6大隐藏功能,你知道吗

    其实手机的功能远要比你想象的多要多,只是我们很多人都不知道而已.就拿OPPO手机来说吧,OPPO手机有6大隐藏功能,你们知道吗?若是不知道的话,就随小编一同去了解下吧! OPPO手机6大隐藏功能,你知 ...

  6. 手机\固定电话座机呼叫转移设置方法

    首先我们要了解什么是呼叫转移,呼叫转移-CF(Call Forwarding,),是电信业一项传统通信业务,又称呼叫前转.呼入转移.如果您的电话无法接听或您不愿接电话,可以将来电转移到其它电话号码上. ...

  7. 固定电话/小灵通/手机呼叫转移设置方法

    作者:Saver 原载:Saver省钱妙招 版权所有,转载时必须以链接形式注明作者和原始出处及本声明. 一般呼叫转移有几种状态,呼叫无条件前转:将所有来话转移到用户指定的号码上:呼叫无应答前转:当打入 ...

  8. 设置android电话震动,如何设置手机在通话接通和断开时震动

    [Android Version] Android V2.3 ( GB,GB2) Android V4.0, 4.1( ICS, ICS2, JB) Android V4.2( JB2,JB3,JB5 ...

  9. 手机怎么设置打不进电话显示无服务器,手机打不进来电话怎么回事 解决方法【图文教程】...

    导读:现今社会,手机已经成为我们的随身之物,走到哪里我们都离不开手机,我们使用手机,不仅可以进行通讯,还能娱乐甚至工作,手机着实给我们带来了很多的方便,但是有时候手机也会遇到一些问题,它最基本的功能就 ...

最新文章

  1. Windows10远程访问Jupyter notebook
  2. windows ubuntu Android studio安装好启动没反应解决方法
  3. 【MM模块】Basic Invoice Verification 发票校验
  4. si24r1程序_简要分析SI24R1替代兼容NRF24L01P
  5. Batch request processing in backend
  6. ios开发转行_做了几年嵌入式,想转服务器开发,该学什么?
  7. 路由器刷机后无线模块丢失-竞斗云2.0刷机
  8. dlib疲劳检测_使用OpenCv和Dlib进行打哈欠检测
  9. 系统 应用 数据缺一不可 云优化三步走
  10. poj 1330(LCA)
  11. 环,模,补码,负数的表示与减法实现
  12. Node.js因为OpenSSL安全问题推迟更新
  13. 当当网Python图书数据分析
  14. 史上最全最实用网站来袭
  15. java maven项目导入本地jar包
  16. 游戏服务器内三类线程池的划分与使用
  17. vue使用 moment.js 格式化时间(获取当前日期的周一和周日)
  18. [cstc2021]wp
  19. Win10系统中如何使用安卓模拟器的方法
  20. python 三种实现按照固定比例分配任务的方法

热门文章

  1. 史上最强吃鸡电脑配件更新!这张显卡都能买一套房子了
  2. EPLAN界面编辑背景颜色更改
  3. 银行卡格式化(每四位空格,删除添加,更变等)
  4. 树与二叉树基本概念与性质
  5. 上交凯原|法学大陆天花板,本外校录取比1:9,双非含量高达12% | 上海交通大学凯原法学院2022届推免大数据
  6. 计算机家庭组无法访问,Win7共享文件夹无法访问解决方法
  7. 学习CSS的background属性及其取值(实践)
  8. 在英语语法的基础上分析荷兰语的一些语法点
  9. springboot学习_Spring Boot 开源学习项目代码日爆爆爆
  10. Spring 框架之九阴真经