`

AudioManager黑名单来电自动静音

 
阅读更多

添加权限

 

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

 

 

private TextView mTextView01;
	private TextView mTextView03;
	private EditText mEditText1;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.phone_silent);

		/* 设定PhoneCallListener */
		MyPhoneCallListener phoneListener = new MyPhoneCallListener();
		/* 设定TelephonyManager去抓取Telephony Severice */
		TelephonyManager telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
		/* 设定Listen Call */
		telMgr.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);

		/* 设定找寻TextView、EditText */
		mTextView01 = (TextView) findViewById(R.id.myTextView1);
		mTextView03 = (TextView) findViewById(R.id.myTextView3);
		mEditText1 = (EditText) findViewById(R.id.myEditText1);
		
		mEditText1.addTextChangedListener(new TextWatcher(){

			public void afterTextChanged(Editable s) {
				
			}

			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
				
			}

			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
				mTextView03.setText(mEditText1.getText());
			}
			
		});

	}

	/* 判断PhoneStateListener现在的状态 */
	public class MyPhoneCallListener extends PhoneStateListener {
		public void onCallStateChanged(int state, String incomingNumber) {
			switch (state) {
			/* 判断手机目前是待机状态 */
			case TelephonyManager.CALL_STATE_IDLE:
				mTextView01.setText("手机目前是待机状态");

				try {
					AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
					if (audioManager != null) {
						/* 设定手机为待机时,响铃模式为正常 */
						audioManager
								.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
						audioManager.getStreamVolume(AudioManager.STREAM_RING);
					}
				} catch (Exception e) {
					mTextView01.setText(e.toString());
					e.printStackTrace();
				}
				break;

			/* 判断状态为通话中 */
			case TelephonyManager.CALL_STATE_OFFHOOK:
				mTextView01.setText("通话中");
				break;

			/* 判断状态为来电 */
			case TelephonyManager.CALL_STATE_RINGING:
				/* 显示现在来电的讯息 */
				mTextView01.setText("来电:"
						+ incomingNumber);

				/* 判断与输入电话是否为一样,当一样时响铃模式转为静音 */
				if (incomingNumber.equals(mTextView03.getText().toString())) {
					try {
						AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
						if (audioManager != null) {
							/* 设定响铃模式为静音 */
							audioManager
									.setRingerMode(AudioManager.RINGER_MODE_SILENT);
							//audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);震动
							audioManager
									.getStreamVolume(AudioManager.STREAM_RING);
							Toast.makeText(PhoneSilent.this,
									"静音模式",
									Toast.LENGTH_SHORT).show();
						}
					} catch (Exception e) {
						mTextView01.setText(e.toString());
						e.printStackTrace();
						break;
					}
				}
			}

			super.onCallStateChanged(state, incomingNumber);
		}
	}
 


  • 大小: 17.1 KB
分享到:
评论

相关推荐

    android黑名单设置 来电自动静音

    这个"android黑名单设置 来电自动静音"的主题,意味着我们可以通过编程方式实现一个功能,即当某个电话号码被列入黑名单时,其来电将会被自动静音。这涉及到Android的权限管理、电话拦截服务以及音频控制等多个方面...

    Android基于AudioManager、PhoneStateListener实现设置黑名单功能

    //检查来电号码是否在黑名单中 if(isBlackList(incomingNumber)){ //如果在黑名单中,设置手机为静音模式 AudioManager am=(AudioManager)getSystemService(Context.AUDIO_SERVICE); am.setMode(AudioManager.MODE_...

    Android项目实战--手机卫士17--拦截黑名单以及响一声电话的处理

    当电话状态改变时,该方法会被调用,我们可以在这里判断是否来电,并与黑名单进行对比。 黑名单管理通常是一个单独的Activity,如`BlacklistManageActivity`,用户可以在此添加、删除和编辑黑名单号码。数据通常...

    android电话、短信黑白名单拦截、电话录音

    如果在黑名单内,则通过`AudioManager`静音手机扬声器或挂断电话。 短信拦截则需要用到`BroadcastReceiver`。注册一个短信接收广播,监听`android.provider.Telephony.SMS_RECEIVED`意图。在`onReceive()`方法中,...

    Android 来电拦截及拦截后的提示音源码.zip

    9. **优化用户体验**:为了让用户有更好的使用体验,可以添加设置界面让用户自行配置拦截规则,比如白名单、黑名单等。 以上就是Android来电拦截及拦截后播放提示音的基本实现原理和步骤。源码中应该包含了具体的...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的...

    Google+Android+SDK开发范例大全

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK开发范例大全的目录

    6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后...

    Google Android SDK 开发范例大全01

    6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的...

    Google Android SDK 开发范例大全02

    6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的...

    Google Android sdk 开发范例大全 部分章节代码

    6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的...

    Google Android SDK开发范例大全(完整版)

    6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的...

Global site tag (gtag.js) - Google Analytics