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

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

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> 

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

时间: 2024-10-04 01:55:02

系统服务详解之电话服务、音频服务的相关文章

《Android多媒体应用开发实战详解:图像、音频、视频、2D和3D》——2.1节简析Android安装文件

2.1 简析Android安装文件 Android多媒体应用开发实战详解:图像.音频.视频.2D和3D 当下载并安装Android后,会在其安装目录中看到一些安装文件.了解这些文件具体是干什么用的,对于我们后面的驱动开发知识学习十分有用,所以在本节的内容中将简要介绍这些安装文件的基本知识. 2.1.1 Android SDK目录结构 安装Android SDK后,其安装目录的具体结构如图2-1所示. temp:里面包含了一些常用的文件模板. tools:包含了一些通用的工具文件. usb_dri

详解windows 2000的各种服务

Alerter(警报器服务):局域网中当系统发生问题时向系统管理员发出警报,对普通用户可设置为"已禁用"或"手动".

Siri工作方式详解:本地语音识别+云计算服务

ZDNet网站今天刊文称,苹果的语音助理服务Siri时髦而聪明,在一些情况下也很有用.那么Siri是如何工作的?"语音识别"是Siri的核心,但这并未解释Siri理解用户所说内容的详细过程.本周有http://www.aliyun.com/zixun/aggregation/32834.html">业内人士撰文,解释了Siri的工作步骤. 当用户对iPhone说话后,语音将被立即编码,成为一个压缩的数字文件,其中包含着所有有用的信息.这一信息将通过互联网服务提供商(IS

RHEL/CentOS 6.x 系统服务详解

PS:RHEL/CentOS 6.x的系统服务比5.x系列的要多了很多新面孔,估计很多童鞋不甚理解,网上这方面资料也很少.理解这个对运维人员是必要的,因为开启不必要的服务越多,系统就相对越不安全.不需开启的服务尽量关闭.本人结合自己的应用经验做一些讲解说明,有不同理解的童鞋欢迎交流. 1.下面列表是在RHEL/CentOS 6.x最小化桌面环境安装下显示出来的系统服务,其中红色字体标注的是用官方的minimal ISO最小化安装系统后的服务列表. 服务名称 功能  默认   建议  备注说明 N

linux系统服务详解

1.NetworaManager:在无线和有线网络之间快速切换.一般用于移动终端. 2.NetworkManagerDispatcher:在多种网络环境之间来回切换,与NetworkManager相同. 3.acpid:(没有预设端口)电源管理配置服务. 4.anacron:(没有预设端口)一个自动化运行任务.Red Hat Linux 随带四个自动化任务的工具:cron.anacron.at.和 batc.当你的Linux主机并不是全天候开机,这个anacron就可以帮你执行在"chontab

系统服务详解之时间服务3

4.全局定时器:AlermManager 全局定时器是与应用程序独立的系统时间服务,并不依赖应用程序而存在. 该对象通过 AlarmManage alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 获得. 通过PendingIntent指定一个Activity,再通过setRepeating方法设置定时器 intent = new Intent(this, MyActivity.class); pendin

系统服务详解之时间服务0

Android SDK中内置了多种时间服务,用于处理时间相关的操作. 1.计时器:Chronometer组件 这个组件可以以1秒为时间间隔进行计时. 示例如下: public class Main extends Activity implements OnClickListener, OnChronometerTickListener { private Chronometer chronometer; private TextView tvTime; @Override protected

系统服务详解之时间服务1

2.Handler是处理定时操作的核心类.通过Handler可以提交和处理一个Runnable对象.该类通过3个方法来处理Runnable对象:                  立即执行:post :指定时间执行:postAtTime:指定的时间间隔:postDelayed 因为该类处理对象为Runnable,所以在调用这3个方法之前,需要实现Runnable接口的run方法. public class Main extends Activity implements OnClickListe

系统服务详解之时间服务2

3.定时器:Timer Timer和Chronometer类似,但功能更加强大.Timer类通过schedule方法设置执行方式和时间,schedule方法的第一个参数为TimerTask,TimerTask类实现了Runnable接口,因此Timer实际上是在线程中执行run方法. 虽然Timer和Handler的处理代码都放在run方法中,但Timer是在线程中执行run方法,Handler是将执行的动作添加到Android系统的消息队列.因此使用Timer执行run方法时,在run方法中不