4.监听手机收到短信

先是广播接收器

class InnerSmsReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {L.d("sms");//获取短信内容返回的是一个Object数组Object[] objs = (Object[]) intent.getExtras().get("pdus");//遍历数组得到短信内容for (Object obj : objs) {// 超过140字节,会分多条短信发送//把数组元素转换成短信对象SmsMessage sms = SmsMessage.createFromPdu((byte[]) obj);originatingAddress = sms.getOriginatingAddress();messageBody = sms.getMessageBody();L.i("短信号码:" + originatingAddress + ";短信内容:"+ messageBody);//弹框显示showSmsWindow(originatingAddress, messageBody);}}
}

下面注册广播

// 拦截短信, 同等条件下,动态注册更优先获取广播
mReceiver = new InnerSmsReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
filter.setPriority(Integer.MAX_VALUE);
registerReceiver(mReceiver, filter);
自定义广播里有一个监听到短信后弹出一个窗口,下面代码:
private void showSmsWindow(String title, String content) {//窗口管理器wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);//布局参数layoutParams = new WindowManager.LayoutParams();layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;layoutParams.flags =//WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | 不能触摸WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;//WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 沒有焦点//格式layoutParams.format = PixelFormat.TRANSLUCENT;//类型layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;mView = (SessionLinearLayout) View.inflate(getApplicationContext(), R.layout.window_item, null);tv_title = (TextView) mView.findViewById(R.id.tv_title);tv_title.setText("发件人:" + originatingAddress);tv_content = (TextView) mView.findViewById(R.id.tv_content);tv_content.setText("短信内容:" + messageBody);btnSend = (Button) mView.findViewById(R.id.btnSend);btnSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (mView.getParent() != null) {wm.removeView(mView);}//send smsUri uri = Uri.parse("smsto:" + originatingAddress);Intent i = new Intent(Intent.ACTION_SENDTO, uri);i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);i.putExtra("sms_baby", "");startActivity(i);}});wm.addView(mView, layoutParams);//监听返回键mView.setDispatchKeyEventListener(mDispatchKeyEventListener);
}

上面代码里面还有一个按键的监听,Android里面的Home,Back,Menu三个键同样使用广播进行管理。

HomeWatcherReceiver mHomeKeyReceiver;
//注册Home监听广播
mHomeKeyReceiver = new HomeWatcherReceiver();
final IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
registerReceiver(mHomeKeyReceiver, homeFilter);
//监听返回键
mView.setDispatchKeyEventListener(mDispatchKeyEventListener);
/*** 返回鍵监听*/
private SessionLinearLayout.DispatchKeyEventListener mDispatchKeyEventListener = new SessionLinearLayout.DispatchKeyEventListener() {@Overridepublic boolean dispatchKeyEvent(KeyEvent event) {if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {if (mView.getParent() != null) {wm.removeView(mView);}return true;}return false;}
};
还有一个Home键
/*** 监听Home键*/
class HomeWatcherReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);if (SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)) {if (mView.getParent() != null) {wm.removeView(mView);}}}}
}

后面的代码看了下,的确是基础课程,都比较简单,没什么复杂的东西,好多都是用了很多次的东西,下一篇再把零碎知识整理一下,也就完工了。哈哈  ^_^

软件github下载地址:https://github.com/SunnyGZY/SmartButler

