【学案】第07讲:自动回复短信(下)

作者:袁建文    发布时间:2016/4/9    浏览:702

第07讲:自动回复短信(下)


注意:
 1、今天开始,App Inventor 网址改成127.0.0.1:8888
 2、启动 App Inventor前必须先启动两个文件,且不能关闭这两个启动的文件,可以最小化。这两个文件在电脑桌面上,截图如下:


 


学习目标
   1、会使用Texting组件的收发短信功能;
   2、能用TextBox组件提交自定义回复信息(需要与Button组件配合使用);
   3、能用Screen.Initialize事件在应用启动时加载自定义回复
学习重点:会使用Texting组件的收发短信功能。
学习难点:会使用Texting组件的收发短信功能。


  这节课我们一起开发一个“自动回复短信”程序,具体需要实现如下功能:
 1、【基本任务】能够自动回复收到的短信;
 2、【拓展任务】可以大声朗读来信内容;
 3、【拓展任务】回复内容可以包含您当前的位置信息。比如如果你的家人正在家做晚饭,他或她可能想知道你何时能到家,但又担心回短信会危及安全。


一、知识回顾,分析下面程序代码实现的功能。



二、动手实践

1、大声读出收到的短信
  修改应用:收到短信后,手机将大声朗读发送者的电话号码以及短信内容。开车收到短信,虽然有自动回复功能,但你还是禁不住想知道短信的内容。使用text-to-speech功能,就可以手不离方向盘而收听到短信的内容。
  1、需要在你手机上完成一项设置,即:在手机的"设置->辅助功能"中打开"文字转换语音输出"功能,根据需要设置默认语言及语速,然后选择"收听示例"。如果没听到任何声音,请确认手机音量已调高;还可以更改TTS引擎默认属性设置,来改变声音效果。
  2、 在界面设计上添加一个组件,具体见下表:

组件类型 面板中分组 命名 作用
TextToSpeech Media TextToSpeech1 大声朗读来信


  3、需要加入下表中所列出的块来扩展该事件的处理程序。

块的类型 所在抽屉 功能
TextToSpeech1.Speak TextToSpeech1 大声读出收到的短信
join Text 连接生成将被朗读的文字
"SMS text received from" Text 被读出的第一段话
get number Variables 获得短信发送者的电话号码
". The message is" Text 在读完电话号码之后稍加停顿,然后说"The message is"
get messageText Variables 获得收到的短信文本

  4、具体代码如下:


2、在回复中加入位置信息

  像Facebook的Places以及Google的 Latitude等类型的应用,都是利用GPS信息来帮助人们跟踪彼此的位置信息。这样的应用最令人担忧的是隐私问题,原因之一是它引发了人们对"老大 哥"的恐惧,这里的"老大哥"指的是那些设法跟踪其公民下落的集权政府。但是使用位置信息的应用的确非常有用,试想一个迷路的小孩,或者那些在森林里迷路 的徒步旅行者。
  在"骑车不发短信"的应用中,位置跟踪让回复的短信再多一点内容,而不只是"我正在骑车",回复的信息可以是这样的:"我正在北京东直门内大街209号骑车"。对于那些正在等待朋友或家人到来的人来说,这些额外的信息非常有益。
  App Inventor提供了LocationSensor(位置传感器)组件,作为手机的GPS (Global Positioning System全球定位系统)功能的接口。除了纬度和经度信息,LocationSensor也可以接入到谷歌地图,为人们提供当前位置的地址信息。
  值得注意的是,LocationSensor并不总在读取信息,因此务必要恰当地使用这一组件。具体地讲,应用只对 LocationSensor.LocationChanged事件做出响应,而两种情况会触发LocationChanged事件:①当手机的位置传感 器第一次收到位置信息时;②随着手机的移动,产生新的位置信息时。下表列出所要用到的块,具体方法是:当LocationChanged事件触发时,将当 前地址信息保存到变量lastKnownLocation中,再将变量值插入到自动回复信息中。

块的类型 所在抽屉 功能
Initialize global lastKnownLocation to Variables 创建一个变量来保存最后读取的地址信息
"未知" Text lastKnownLocation的默认值
LocationSensor1.LocationChanged LocationSensor1 位置传感器第一次读到位置信息,或每次位置信息变化时触发该事件
set global lastKnownLocation to Variables 设置变量值,稍后会用到
LocationSensor1.CurrentAddress LocationSensor1 当前地址信息,如:"北京市东城区东直门内大街209号"
join Text 多段文本的连接器
ResponseLabel.Text ResponseLabel 不包含位置信息的定制回复信息
“我最后的位置在:” Text 原定制信息之后的位置信息提示词
global lastKnownLocation Variables 地址信息,如:“北京市东城区东直门内大街209号”

  具体代码如下:



知识小结 

  下面是本节课涉及到的一些概念:
1、Texting组件:既可以用来发短信,也可以处理收到的信息。在调用Texting.SendMessage之前,需要为Texting组件设置 PhoneNumber及Message属性。为了回复收到的短信,需要为Texting.MessageReceived事件编写处理程序;
2、TinyDB组件:用于将信息永久存储在手机数据库中,以便每次应用启动时都可以加载保存过的数据。有关TinyDB的更多信息,请参见第22章;
3、TextToSpeech组件:对于所提供的任何文本对象,都可以大声朗读出来;
4、join块:用于将若干片段的文字拼凑(或连接)成单一的文本对象中;
5、LocationSensor组件:可以报告手机的纬度、经度及当前

Copyright@2009-2018 株洲市南方中学 All Rights Reserved

湘公网安备 43020302000273号

湘ICP备18002763号-1  湘教QS7-200505-000292   投稿入口 校内办公入口

株洲市南方中学 学校地址:株洲市芦淞区董家塅

招生热线

0731-28550326

28552555