监听来电情况(静音)

android 实现音量变化监听和静音方法 android静音实现方法 类似语音app实现静音与取消静音 1. 模拟按键 模拟静音键 2.调用静音接口 取消静音时,音量条UI显示音量进度与进度值 private AudioManager mAudioManager = null; mAudioManager = (AudioManager) getSystemService(Context.AUDIO... 阅读详情

 

 

 

 

在main.xml中:

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

  xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:gravity="center_horizontal"

  android:background="#00ff33">

  <EditText

     android:id="@+id/phonenumber"

     android:layout_margin="8dp"

     android:layout_width="fill_parent"

     android:layout_height="wrap_content"/>

  <LinearLayout

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:orientation="horizontal">

     <Button

       android:id="@+id/setnumber"

       android:layout_width="80dp"

       android:layout_height="40dp"

       android:textColor="#ffffff"

       android:background="#3399ff"

       android:text="过滤"/>

     <Button

       android:id="@+id/cancelnumber"

       android:layout_marginLeft="20dp"

       android:layout_width="80dp"

       android:layout_height="40dp"

       android:textColor="#ffffff"

       android:background="#3399ff"

       android:text="取消过滤"/>

  </LinearLayout>

</LinearLayout>

 

 

 

 

在IService.java中:

 

package com.li.phone;

 

public interface IService {

 

}

 

 

 

 

在PhoneBroadcastReceiver.java中:

 

package com.li.phone;

 

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

 

public class PhoneBroadcastReceiver extends BroadcastReceiver {

 

  @Override

  public void onReceive(Context context, Intent intent) {

     if (Intent.ACTION_NEW_OUTGOING_CALL.equals(intent.getAction())) { // 去电

       String outgoingNumber = intent

            .getStringExtra(Intent.EXTRA_PHONE_NUMBER); // 去电号码

       Intent pit = new Intent(context, PhoneService.class);

       pit.putExtra("outgoingNumber", outgoingNumber);

       context.startService(pit);

     } else { // 来电

       context.startService(new Intent(context, PhoneService.class));

     }

  }

 

}

 

 

 

 

 

 

在PhoneService.java中:

 

package com.li.phone;

 

import android.app.Service;

import android.content.Context;

import android.content.Intent;

import android.media.AudioManager;

import android.os.Binder;

import android.os.IBinder;

import android.telephony.PhoneStateListener;

import android.telephony.TelephonyManager;

 

public class PhoneService extends Service {

  private TelephonyManager telephony = null;

  private AudioManager audio = null; // 声音服务

  private String phoneNumber = null; // 要过滤的电话

  private IBinder myBinder = new BinderImpl();

 

  class BinderImpl extends Binder implements IService {

 

     @Override

     public String getInterfaceDescriptor() {

       return "过滤电话“" + PhoneService.this.phoneNumber + "”设置成功!";

     }

 

  }

 

  @Override

  public IBinder onBind(Intent intent) {

     this.phoneNumber = intent.getStringExtra("phonenumber"); // 取得电话号码

     this.audio = (AudioManager) super

         .getSystemService(Context.AUDIO_SERVICE); // 声音服务

     this.telephony = (TelephonyManager) super

         .getSystemService(Context.TELEPHONY_SERVICE);

     this.telephony.listen(new PhoneStateListenerImpl(),

         PhoneStateListener.LISTEN_CALL_STATE); // 设置监听操作

     return this.myBinder;

  }

 

  private class PhoneStateListenerImpl extends PhoneStateListener {

 

     @Override

     public void onCallStateChanged(int state, String incomingNumber) {

       switch (state) {

       case TelephonyManager.CALL_STATE_IDLE: // 挂断电话

         PhoneService.this.audio

              .setRingerMode(AudioManager.RINGER_MODE_NORMAL); // 正常音

         break;

       case TelephonyManager.CALL_STATE_RINGING: // 领音响起

         if (incomingNumber.equals(PhoneService.this.phoneNumber)) { // 电话号码匹配

            PhoneService.this.audio

                .setRingerMode(AudioManager.RINGER_MODE_SILENT); // 静音

         }

         break;

       case TelephonyManager.CALL_STATE_OFFHOOK: // 接听电话

         break;

       }

     }

  }

 

}

 

 

 

 

 

在MyPhoneDemo.java中:

 

package com.li.phone;

 

import com.li.phone.PhoneService.BinderImpl;

 

import android.app.Activity;

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.content.ServiceConnection;

import android.os.Bundle;

import android.os.IBinder;

import android.os.RemoteException;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

 

public class MyPhoneDemo extends Activity {

  private EditText phoneNumber = null ;

  private Button setNumber = null ;

  private Button cancelNumber = null ;

  private IService service = null ;

  private ServiceConnectionImpl serviceConnection = new ServiceConnectionImpl() ;

  @Override

  public void onCreate(Bundle savedInstanceState) {

     super.onCreate(savedInstanceState);

     super.setContentView(R.layout.main);

     this.phoneNumber = (EditText) super.findViewById(R.id.phonenumber) ;

     this.setNumber = (Button) super.findViewById(R.id.setnumber) ;

     this.cancelNumber = (Button) super.findViewById(R.id.cancelnumber) ;

     this.setNumber.setOnClickListener(new SetOnClickListenerImpl()) ;

     this.cancelNumber.setOnClickListener(new CancelOnClickListenerImpl()) ;

  }

 

  private class SetOnClickListenerImpl implements OnClickListener {

     public void onClick(View v) {

       Intent intent = new Intent(MyPhoneDemo.this,PhoneService.class) ;

       intent.putExtra("phonenumber", MyPhoneDemo.this.phoneNumber

            .getText().toString());

       MyPhoneDemo.this.bindService(intent,

            MyPhoneDemo.this.serviceConnection,

            Context.BIND_AUTO_CREATE);

      

     }

  }

  private class CancelOnClickListenerImpl implements OnClickListener {

     public void onClick(View v) {

       if(MyPhoneDemo.this.service != null) {

         MyPhoneDemo.this.unbindService(MyPhoneDemo.this.serviceConnection) ;

         MyPhoneDemo.this.stopService(new Intent(MyPhoneDemo.this,PhoneService.class)) ;

         Toast.makeText(MyPhoneDemo.this, "黑名单已取消", Toast.LENGTH_LONG)

              .show();

         MyPhoneDemo.this.service = null ;

       }

     }

  }

  private class ServiceConnectionImpl implements ServiceConnection {

     public void onServiceConnected(ComponentName name, IBinder service) {

       MyPhoneDemo.this.service = (BinderImpl) service ;

       try {

         Toast.makeText(MyPhoneDemo.this, service.getInterfaceDescriptor(), Toast.LENGTH_LONG).show() ;

       } catch (RemoteException e) {

       }

     }

 

     public void onServiceDisconnected(ComponentName name) {

      

     }

    

  }

}

 

 

 

 

 

修改AndroidManifest.xml:

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.li.phone"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="15" />

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

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

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

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

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

 

    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name=".MyPhoneDemo"

            android:label="@string/title_activity_my_phone_demo" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <service android:name=".PhoneService" />

     <receiver android:name=".PhoneBroadcastReceiver">

       <intent-filter>

         <action android:name="android.intent.action.NEW_OUTGOING_CALL" />

         <action android:name="android.intent.action.BOOT_COMPLETED" />

         <action android:name="android.intent.action.PHONE_STATE" />

       </intent-filter>

     </receiver>

    </application>

 

</manifest>

 

 

Android音频管理实战:监听音量变化与静音控制的实现方法 本文深入探讨了Android音频管理实战,重点解析了如何通过AudioManager实现精准的静音控制与音量变化监听。针对语音App开发中的常见痛点,文章详细介绍了两种静音方法、利用反射破解静音状态下的音量显示难题,并提供了完整的广播监听方案以实现UI同步,帮助开发者构建健壮的音频管理模块。 阅读详情

相关推荐

Android设置模块中实现来电反转静音功能编程

在Android应用开发中,可以通过编程实现来电反转静音功能,使得当手机接收到来电时自动将手机设为静音状态。本文将为您提供详细的实现步骤,并提供相应的源代码示例。通过以上步骤,我们就可以在Android设置模块中实现来电反转静音功能了。编译并运行应用,当您打开开关按钮时,来电时手机将自动静音。来监听电话状态变化的广播,并在接收到来电时将手机设为静音状态。当开关被关闭时,我们取消注册广播接收器。在AndroidManifest.xml文件中添加必要的权限声明,以便应用能够控制手机的静音状态。

CyberLynxO的博客 269

android 静音监听,android静音播放视频

http://blog.youkuaiyun.com/spinchao/article/details/51439322使用videvocView来静音播放视频,像微信朋友圈小视频预览一样。实现方法是给videoview注册一个setOnPreparedListener的监听,就绪后设置音量为0;代码如下:try {Uri uri =Uri.parse(“xxx”);mVideoPlayer.setVideo...

weixin_35888603的博客 491

android实现来电静音示例(监听来电)

主要介绍了手机来电铃声响起后,通过此代码实现静音而非挂断的方法的相关资料

Android实现手机静音,Android实现手机静音

模块原本是放在miao课表中的,允许用户上课静音,但其他很多地方也可以用得到,所以特地把它摘出来详细写写。静音Android的铃响模式的设置是通过AudioManager(音频管理器)来实现的。静音指来电后手机处于静音状态,无声音。实现代码如下:privatevoidsilentSwitchOn(){AudioManageraudioManager=(AudioManager)get...

weixin_39652154的博客 2596

海康威视工业相机SDK二次开发实战:多相机同步采集与图像存储

本文详细介绍了海康威视工业相机SDK二次开发实战,包括多相机同步采集与图像存储的优化方案。通过MVS软件搭建开发环境,实现硬件与软件触发同步采集,并提供高效的图像存储管理技巧,帮助开发者提升工业视觉项目的效率与稳定性。

weixin_29168813的博客 665

多目标跟踪中使用trackeval评估dancetrack运行结果

trackeval使用

qq_46144849的博客 1782

进程静音,暂停,加速的实现

工作需要实现上述3个功能,一开始想到的是直接把进程挂起,结果发现进程挂起之后,消息循环也挂掉了.所以此路不通.遂逆了下某游戏盒子的某个dll,发现秘密如下: 静音:xp下Hook几个系统函数:midiStreamOut,waveOutWrite,网上说DirectSoundCreate也得Hook,经测试发现不Hook此函数也可实现xp下的静音.Win7下的静音用IMMDeviceEnumera

yjz1409276的专栏 4104

基于遗传算法的柔性作业车间调度(初始化以及编码策略)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

菜鸡 8593

手机来电翻转静音功能

手机来电翻转静音功能,手机来电铃声响起,通过翻转手机是手机铃声变为静音状态。 下面是在incallUi应用中实现的翻转静音功能只贴了关键代码部分,代码在ProximitySensor.java中实现。 代码中有注释如果需要移植到其它地方可以根据注释移植 操作步骤: 手机屏幕朝上,将手机屏幕由上而下翻转。(可根据需求改变操作) //翻转静音变量声明 begin private stati

zhuxingchong的博客 3707

基础矩阵、本质矩阵、单应矩阵

基础矩阵是一个 3×3 的秩为2的矩阵,用于描述两个不同视图(或称为图像)之间对应点的几何约束。更具体地说,如果你有两幅图像,分别从两个不同的相机或者相机位置拍摄,那么基础矩阵可以用于找到一个图像中的点在另一个图像中的对应点。本质矩阵也是一个 3×3 的秩为2的矩阵,与基础矩阵非常类似。当两个视图(图像)之间的场景是一个平面或者两个视图之间仅有旋转和平移时,可以使用单应矩阵来关联这两个视图。这三个矩阵都是在计算机视觉中广泛应用的基础工具,但它们适用于不同类型的视图和场景。给定两个图像中的一对对应点。

Gloamirror的博客 1327

信道估计之MMSE算法

信道估计之MMSE算法前言MMSE估计的原理总结 前言        前篇分析了LS信道估计算法,也说明了由于没有考虑SNR的影响,所以LS算法不适合在低信噪比的情况下使用。本篇来学习信道估计的另外一种常用的算法–MMSE。        为什么说LS没有考虑噪声大小的情况呢,因为LS算法使用的是实际观测量与估计观测量的误差,这并不能精确的代表估计量的真值与估计值的误

大白的博客 2万+

小智音箱Auto Mute来电时自动静音

本文深入探讨智能音箱来电自动静音功能的设计与实现,涵盖技术原理、系统架构、软硬件协同及用户体验优化,提出基于情境感知的未来扩展方向。

weixin_30789053的博客 946

VMware报错系列:虚拟机配置文件(.vmx)损坏或丢失---修复

虚拟机配置文件(.vmx)损坏或丢失---修复

weixin_54626591的博客 7011

小智音箱自动静音响应电话来电

本文深入解析智能音箱来电自动静音功能的实现原理,涵盖电话状态监听、广播机制、音频焦点管理及云端协同扩展,强调隐私安全与用户体验平衡。

weixin_42124497的博客 825

Open3D(C++) 读取、可视化并保存点云【2025最新版】

博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 4616

传感器应用案例:压力传感器在工业自动化中的应用_(13).压力传感器的数据采集与处理

数据采集系统(Data Acquisition System, DAS)是连接传感器和控制系统的重要桥梁。它包括硬件(如数据采集卡、信号调理器)和软件(如数据采集软件、数据处理算法)两部分。信号调理:将传感器输出的模拟信号转换为适合AD转换的信号。AD转换:将模拟信号转换为数字信号。数据传输:将数字信号传输到控制系统或上位机。存储:将采集的数据存储在本地或远程数据库中。实时性:保证数据的实时性和准确性。压力传感器的数据采集与处理是工业自动化中不可或缺的一部分。

2401_87715305的博客 1620

Android自定义来电界面实现

场景需求 在手机来电时,有时不方便接听电话,希望能点触屏幕达到静音的效果,稍候再接听电话。 开发思路 首先得获得手机来电的事件,进而监听屏幕的点击事件,让手机铃声静音 困难点 手机来电事件,是系统中优先级最高的,第三方的应用无法更改系统自带的来电功能。 解决办法 查阅了网上一些通用的做法,下载了一些来电显示的应用,通过观察发现,目前大家的做法普遍是: 首先后台始终有一服务...

Z1001001的博客 1723

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

黑名单来电自动静音(PhoneStateListener与AudioManager)

这个范例主要说明,只要输入电话,系统自动帮助过滤电话,在这里,转换铃声模式使用setRingerMode做设置,正常模式为:RINGER_MODE_NORMAL, 而静音为RINGER_MODE_SILENT,震动模式为RINGER_MODE_VIBRATE. import android.app.Activity; import android.content.Co

lvhengli222的专栏 1510

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android实现来电和去电的监听(附带源码)

Android实现来电和去电的监听(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1223

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

让Android手机黑名单来电实现自动静音

当呼叫者属于黑名单列表 自动静音 [代码 步骤] 本着先易后难的原则 先介绍黑名单列表的制作:其会列出所有联系人列表 以CheckBox形式 可以添加/移除 黑名单 1. 定义所需布局:list.xml Java代码    http://schemas.android.com/apk/res/android"      android:orientation="vertical

xlcs2012的专栏 3425

AudioManager黑名单来电自动静音

添加权限   &lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&gt;       private TextView mTextView01; private TextView mTextView03; private EditText mEditText1; publ...

电波小子,在沉默中反思 182

android L平台增加来电翻转静音菜单、功能

来电翻转静音原理:监听phone状态,来电时启动一个服务监听Gsensor 当检测到手机从向上翻转到向下(Z值5以上翻到到-5以下),设置ringtone音量为0 来电接通或挂断后恢复ringtone音量

jimbo的专栏 1934

Android Input输入系统之六:来电铃声时按键key的处理流程

相关参考: 《Android按键Input KeyEvent》 《Android Input输入系统之一:KeyEvent事件监听》 《Android Input输入系统之二:KeyEvent注入事件及事件分发流程》 《Android Input输入系统之三:KeyEvent事件分发和上层应用层对事件的接收》 《Android Input输入系统之四:KeyEvent事件中的InputChanne...

Sunxiaolin2016的博客 620

android settings模块中添加来电反转静音功能

最近由于项目需要,添加来点反转静音功能,先将代码写出来,往大家给点意见 1.首先是一个主要的服务类,service package com.create.wxb; import java.util.List; import android.app.Service; import android.content.Context; import android.cont

duer8797的专栏 1392

Android实现手机静音(附带源码)

Android实现手机静音(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1845
上一篇: 监视来去电情况
下一篇: 使用AIDL挂断电话
Android人生
博客等级 码龄14年 14粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值