智能管家项目总结(2)相关推荐

  1. 干货速递—吐血整理的20个物联网云智能开源项目,个个都是精品!【速来白嫖】

    转载请注明文章出处: https://blog.csdn.net/weixin_44985880/article/details/107874561 Hello!大家好,我是灰小猿,一个最会写bug的 ...

  2. arduino项目_quot;Arduino智能车项目quot;实战班开班!

    想自己设计一辆智能车吗?爱捷青少年创客编程中心针对老学员推出了特惠课程--"Arduino智能车"项目实战班.整个课程围绕智能车的控制方式,涉及直流电机控制.红外遥控.超声测距.显 ...

  3. 智能家居 (8) ——智能家居项目整合(网络控制线程、语音控制线程,火灾报警线程)

    目录 mainPro.c(主函数) 指令工厂 inputCommand.h voiceControl.c(语音控制) socketControl.c(网络线程) 控制工厂 contrlEquipmen ...

  4. 全球最大的LoRaWAN智能路灯项目刚刚启动

    NNNCo 与技术提供商 Wellness TechGroup 合作推出 LoRaWAN无线网关模块在世界上最大的物联网应用智能街道照明项目之一. 该项目将覆盖200平方公里,为超过130万人提供物联 ...

  5. arduino代码_arduino智能小车项目——01、配件介绍及代码部分教程

    各位小伙伴大家好: 本期我们开始制作智能小车项目,这因该是资源包里面难度相对较大的项目. 所以我们从易到难把项目进行分解,先从实现较为简单的功能开始. 本期我们的目标是实现小车的自主运动,代码部分也相 ...

  6. 深度ip转换器手机版app_手机大师智能管家app下载-手机大师智能管家app官网版 v1.0.0...

    手机大师智能管家app:针对各种手机垃圾快速在线清除的软件,利用这款软件可以快速的清除各种不同的手机垃圾,而且还可以一键在线加速,更好的享受手机加速带来的便捷,同时针对各种文件清理也更加的简单,让你更 ...

  7. 物联网智能家居项目---智能卧室

    智能卧室 介绍 设计需求 功能介绍 准备 软件准备 硬件准备 项目制作 库文件调用和变量定义 超声波测距函数 初始化 变量赋值和LCD显示屏显示温湿度 功能实现 后续 介绍 设计需求 为了提高用户生活 ...

  8. android 智能家居 pdf,智能家居项目化教程.pdf

    作 者 :曾文波,伦硕波,黄日胜,钟建坤编著 出版发行 : 北京:中国水利水电出版社 , 2019.03 ISBN号 :978-7-5170-6858-7 页 数 : 151 原书定价 : 27.00 ...

  9. 钢铁侠要为Facebook的智能管家配音,really?

    此智能管家即将在本月公布,到时一见分晓. 每一年,Facebook的CEO扎克伯格都会为自己定一个年度目标,在今年1月份,扎克伯格就曾表示,计划在2016年打造一个类似于"钢铁侠" ...

  10. 10天基于STM32F401RET6智能锁项目实战第1天(环境搭建和新建工程)

    10天基于STM32F401RET6智能锁项目实战第1天(环境搭建和新建工程) 一.环境搭建 二.新建工程 一.环境搭建 1.安装keil5 2.安装支持包 这里按照需求安装支持包,有F4和F1的支持 ...

最新文章

  1. 部署Tomcat服务时,解决Cannot invoke Tomcat Manager 异常
  2. 双系统(xp+ubuntu)删除ubuntu(好用)
  3. JQuery的摸索之路(二比较)
  4. Find Integer(费马大定理的使用)
  5. JavaSE基础知识(5)—面向对象(5.3访问修饰符)
  6. @Java | Thread synchronized - [ 线程同步锁 基本使用]
  7. Android官方开发文档Training系列课程中文版:手势处理之记录手指移动的轨迹
  8. Android分辨率比例为1,修改android5.1系统分辨率
  9. yii2 关掉php notice,php – 使用Yii2中的自动填充更新隐藏字段
  10. Flutter实战一Flutter聊天应用(八)
  11. 原生JS实现粘贴到剪贴板
  12. C++ 异常是如何实现的
  13. Python 小程序:计算24点
  14. Win10 schtasks 不稳定问题
  15. 信息系统面临的安全风险
  16. matlab数字通信系统的仿真实验报告,数字通信系统的matlab仿真
  17. 【java】剑指offer46_把数字翻译成字符串
  18. 20221227英语学习
  19. CockroachDB架构——CockroachDB中的读和写
  20. Ubuntu20.04安装django

热门文章

  1. 西南大学奥鹏教育计算机基础答案,9124《 计算机图像处理基础》20秋西南大学在线作业答案资料...
  2. 具有定时功能的八路数显抢答器的设计
  3. 表格的下拉放大 ----------王朋
  4. 6120c手机使用教程大全!
  5. Tomcat重启服务器
  6. ECSHOP全部品牌页实现分页换页功能方法
  7. 数据库之MySQL日志管理、备份与恢复
  8. php泥浆护壁,扩孔泥浆护壁式集束式潜孔锤技术
  9. 72个嵌入式技术网站
  10. C++查詢wry.dat中的IP地址信息