关于android电话监听显示(类似360通话)

andriod 自定义来电界面功能实现的一些思考。 原创博文,转载请注明出处:        由于近期所做一个项目需要做类似于“来电秀”的功能,所以上网搜索了一些相关资料,加上自己的一些想法,做了一个Demo。一下是我对该功能实现的一些想法,不对的地方欢迎各位指出。最后我会给出Demo 的源代码。        首先,Android系统的手机在监听到有电话呼入的时候会向系统发送电话状态改变的广播(android.intent.act 阅读详情

自己琢磨了很久,也查了很多资料。


这是资源下载地址:点击打开链接,大家可以去下载


首先我没有使用BroadcastReceiver,因为在使用广播监听来去点的时候手机会发送多次广播,所以接受并处理会非常麻烦与危险。虽然可以解决来电,但是去电的时候发现并没有相关api,因为android将其隐藏了,CallManager应该是这个类,虽然没有试过。但是在去电结束后又会被来电的监听器接受到挂断的信息,于是又是一个问题。所以我抛弃了BroadcastReceiver来监听来去电的方法。


BroadcastReceiver不行,那就使用Service来处理。


TelephonyManager tm = (TelephonyManager) getSystemService(Service.TELEPHONY_SERVICE);

PhoneStateListener customPhoneListener = new Listener(this);

// 监听跳转
tm.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);

这是部分代码,放在 Service的onCreate()的方法中运行,因为该方法在创建Service的时候只会运行一次。


public class Listener extends PhoneStateListener implements OnTouchListener {

	private Context context;
	
	// 自定义窗口
	private View view;
	private WindowManager windowManager;

	public Listener(Context context2) {
		this.context = context2;
	}

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

		switch (state) {
		
		// 来电监听
		case TelephonyManager.CALL_STATE_RINGING:

			createWindow(incomingNumber);
			
			break;

		// 来电/去电挂断
		case TelephonyManager.CALL_STATE_IDLE:
			
			
			if (view != null && view.isShown()) {
				
				closeWindow();
				
			}

			break;

		// 来电通话或者去电等待+通话
		case TelephonyManager.CALL_STATE_OFFHOOK:
			if (view != null && view.isShown()) {
				
				closeWindow();
				
			} else {
				
				createWindow(incomingNumber);
				
			}

			break;
		}
		super.onCallStateChanged(state, incomingNumber);
	}

	// 窗口点击事件
	@Override
	public boolean onTouch(View v, MotionEvent event) {

		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			if (view != null && view.isShown()) {
				windowManager.removeView(view);
			}
			break;
		}

		return false;
	}
	
	// 创建窗口
	public void createWindow(String phoneNumber) {
		// 建立新窗口来显示对应信息
		windowManager = (WindowManager) context.getApplicationContext()
				.getSystemService(Context.WINDOW_SERVICE);

		// 定义窗口布局
		WindowManager.LayoutParams params = new WindowManager.LayoutParams();

		view = LayoutInflater.from(context).inflate(
				R.layout.activity_call, null);
		TextView numberTextView = (TextView) view
				.findViewById(R.id.phone_number);
		TextView numberAddress = (TextView) view
				.findViewById(R.id.telephone_address);
		TextView numberDepartment = (TextView) view
				.findViewById(R.id.phone_department);
		TextView numberJob = (TextView) view
				.findViewById(R.id.phone_job);
		
		// 设置窗口在所有窗口之上
		params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
				| WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;

		params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;

		// 图片置顶
		params.gravity = Gravity.LEFT | Gravity.TOP;
		params.x = 0;
		params.y = 0;

		params.height = 1000;

		// 得到电话号码
		numberTextView.setText(phoneNumber);

		// 查询电话号码,并得到联系人姓名
//		numberAddress.setText(PhoneInformation.getPhoneName(context, phoneNumber));
		
		// 查询自定义数据库
		UserInfo userInfo = DBUtils.getInstance(context).selectInfo(phoneNumber);
		if (userInfo != null) {
			numberAddress.setText(userInfo.getName());
			numberDepartment.setText(userInfo.getDepartment());
			numberJob.setText(userInfo.getJob());
		}
		
		// 给当前view增加监听事件
		view.setOnTouchListener(this);

		// 添加自定义图片
		windowManager.addView(view, params);
	}
	
	
	// 关闭窗口
	public void closeWindow() {
		windowManager.removeView(view);
	}

}

