看到网络上的牛人对手机通话的控制,有感而发,希望搞个能在手机接到电话时可以给对方播放一段音频。看了下源码,发现如果仅仅通过 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.
有没搞过这块的,交流下。
手机通话控制
- 博客分类:
- Android
发表评论
文章已被作者锁定,不允许评论。
-
ScrollView嵌套Edittext
2015-04-08 18:26 798scrollview 中加入多个控件如 edittext 后会 ... -
android 布局式跑马灯,非TextView
2015-04-07 10:51 452如题,简单的实现了跑马灯效果,把Scroll.java放入an ... -
Android圆角图片
2015-03-11 17:44 651my_wane_shape.xml 快速圆角背景边框实现, ... -
SQLite多线程读写实践及常见问题总结
2015-02-13 17:06 905基本操作的部分,大家都很熟悉了,这里根据个人切身经验,总结了一 ... -
android加速度感应
2015-01-19 10:25 14371.android测量数据 (1)android设备坐标系 ... -
MatrixCursor的使用
2015-01-19 09:49 1015ContentProvider对外共享数据的时候的query( ... -
Android 获取控件的宽高高级用法(MeasureSpec)
2015-01-15 14:23 941一个MeasureSpec封装了父 ... -
Android_GridView_GridView概述及实现水平滑动
2015-01-14 17:14 11211.GridView简介 GridView是ViewGroup ... -
Android MMS,SMS之常用Uri
2014-09-19 16:32 1295Android MMS,SMS之常用Uri Android ... -
android短彩信查询以及MMS表结构
2014-09-19 16:31 2111android短信的数据库的Uri是不公开的, 读取起来时灰常 ... -
使用Android自带DownloadManager下载文件
2014-08-19 11:04 738SDK在API Level 9中加入了DownloadMan ... -
android textview里链接点击事件,增加图片
2014-08-07 16:45 1104Android系统默认给TextView插入图片提供了三种方 ... -
android Home事件汇总
2014-07-18 11:30 969方法一:android 4.0以后无法通过更改页面的类型来 ... -
Android风格与主题(style and theme)
2014-07-16 16:35 640Android xml风格和主题文 ... -
Android中播放声音的两种方法
2014-05-30 15:09 611在Android中,音频、视 ... -
android 杀进程方法
2014-05-26 17:43 977关闭应用的方法: 1.System.exit(0); ... -
android service 生命周期
2014-04-21 16:16 743有了 Service 类我们如何启动他呢,有两种方法: ... -
解决ADB端口被占用的问题
2014-04-21 16:14 789究其源就是adb server没启动 经过分析整理如下: ... -
输入法隐藏打开
2013-12-23 14:24 772首次进入activity,如果有个edittex ... -
google经纬度互转
2013-07-11 16:34 899https://developers.google.com/ ...
相关推荐
(2)终端:用户手机必须支持VoLTE或5G,手机卡必须开通VoLTE或5G服务,且实际测试前还需在手机设置中启用“VoLTE高清通话”功能; (3)企业:线路接入设备由传统语音网关更换为支持video的vidisit的会话边界控制器...
安桌手机音量控制软件(Audio Control Pro)是一款制作相当精良且功能强大的音量控制应用程序,拥有多种尺寸的窗口小部件,还具有四种自定义铃声音量的情景模式。不单止可以自定义个性化的例外规则情景模式,还可以...
可以明显感觉到手机电池的利用时间 感觉到通话质量的好坏 2、功率控制从网络指标来说: 功率控制可以减少网络的内部干扰 从下行来说: 主要是频率资源不够引起的带内下行干扰 从上行来说: 主要是由于高话务量...
◆ 软件功能: ◆ - 自动或手动记录电话; ◆ - 轻松制作语音备忘录; ◆ - 直观的命名剪辑,其中包括电话号码或联系人姓名; ◆ - 支持桌面部件,能够一键...◆ - 支持通过短信远程控制录音; ◆ - 支持多种音频格式;
今天说下用python结合adb命令去实现安卓手机端的通话压力测试。 #操作前先在设置里打开power键可以结束通话按钮,否则会导致代码报错 from time import sleep import os def test_call(number1,number2,number3,...
Call Recorder-Total Recall是一款对手机通话进行双向录音的应用。这是一款功能强大而实用的通话辅助工具,它不仅是一个强大的呼叫记录软件,还能够进行简单的语音记录。通过Call Recorder-Total Recall,你能够记录...
例如,用AT+CMGS命令发送短消息时,如果此时正好手机处于振铃或通话状态,就会返回一个"+CMS ERROR"。所以,应当在发送命令后,检测手机的响应,失败后重发。而且,因为只有一个通信端口,发送和接收不可能同时进行...
有了手机通话变得越来越方便,世界变得越来越小;有了手机你在哪里别人都可以找到你,与你通话;有了手机你不用坐在家里等别人的电话,在外面照样交流。手机让我们的联系更简单,通话更方便,我们的交流需要也得到了更...
测试WCDMA手机 的 开环功率控制 测试手机的开环功率 根据34.121 / 5.5.2 Transmit On/Off Timemask 要测试哪个RACH前导? 规范定义要测试第一个RACH接入试探前导的 “开”功率 “关”功率在第二个接入试探前导之前和...
通过这些方法,全面控制智能手机,在需要时锁定用户,进行后台操纵实时监听用户通话,或通过网络将通话内容上传到智能手机的三种泄密方式全文共4页,当前为第3页。智能手机的三种泄密方式全文共4页,当前为第3页。...
本项目是一个通话录音的例子源码,可以手动控制在接听或拨打电话的时候进行录音操作,(不过我在2.3.7的miui上测试没有效果,不知道是360作梗还是miui自身问题),没有测试4.0以上效果,需要的请自测,在项目编译...
由于是开源软件,需要版本控制的服务器,可以安装Subclipse(可以参见官网) 这样就可以将工程import到eclipse中了。 整理一些Android视频通话技术开发的资料: SipDroid是一款开源的SIP/Voip客户端软件,...
该系统由C语言编写, 有软件工程报告及系统代码,
1 Introduction 简介 1.1 Purpose 目的 编写此文档的目的是进一步定制软件开发的细节问题,希望能使... 手机充值功能基本包括:电话用户开户操作、电话用户综合操作、手机话费充值、查询消费历史话费和模拟通话模拟扣费
CCD时序发生器电路 中图分类号:TP391.41 文献标识码:A 文章编号:1671-7597(2012)0220075-01 1 可视手机系统 可视手机是指在普通手机功能的基础上,使通话双方能够看到对方活动图像的 通信方式。其通信过程既...
在控制端的手机上编写短信“+密码+8”发送给被盗手机,可删除被盗手机的所有联系人号码。 二、加密WM6.5文件和文件夹:用PocketLock工具 01 加密文件。启动PocketLock,点击“文件加密”,在浏览器中选择需加密的...
开源视频会议服务器,用于管理多点控制单元(MCU),每个MCU可以处理多达64人参与 5、Flash2IMS 使用Adobe Flash 的SIP/ IMS网关 支持功能 1、SIP ( RFC 3261 3GPP TS 24.229 REL- 9 ) 2、 IPv4 IPv6 TCP UDP...
本文实例讲述了Android编程基于距离传感器控制手机屏幕熄灭的方法。分享给大家供大家参考,具体如下: 在现实生活中,打电话的时候手机挨着自己的头,屏幕会熄灭,这是为了不让自己的头按到什么手机键~ 这个功能可以...
查看详细时显示手机号码、群组、和设定的手机铃声以及同该联系人的通话记录。 (4)在联系人界面,可以查看各群组。点击群组,跳出对应联系人。 (5)有拨号键盘,点击数字将号码显示出来,并可以对手机号码进行删减...