简单的说下实现来电秀的大概原理流程:首先通过监听来电状态,通过拦截来电然后在窗口弹出一层系统级别的弹窗,这层弹窗即是来电秀。
先来两张效果图:
下面来说下实现,因为商用的原因,不能直接贴代码,所以在这里,会贴一些比较核心的代码,大概分为五个步骤:
第一:监听来电状态
/**
* 电话状态监听(来电或去电)
*
* @author Jenly
*
*/
public class PhoneStateReceiver extends BroadcastReceiver {
public static final String PHONE_STATE = "android.intent.action.PHONE_STATE";
@Override
public void onReceive(Context context, Intent intent) {
LogUtils.d(intent.getAction());
context.startService(new Intent(context,CallShowService.class));
}
}
这是一个广播接收器,用来接收手机来电状态的,把接收到的状态发送给CallShowService服务来做相应的处理
第二:通过手机状态来做不同的处理
CallShowService.class是一个来电秀服务(CallShowService extends Service),里面的主要核心代码是通过监听来电状态来做出相应的处理,如:弹屏