这是电话监听器的所有代码在这里我使用了WindowManager来显示一个小窗口,窗口的代码也在上面注释了。在这里用了代码复用也是很规范(自恋)。


state是电话的状态,incomingNumber是电话号码。如果有问题可以打Log日志自己慢慢打电话试一试。


其中有几段代码是查询联系人相关信息的稍后再贴。


最后不能忘了要在清单文件中注册,增加权限,以及在主函数中打开/关闭Service。

Android中使用服务实现电话监听 电话监听是指当手机接收到来电或拨打电话时,我们可以通过监听电话状态的变化来执行相应的操作,例如记录来电信息、拦截电话等。接下来,我们可以在其他组件(例如Activity)中启动服务,并开始监听电话状态。的服务类,并在其中注册电话状态监听器,我们可以监听手机的来电、响铃和接听状态,并执行相应的操作。需要注意的是,在使用电话监听功能时,需要在AndroidManifest.xml文件中声明相应的权限,例如读取电话状态的权限(中检查了读取电话状态的权限,并在需要时请求相应的权限。方法中,我们取消电话状态监听。 阅读详情

相关推荐

android 来电去电 通话 弹出对话框显示号码信息

1.可以直接运行测试 2.android版本2.3.3 3.完美解决来电去电的事件. 4.获取到号码后弹出window 5.挂断后window消失

Android基础之电话监听

简单监听来电的使用(使用service).

jasonvzhao的博客 521

安卓手机后台监控地理位置,并实时发送到服务端,服务端实时在地图上显示手机的地理位置和路线

安卓手机后台监控地理位置,并实时发送到服务端,服务端实时在地图上显示手机的地理位置和路线,附有安卓端和服务端源码

android音乐播放器监听器,android 音乐播放器电话监听

正好用到整理下首先 添加 权限电话监听/**** @author xiaoma* 电话监听器类*/private class MobliePhoneStateListener extends PhoneStateListener {@Overridepublic void onCallStateChanged(int state, String incomingNumber) {switch (s...

weixin_42510360的博客 356

自学ROS完成智能小车路径规划(一)--配置功能包

此系列文章记录本人学习ros的过程,将会尽可能详细以便自己能够看懂 参考系列:古月居老师,优快云,ROS tutorials,科大讯飞智能车竞赛线上赛 本文章的目标: 比较全局路径规划算法中A*算法与Dijkstra算法在该地图场景下的规划与运行时间 比较局部路径规划算法中DWA算法与TEB算法在该地图场景下的规划与运行时间 在同等参数条件下选择出各自适合的算法进行融合,经过比较,我将选择dijkstra算法作为全局路径规划算法,TEB算法为局部路径规划算法 第一步,按照科大讯飞的教程配置文件 科大讯

weixin_42621524的博客 9366

基于深度学习的图像去雨(Opencv,Pytorch,Cnn)

最近做了一个图像去雨项目,使用的语言为Python,深度学习框架为Pytorch。去雨效果不错,具体请看效果视频!图像去雨(GAN,Opencv,Pytorch)

Czqqwer的博客 2617

Android监听消息(二)——电话及短信监听

学更好的别人,做更好的自己。——《微卡智享》本文长度为2747字,预计阅读6分钟前言前面一篇《Android监听消息(一)——应用消息捕获》我们使用NotificationListenerService实现了应用的消息监听,但是电话和短信是接收不到的,所以这一篇我们就来解决怎么监听电话及短信,电话主要就是在响铃时发送来电人消息,短信的话是捕获到消息内容直接发送出来。微卡智享实现思路在Android...

Vaccae的博客 5619

【工具使用】Keil常用的调试操作整理介绍

2、当选择了非0级优化时,调试可能会变得困难,具体表现在断点调试。该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的置。:如果是在C语言窗口中,则是按单条语句执行,与单步调试不同的是,遇到函数不会进入函数内部,而是直接全速运行函数,并跳到下一条语句。但我的Keil软件中无法显示这个视图,并且通过修改系统试图,调试时,点击打开系统视图发生了闪退的现象,目前能想到的原因是:重新安装Keil,安装最新版本。

MEYOU_Cc 不吃香菜! 1万+

android 监听电话呼出,android 呼出电话的监听(去电监听)

android 呼出电话的监听(去电监听)权限:通过接收呼出电话的广播来实现定义广播类package com.zhouzijing.android.demo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.tele...

weixin_36080474的博客 484

SWAT模型参数太多搞不定?一篇讲清如何用SWAT-CUP筛选关键敏感参数(含结果图解读)

本文详细解析了如何使用SWAT-CUP进行参数敏感性分析,帮助水文模型初学者从上百个参数中筛选出关键敏感参数。通过实际案例和结果图解读,介绍了敏感性分析的核心价值、SWAT-CUP结果界面解读方法以及参数筛选的四步实战法,显著提升模型调试效率。文章还提供了典型问题排查手册,解决敏感参数与文献不一致、率定后模型变差等常见问题。

weixin_30385925的博客 322

从零搭建基于OpenSpec的现代化UI自动化测试框架实战指南

UI自动化测试是软件质量保障的关键环节,其核心在于通过脚本模拟用户操作,对Web应用界面进行功能验证。其原理在于利用浏览器驱动工具(如Selenium、Playwright)提供的API,实现对页面元素的定位、交互与断言。一个设计良好的自动化框架能显著提升测试脚本的可维护性、可读性和执行稳定性,从而在持续集成、回归测试等场景中发挥巨大价值。本文聚焦于如何构建一个现代化的UI测试框架,通过整合OpenSpec架构规范、Pytest测试引擎与Playwright浏览器自动化工具,形成清晰的页面对象模型(POM)

weixin_28836989的博客 286

仿360android打电话遮挡号码与通话后记录删除

先说下思路   首先点击拨号   进入一个是否拨通界面,选择确认后,调用系统直接拨打电话,然后判断拨打电话的状态,如果是拨通的状态下   用窗口管理器写一个遮挡物  遮挡住    如果不是拨通状态将遮挡物去掉,去掉完成当前activity,在onactivityforresult中执行查找通话记录进行删除。好了   开始上代码。        主界面mainactivity.class    

u012303938的专栏 1826

爆肝5万字❤️Open3D 点云数据处理基础(Python版)

本文为Open3D 点云数据处理基础教程(Python版),小白也能轻松上手!还等什么呢,学起来!

孙悟空 13万+

android 电话通话质量测试,安卓和iPhone通话质量变差,竟是这个功能在捣鬼!

原标题:安卓和iPhone通话质量变差,竟是这个功能在捣鬼! 前几天,眯姐看到今日头条有这样一篇教程——“如果你的手机通话信号差,快去打开这个功能(指VoLTE)”,然后就能解决手机通话信号差的问题。 当时眯姐也信了!哪晓得看到评论区,发现剧情360度大反转!用过VoLTE的用户,几乎无一例外都在吐槽通话质量差,言论呈现“一边倒”的趋势。 部分网友实测:网友81298696:开了打电话说不到几分钟...

weixin_39761696的博客 1421

【2.12】基于FPGA的Gardner环开发5——闭环反馈,获得完整gardner环

本文介绍了Gardner定时恢复算法在FPGA上的实现过程。首先回顾MATLAB程序中Gardner环的闭环反馈机制,重点分析了环路滤波器输出变量w的处理流程。随后详细阐述了FPGA实现的Verilog设计步骤,包括三个核心模块:1)y_temp=q0-w计算模块,实现反馈变量处理;2)uk=2*q0计算模块,生成插值系数;3)插值计算模块,根据使能信号执行线性插值运算。设计通过引入使能信号控制插值更新时机,采用定点数运算处理数据,并包含负数保护机制确保计算稳定性。文章提供了完整的Verilog代码实现,展

fpga/matlab/simulink算法仿真工程 137

SAP_PP模块跑完 MRP,MD04 里却看不到“计划订单”?排查这 3 个最容易被忽略的主数据参数

MRP 是 SAP 逻辑最严密的模块之一,它绝不会随机罢工。当 MD04 里看不到计划订单时,请不要怀疑系统的计算能力。99% 的情况,都是因为我们给系统下达了矛盾的指令:一边告诉它“我有需求”,一边却通过主数据告诉它“不要计划”、“不要触发”或者“我是冻结的”。掌握这 3 个排查点,你就能在 5 分钟内解决大部分“MRP 失灵”的悬案,成为用户眼中的“系统神医”。

我小时候很黑的博客 604

pc 电脑web浏览器js通过usb控制安卓手机打电话挂电话(补充效果录像图)

pc 电脑web浏览器js通过usb控制安卓手机打电话挂电话 效果预览 分析与介绍 基于js/javascript通过usb数据线控制安卓手机打电话拔号或挂断的需求即浏览器通过usb数据线控制安卓手机打电话拔号或挂断的一键拔号。 技术构架: PC电脑(google浏览器,firefox浏览器,360浏览器) 的js/javascripts通过usb数据线连接安卓手机...

恋一个人,爱一座城 9330

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

360防窃听比上次写的更简洁方便使用

思路:点击按钮,开启一个服务,在服务里直接调用打电话“10086”,在服务中监听电话状态,通话状态用遮挡物遮住,挂断则消失并停止该服务,如果想盖住360的防窃听,可以延迟0.8s在把遮盖物显示出来,就可以遮住。 demo下载地址     代码如下:http://download.youkuaiyun.com/detail/u012303938/8624721     MainAcitivy.class

u012303938的专栏 1334

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android中来电号码归属地的显示

昨日shixia360手机卫士有个来电显示归属地的功能,具体的显示大概就是

Graypn 2862

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【案例分享】菊风云 | Watch!儿童手表实现视频通话,竟如此简单!

根据IDC《中国可穿戴设备市场季度跟踪报告,2018年第四季度》,报告显示,2018年儿童手表出货量为2167万台,同比增长16.6%。而中国市场在线调研:2017-2023年中国儿童智能手表行业现状调研分析及发展趋势预测报告的预测结果指出,到2020年,中国儿童智能手表的出货量将达到5000万台。由此可以看出,儿童手表的市场规模将进一步扩大,并且儿童手表也越来越受到家长们的青睐。 对于儿童安全问...

weixin_44669196的博客 935

360项目-06

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34218890的博客 90

番外篇-避坑!APP上架避坑踩雷权限和功能!非常重要的坑—-安卓Android开发附带uniapp避坑-苹果APP上架非常容易忽略掉的权限的坑-严重的敏感权限的坑-优雅草央千澈提醒您避坑

那是因为非法的app实在是太多了,各种诈骗的,盗取信息的,监听的,偷相册的,远程控制的各种诈骗软件层出不穷,加上安卓开源问题,因此government对app合法性的管控所谓是高压的,目前不仅有tx管家,360等会自动检测(无需你安装,只要你打包完),有个东西叫做“网络空间测绘”,360和tx管家的自动化检测就已经给你的应用钉上标签了。敏感权限:也叫危险权限,运行时权限,跟普通权限相反,一旦某个应该获取了该类权限,用户的隐私数据就面临被泄露篡改的风险。大家是不是有这样的疑问,APP还没发布,就直接报毒!

一颗优雅草科技-央千澈的优快云博客~只想无穷无尽的学习~作息早8-晚8 1334

android 手机PC客户端

豌豆荚 360 91 刷机精灵 应用助手 深度OS 甜椒刷机 金山卫士 发现有个刷机精灵的授权管理工具挺不错的,手机大概装了68款软件 有48款需要获取手机识别码,包括IMEI、本机号码等。 有30款软件有权获取定位信息 有7款软件有权访问短信和发送短信 有9款软件有拨打,挂断,监听通话、访问通话记录等 后台还有N多服务不定什么时候触发就运行了 这就是手机写照

DBC的空间存储 359

盘点2015年度10大安卓手机系统级病毒

随着移动端Android系统安全软件对APP应用层查杀能力趋于成熟以及Google对Android安全性的重视,病毒与反病毒的主战场已逐渐从APP层扩展到Linux系统层。相对于APP应用层病毒,系统底层病毒更容易隐藏自己,也更容易对抗安全软件,其危害性更大,更不容易查杀。而且病毒作者也开始把PC端的病毒自我保护手段移植到移动端上,在手机端大量使用了免...

weixin_34217711的博客 875

360权限整理

;联网权限     读写sd卡权限         读取

cange521的专栏 612

警惕:冒充Google+ 让手机变成的恶意软件

继旁路监听录制外拨电话,并将录音传送到某个远程网站的Android恶意程序ANDROIDOS_NICKISPY.A和ANDROIDOS_NICKISPY.B之后,趋势科技又发现了另一个与ANDROIDOS_NICKISPY.A程序码结构相同的恶意程序ANDROIDOS_NICKISPY.C,除了少许不同之外,此程序行为上也和前者颇为类似。包含拦截短信、使用手机的GPS定位和窃取邮件等敏感资料,技高...

yzd 205
上一篇: 关于百度地图和Android的配置
下一篇: 接上android来去电显示并增添自定义数据库(类似360通话)
羊羊爱代码
博客等级 码龄11年 8粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值