ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-05-19 23:51:32  阅读:280  来源: 互联网

标签:服务 MyPhoneCallListener 音频 STATE TelephonyManager state 详解 CALL public


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

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> 

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



标签:服务,MyPhoneCallListener,音频,STATE,TelephonyManager,state,详解,CALL,public
来源: https://blog.51cto.com/u_9894631/2789303

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有