系统服务详解之电话服务、音频服务

简介: 接听电话时,会显示两个状态:来点状态和接听状态。下面示例演示了如何使用电话服务。 public class Main extends Activity{ public class MyPhoneCallListener extends PhoneStateListener { ...

接听电话时,会显示两个状态:来点状态和接听状态。下面示例演示了如何使用电话服务。

public class Main extends Activity
{
	public class MyPhoneCallListener extends PhoneStateListener
	{

		@Override
		public void onCallStateChanged(int state, String incomingNumber)
		{

			switch (state)
			{       //通话状态
				case TelephonyManager.CALL_STATE_OFFHOOK:
					Toast.makeText(Main.this, "正在通话...", Toast.LENGTH_SHORT)
							.show();
					break;
                                //来点状态
				case TelephonyManager.CALL_STATE_RINGING:
					Toast.makeText(Main.this, incomingNumber,
							Toast.LENGTH_SHORT).show();
					break;

			}
			super.onCallStateChanged(state, incomingNumber);
		}

	}

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
		MyPhoneCallListener myPhoneCallListener = new MyPhoneCallListener();

		tm.listen(myPhoneCallListener, PhoneStateListener.LISTEN_CALL_STATE);


	}
}
配置文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="net.blogjava.mobile" android:versionCode="1"
	android:versionName="1.0">
	<application android:icon="@drawable/icon" android:label="@string/app_name">
		<activity android:name=".Main" android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>

	</application>

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

</manifest> 

我们了解了如何使用电话服务,现在可以配合音频服务来设计一个电话黑名单的功能。

public class Main extends Activity
{
	public class MyPhoneCallListener extends PhoneStateListener
	{

		@Override
		public void onCallStateChanged(int state, String incomingNumber)
		{
			AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
;
			switch (state)
			{
				case TelephonyManager.CALL_STATE_IDLE:
					audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
					break;
				case TelephonyManager.CALL_STATE_RINGING:
					if ("12345678".equals(incomingNumber))
					{
						audioManager
								.setRingerMode(AudioManager.RINGER_MODE_SILENT);
					}
					break;

			}
			super.onCallStateChanged(state, incomingNumber);
		}

	}

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
		MyPhoneCallListener myPhoneCallListener = new MyPhoneCallListener();
		tm.listen(myPhoneCallListener, PhoneStateListener.LISTEN_CALL_STATE);

	}
}
配置文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="net.blogjava.mobile" android:versionCode="1"
	android:versionName="1.0">
	<application android:icon="@drawable/icon" android:label="@string/app_name">
		<activity android:name=".Main" android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>

	</application>

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

</manifest> 

这样当设定电话来电时,就会将手机设置为静音。


目录
相关文章
|
语音技术
FreeSwitch中音乐功能保持和静音回铃声怎样设置
FreeSwitch中音乐功能保持和静音回铃声怎样设置
|
机器人
智能电话机器人源码系统 的VAD和CNG
概观 VAD概述 VAD代表语音活动检测。它的作用是区分声音和其他任何东西,包括沉默。在VoIP应用中,它可以用作最小化传输的音频分组数量的工具。如果没有人说话,则可以停止音频数据包的流动,或者至少改变为低得多的舒适噪声数据包
|
监控 安全 Linux
处理SIP的voip语音环境问题的方法
在VoIP的环境中,特别是基于SIP通信的环境中,我们经常会遇到一些非常常见的问题,例如,单通,30秒就断线,注册问题,回声等。这些问题事实上都有非常直接的排查方式和解决办法,用户可以按照一定的排查方式,工具非常高效地解决这些问题。但是,因为读者技术水平参差不齐,网络上的很多技术也不完整。笔者今天系统归纳了这些问题。根据一些用户的使用环境和用户经常遇到一些问题,我们列举了以下十个在SIP呼叫中经常遇到的问题,并且给出了相应的排查方式,用户可以按照这些方法来解决SIP通话中的这些问题,有关系统问题欢迎喂博主一起交流学习。这十个经典的问题包括: 不能注册或呼叫到SIP服务器端 30秒挂断呼叫的
|
测试技术 PHP
VoIP实现即时通话通知
VoIP实现即时通话通知
VoIP实现即时通话通知
|
安全 搜索推荐 BI
eyebeam电话呼叫软件使用及配置方法
eyebeam电话呼叫软件使用及配置方法
|
编解码 安全 网络安全
编写一个SIP软电话所需要的组件
编写一个SIP软电话所需要的组件
|
人工智能 自然语言处理 前端开发
电话机器人是一个怎么样的系统?主要功能是哪些
电话机器人是一个怎么样的系统?主要功能是哪些
21 0
电话机器人是一个怎么样的系统?主要功能是哪些
|
存储 JSON NoSQL
怎样设置呼叫系统的通话质检接口
实时质检 原理:通过ASR接口(依赖cti_asr接口),识别出实时识别说话内容,然后和关键词匹配执行挂机等动作。支持群集,配置和记录都存储到REDIS。 使用实例 <action application="export" data="nolocal:execute_on_answer_qc=cti_qc_session:bleg_group|common_group"/> <action application="set" data="execute_on_answer_qc=cti_qc_session:aleg_group|common_group"/> <action applicat
|
编解码 iOS开发 MacOS
MicroSIP软电话的安装和使用
SIP软电话 粗陋理解,安装在电脑上可以当作电话用的软件,就是软电话。 作为一个长期工作在通信一线的免费软件和开源软件的爱好者,我曾经在电脑上安装了几十个免费的软电话软件,以至于到最后他们互相打架——端口冲突(几款设计不良的软件硬性捆绑了5060端口)、霸占声卡、内存泄露。 所以呢,我踩过的坑,你完全不必再去踩一遍了。
3796 0