看到网络上的牛人对手机通话的控制,有感而发,希望搞个能在手机接到电话时可以给对方播放一段音频。看了下源码,发现如果仅仅通过 ITelephony.aidl的一些API似乎没有这个功能,难道要把这块的代码给扣出来进行修改吗,就是RIL.java那块。系统似乎没有给出这方 面的功能API啊。
RIL.java
public void
acceptCall (Message result) {
RILRequest rr
= RILRequest.obtain(RIL_REQUEST_ANSWER, result);
if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));
send(rr);
}
处理电话事件:
public void
handleMessage(Message msg) {
RILRequest rr = (RILRequest)(msg.obj);
RILRequest req = null;
switch (msg.what) {
case EVENT_SEND:
/**
* mRequestMessagePending++ already happened for every
* EVENT_SEND, thus we must make sure
* mRequestMessagePending-- happens once and only once
*/
boolean alreadySubtracted = false;
try {
LocalSocket s;
s = mSocket;
if (s == null) {
rr.onError(RADIO_NOT_AVAILABLE, null);
rr.release();
mRequestMessagesPending--;
alreadySubtracted = true;
return;
}
synchronized (mRequestsList) {
mRequestsList.add(rr);
}
mRequestMessagesPending--;
alreadySubtracted = true;
byte[] data;
data = rr.mp.marshall();
rr.mp.recycle();
rr.mp = null;
if (data.length > RIL_MAX_COMMAND_BYTES) {
throw new RuntimeException(
"Parcel larger than max bytes allowed! "
+ data.length);
}
// parcel length in big endian
dataLength[0] = dataLength[1] = 0;
dataLength[2] = (byte)((data.length >> 8) & 0xff);
dataLength[3] = (byte)((data.length) & 0xff);
//Log.v(LOG_TAG, "writing packet: " + data.length + " bytes");
s.getOutputStream().write(dataLength);
s.getOutputStream().write(data);
} catch (IOException ex) {
Log.e(LOG_TAG, "IOException", ex);
req = findAndRemoveRequestFromList(rr.mSerial);
// make sure this request has not already been handled,
// eg, if RILReceiver cleared the list.
if (req != null || !alreadySubtracted) {
rr.onError(RADIO_NOT_AVAILABLE, null);
rr.release();
}
} catch (RuntimeException exc) {
Log.e(LOG_TAG, "Uncaught exception ", exc);
req = findAndRemoveRequestFromList(rr.mSerial);
// make sure this request has not already been handled,
// eg, if RILReceiver cleared the list.
if (req != null || !alreadySubtracted) {
rr.onError(GENERIC_FAILURE, null);
rr.release();
}
}
if (!alreadySubtracted) {
mRequestMessagesPending--;
}
break;
case EVENT_WAKE_LOCK_TIMEOUT:
// Haven't heard back from the last request. Assume we're
// not getting a response and release the wake lock.
// TODO should we clean up mRequestList and mRequestPending
synchronized (mWakeLock) {
if (mWakeLock.isHeld()) {
if (RILJ_LOGD) {
synchronized (mRequestsList) {
int count = mRequestsList.size();
Log.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " +
" mReqPending=" + mRequestMessagesPending +
" mRequestList=" + count);
for (int i = 0; i < count; i++) {
rr = mRequestsList.get(i);
Log.d(LOG_TAG, i + ": [" + rr.mSerial + "] " +
requestToString(rr.mRequest));
}
}
}
mWakeLock.release();
}
}
break;
}
}
}
图
特附一个简单的demo,根据感应加速度可以接电话的代码,甩下就可以接电话,环境2.0.
有没搞过这块的,交流下。
发表评论
文章已被作者锁定,不允许评论。
-
ScrollView嵌套Edittext
2015-04-08 18:26 842scrollview 中加入多个控件如 edittext 后会 ... -
android 布局式跑马灯,非TextView
2015-04-07 10:51 494如题,简单的实现了跑马灯效果,把Scroll.java放入an ... -
Android圆角图片
2015-03-11 17:44 693my_wane_shape.xml 快速圆角背景边框实现, ... -
SQLite多线程读写实践及常见问题总结
2015-02-13 17:06 944基本操作的部分,大家都很熟悉了,这里根据个人切身经验,总结了一 ... -
android加速度感应
2015-01-19 10:25 14731.android测量数据 (1)android设备坐标系 ... -
MatrixCursor的使用
2015-01-19 09:49 1045ContentProvider对外共享数据的时候的query( ... -
Android 获取控件的宽高高级用法(MeasureSpec)
2015-01-15 14:23 998一个MeasureSpec封装了父 ... -
Android_GridView_GridView概述及实现水平滑动
2015-01-14 17:14 11511.GridView简介 GridView是ViewGroup ... -
Android MMS,SMS之常用Uri
2014-09-19 16:32 1323Android MMS,SMS之常用Uri Android ... -
android短彩信查询以及MMS表结构
2014-09-19 16:31 2236android短信的数据库的Uri是不公开的, 读取起来时灰常 ... -
使用Android自带DownloadManager下载文件
2014-08-19 11:04 767SDK在API Level 9中加入了DownloadMan ... -
android textview里链接点击事件,增加图片
2014-08-07 16:45 1144Android系统默认给TextView插入图片提供了三种方 ... -
android Home事件汇总
2014-07-18 11:30 1004方法一:android 4.0以后无法通过更改页面的类型来 ... -
Android风格与主题(style and theme)
2014-07-16 16:35 672Android xml风格和主题文 ... -
Android中播放声音的两种方法
2014-05-30 15:09 668在Android中,音频、视 ... -
android 杀进程方法
2014-05-26 17:43 1007关闭应用的方法: 1.System.exit(0); ... -
android service 生命周期
2014-04-21 16:16 787有了 Service 类我们如何启动他呢,有两种方法: ... -
解决ADB端口被占用的问题
2014-04-21 16:14 832究其源就是adb server没启动 经过分析整理如下: ... -
输入法隐藏打开
2013-12-23 14:24 817首次进入activity,如果有个edittex ... -
google经纬度互转
2013-07-11 16:34 935https://developers.google.com/ ...
相关推荐
首先,我们要理解MTK手机通话音量小的原因可能涉及到多个方面。这可能是由于硬件设计上的限制,比如扬声器功率不足或麦克风拾音效果不佳;也可能是软件层面的问题,如音频驱动程序不兼容或设置不当。此外,系统固件...
以下是对"Android 手机通话录音demo"的详细解析: 1. **权限管理**:首先,为了进行通话录音,你需要在AndroidManifest.xml文件中添加相应的权限声明。关键的两个权限是`RECORD_AUDIO`和`READ_PHONE_STATE`。`...
(2)终端:用户手机必须支持VoLTE或5G,手机卡必须开通VoLTE或5G服务,且实际测试前还需在手机设置中启用“VoLTE高清通话”功能; (3)企业:线路接入设备由传统语音网关更换为支持video的vidisit的会话边界控制器...
《C++手机通话记录管理系统详解》 在信息技术领域,C++是一种广泛应用的编程语言,以其高效、灵活性和面向对象的特性而备受青睐。本篇将深入探讨如何利用C++与SQL Server数据库技术来构建一个手机通话记录管理系统...
6. 音频处理:降噪、回声消除和自动增益控制等技术,提升通话质量。 7. 网络适应性:根据网络状况动态调整视频分辨率和帧率,保证在不同网络环境下的流畅体验。 在GIS(地理信息系统)领域,地图信息定位技术与...
在本课程设计中,我们关注的是“手机通话计时器”的设计,这是一项结合了数字电子(数电)和模拟电子(模电)知识的实践项目。计时器需具备暂停、继续、停止以及清零等功能,并且在设计中使用了Multisim软件进行仿真...
HSP允许蓝牙设备作为耳机或扬声器,接收来自手机的音频流,同时提供基本的控制功能,如挂断和接听电话。虽然HSP主要关注音频传输,某些高级设备可以通过扩展实现通话记录的访问,但通常这并不常见,因为通话记录涉及...
本文将详细探讨两个安卓手机通话录音软件:太阳通话录音(taiyangtonghualuyin) V1.2_mumayi_1569c 和 SunUltimate V1.2.1。 首先,我们来看“太阳通话录音”应用。该软件的版本号为V1.2,由mumayi开发者团队提供,...
《电信设备-通话控制方法、装置及存储介质和移动终端》这一资料主要涵盖了现代通信技术中的关键要素,包括通话控制、设备实现、存储方案以及移动终端应用。在深入理解这一主题之前,我们需要先对以下几个核心概念...
《电信设备-通话控制方法、移动终端及计算机可读存储介质》这个压缩包文件主要涵盖了通信领域中的核心技术,包括通话控制、移动设备的功能实现以及计算机可读存储介质的应用。以下是对这些主题的详细阐述: 一、...
总的来说,这些内容涵盖了手机通话录音的基本操作和手机作为Modem拨号上网的技术实现,对于那些需要这些功能的用户来说,提供了实用的操作指南。无论是为了记录重要通话还是在没有固定网络的情况下实现移动上网,...
《模拟手机通话管理系统:MFC与SQL Server的深度结合》 在信息技术日益发达的今天,模拟手机通话管理系统作为通信技术与计算机科学的结合体,扮演着至关重要的角色。本项目运用了Microsoft Foundation Classes (MFC...
MediaRecorder类的静态方法`createFromPath()`可以用来创建MediaPlayer实例,然后通过start()和stop()方法控制播放。 5. **界面设计与交互**: 为了提供良好的用户体验,应用应包含清晰的录音、暂停、停止、回放和...
在移动通信技术日新月异的今天,手机已经不再仅仅是通话工具,而是成为了日常生活、工作中的多功能助手。尤其是在办公领域,利用手机进行远程控制电脑的功能逐渐受到人们的青睐。诺基亚作为曾经的手机巨头,在这方面...
在2018年的技术环境下,手机远程控制已经成为一种实用且必要的技能,尤其对于需要跨设备操作或远程协助的人来说。本教程将详细讲解如何实现手机的远程控制,并提供了一个具体的安卓手机远程控制方案。 首先,我们...
《电信设备:无线移动终端的可拆卸式用户识别卡和通话控制方法》 在现代通信技术中,无线移动终端,如智能手机和平板电脑,已经成为我们日常生活和工作中不可或缺的一部分。这些设备的核心部分之一就是用户识别卡...
5. 当群通话建立起来后,屏幕上方会出现通话的相关控制选项。找到并点击“发言管理”按钮,这通常是显示为一个麦克风图案的图标。 6. 进入发言管理界面,你会看到所有参与群通话的成员列表。每个成员的右侧会有一个...
本话题将详细探讨“手机通话录音器”这一应用在4.4之前版本的功能、使用方法以及相关技术知识。 首先,我们要理解的是录音机应用的基本原理。录音机应用通常利用手机的麦克风捕捉声音信号,并将其转化为数字音频...
7. **功能特性**:除了基本的屏幕镜像和控制外,高级功能可能包括文件传输、语音或视频通话、多用户同时访问等。 8. **设置与配置**:在电脑端,用户需要按照软件提供的指南安装并配置服务器组件,可能包括设置访问...