今天要说的主题是来电秀实现里面的电话接听与挂机,在这里我们需要用到ITelephony.aidl相关的一些文件,
如下图:

将如上文件导入到工程,去掉一些不需要的aidl关联,其中PhoneUtils是自己创建的,里面主要写的是调用接听和挂机函数。
public static com.android.internal.telephony.ITelephony getITelephony() throws Exception {
Class clazz = Class.forName("android.os.ServiceManager");
Method getServiceMethod = clazz.getMethod("getService", String.class);
IBinder iBinder = (IBinder) getServiceMethod.invoke(null, Context.TELEPHONY_SERVICE);
ITelephony iTelephony = ITelephony.Stub.asInterface(iBinder);
return ITelephony.Stub.asInterface(iBinder);
}
得到Itelphony后,里面有很多函数可以调用,下面说两个今天的主题,电话的接听和挂机,代码如下:
/**
* 接听电话
* @param context
*/
public static void answerRingingCall(Context context) {
try {
if(VERSION.SDK_INT > VERSION_CODES.GINGERBREAD){// android 2.3以上
try{
Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK));
context.sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED");
}catch(Exception e){
Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK));
context.sendOrderedBroadcast(buttonUp,null);
}
}else{
getITelephony().answerRingingCall();
}
} catch (Exception e) {
LogUtils.e(e);
}
}
/**
* 挂机
*/
public static void endRingingCall() {
try{
getITelephony().endCall();
}catch(Exception e){
LogUtils.e(e);
}
}
在这里要说明一点,因为andoid版本众多,有部分兼容性问题,其中自Android 5.0以后 ,接听电话answerRingingCall就已经失效了,通过模拟耳机按键接听电话也不起作用了,5.0以后接听电话暂时没有更好的处理方式,对于上面的接听实现,5.0以前上面的接听函数还是正常起作用的。
分享到:
相关推荐
【自定义来电秀Demo】是一个Android应用开发项目,旨在展示如何通过编程技术实现完全自定义的来电显示界面。这个Demo的特色在于它不局限于系统默认的来电界面,而是提供了多种方式来显示用户自定义的界面元素,从而...
【Android开发应用源码-来电秀实现.zip】这个压缩包文件是针对Android平台的一个来电秀应用的源码,主要用于帮助开发者学习如何在Android系统中实现个性化的来电显示功能。源码参考的价值在于它提供了实际的代码实现...
【Android来电秀Demo详解】 Android来电秀Demo是一个用于自定义来电显示界面的应用示例,它允许用户根据自己的喜好调整来电窗口的大小和其他视觉效果,从而为手机增添个性化色彩。在这个项目中,开发者将深入学习...
总的来说,实现Android自定义来电秀涉及多个技术点,包括系统API的使用、UI设计、权限管理以及用户交互设计。开发这样一个应用需要扎实的Android编程基础,同时也是一次提升技能和创新思维的好机会。通过不断学习和...
【描述】"简单的android来电管家完整代码,安卓的自定义电话来电秀" 揭示了项目的实际功能。它是一个完整的Android应用代码,用于管理来电显示,允许开发者或用户定制来电时的界面效果,提供个性化体验。这个项目的...
3. **操作系统支持**:不同的操作系统(如Android、iOS等)对来电秀的支持程度不同。有些系统可能需要安装额外的应用程序来实现这一功能,而有些则内置了来电秀支持。 4. **性能优化**:为了确保来电秀在接电话时能...
自定义floatview,无需申明悬浮框权限,利用WindowManager TYPE_TOAST实现全站浮动式按钮,重写touch事件实现任意拖动,将view加入windowmanager层,可以使用控件实现类似来电秀的效果。 MIUI使用TYPE_TOAST也会无效...
- `android.permission.READ_PHONE_STATE`:在某些设备上可能需要,用于处理来电时停止录制。 - `android.permission.RECORD_AUDIO`:录音权限,因为录屏通常也包括音频。 2. **使用MediaRecorder类**:这是安卓...
作者AlexLiuSheng,源码FloatView,自定义floatview,无需申明悬浮框权限,利用WindowManager TYPE_TOAST实现全站浮动式按钮,重写touch事件实现任意拖动,将view加入windowmanager层,可以使用控件实现 类似来电秀的...