android手机短信报告.docx
《android手机短信报告.docx》由会员分享,可在线阅读,更多相关《android手机短信报告.docx(15页珍藏版)》请在冰豆网上搜索。
android手机短信报告
目录
一、作品概述2
二、作品可行性分析和目标群体3
2.1作品可行性分析3
2.2作品目标群体3
2.3作品市场前景4
三、作品功能与原型设计4
3.1功能概述4
3.2原型设计5
四、作品实现,难点及特色分析5
4.1作品实现及难点5
4.2特色分析7
五、团队介绍和人员分工7
成员介绍7
分工情况7
六、运行结果8
6.1程序运行结果分析8
6.2程序代码及注解13
七、设计体会16
主要参考文献17
一、作品概述
当今社会的生活节奏越来越快,随着硬件移动设备的越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉,因此,也逐步提高了对系统的要求,本次试验主要是对Android系统上的一款短信发送系统。
由于手机市场发展迅速,使得手机操作系统也出现了不同种类,现在的市场上主要有四个手机操作系统,Windows的Windowsmobile,诺基亚的Symbian,苹果的iOS,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。
Android是一个开源系统,它底层是基于Linux的操作系统。
因此方便的发送手机短信也成为了一种需要,为了满足这些需要,设计了这款手机短信的发送程序。
二、作品可行性分析和目标群体
2.1作品可行性分析
本次实验我们小组所做的是一款Android手机的短信发送系统。
由于制作的是一款Android手机程序,因此我们先来了解一下Android系统。
Android是Google开发的基于Linux平台的开源手机操作系统。
它包括操作系统、用户界面和应用程序——移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。
Google与开放手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和T-Mobile在内的30多家技术和无线应用的领军企业组成。
Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
“开放手机联盟”表示,Android平台可以促使移动设备的创新,让用户体验到最优越的移动服务,同时,开发商也将得到一个新的开放级别,更方便的进行协同合作,从而保障新型移动设备的研发速度。
Android的优势在于Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。
显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,随大的受益正是丰富的软件资源。
开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。
Android是一个完整的手机软件平台,包含底层的操作系统(Linux),中间件以及一些关键应用。
Android还提供了一个SDK帮助开发者使用Java语言来开发。
Android是第一个完全开源完全免费的具有商业级产品质量和巨大号召力的Linux智能手机平台。
目前在国内外使用的越来越广泛,相信在不久的将来在国内的山寨机市场上逐步取代MTK的地位。
2.2作品目标群体
由于Android系统的热门与普及,所以此次程序设计的目标群体也体现在了时下热衷于Android系统的人们。
一开始接触Android系统手机的人,大多数都会觉得它很酷,是我喜欢的风格。
Android作为新兴的手机操作系统,适应潮流的发展,在一定程度上迎合了现代人们最求效率和最求完美的心态,再加上的它的先进之处,所以Android的发展很快,Android的应用资源也越来越广泛,现在的Android正在快速形成一个只能手机王国,给人们提供日常娱乐和办公的平台,无论在哪些方面,Android的表现总是能够让人满意,它正在快速地占领手机终端,未来的智能手机领域将是Android的天下,越来越多的人选用Android平台的手机。
如果说追求苹果是因为苹果的高端与美感,那么追求Android则是因为它的先进性开源性,也正是因为Android这些吸引人们瞩目的特点,才会有越来越多的人对Android充满激情,Android的发展也才能这样的迅猛,所以在这里要先谢谢Goolge,以及那些充满激情的开发者们。
2.3作品市场前景
如果说追求苹果是因为苹果的高端与美感,那么追求Android则是因为它的先进性开源性,也正是因为Android这些吸引人们瞩目的特点,才会有越来越多的人对Android充满激情,Android的发展也才能这样的迅猛,所以在这里要先谢谢Goolge,以及那些充满激情的开发者们。
Google手机于08年10月22日正式上市,与运营商捆绑的合约价为179美元(约合人民币1200元),现有的T-Mobile用户可以通过网络订购。
在10月22日发布当天,将有22个国家和地区可以买到谷歌手机。
在11月,将增至27个国家和地区。
而且其在中国的前景也非常可观。
中国移动和中国联通的网络都可以运行G1,不过在联通明年开通WCDMA/HSDPA网络之前,用户只能像破解iPhone那样降级使用GSM网络,无法体验高速下载的移动互联网。
Android作为一个开放的平台,三星、摩托罗拉、索尼爱立信、LG等厂商都有意生产Android系统的手机。
此次谷歌手机发布,尽管宏达电拔得头筹,其他一些终端厂商如华为也已证实正在研发基于Android平台的手机,目前已经制成样机。
Android系统作为新兴的先进操作系统现在无疑是智能手机行业最热门的话题,Android也正在以超乎人们想象的速度发展。
3、作品功能与原型设计
3.1功能概述
本系统主要实现以下功能:
①系统采用手机andriod技术的新方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。
②实现通过输入的手机号码或通过电话簿选择的手机号码进行短信发送。
③对用户输入的数据进行严格的数据检验,尽可能的避免人为错误。
④实现接收SIM卡中的短信内容,并显示给用户。
⑤实现对发送短信的内容和收件人手机号码的权限进行审查,不支持不符合权限的发送请求。
⑥系统最大限度地实现了易维护性和易操作性。
3.2原型设计
实现平台:
andriod1.5java语言
屏幕分辨率:
≥320×480
手机型号:
适用于装有JVM并且屏幕分辨率≥320×480的手机
四、作品实现,难点及特色分析
4.1作品实现及难点
在本次实验中,我们小组选的是Android手机的发送短信程序。
在这个程序中,我们要通过自定义两个EditText控件,分别取得收件人的电话与短信的正文,并判断收件人格式是否正确,以及正文输入文字个数是否超过一条短信的限制,若有一个不符,则通过Toast来告诉用户;若无错误,则取得EdiText控件里的输入值,并将输入的短信通过短信发送,从而完成Android手机的短信发送功能。
本次实验运行平台如图4-1所示:
图4-1
我们小组在完成这项程序的过程中,遇到许多的难点,因为对此是第一次接触,所以只能从小做起。
我们所制作的Android手机的短信发送程序是通过SmsManager对象的sendTextMessage()方法来完成的,其中sendTextMessage()方法需要传入五个值,依次是收件人地址(String)、发送地址(String)、正文(String)、发送服务(PendingIntent)与传达服务(PendingIntent),其中收件人与正文是不可为Null的两个参数。
本次实验的运行结果如图4-2所示:
程序运行界面4-2
4.2特色分析
我们小组所研发的Android手机的短信发送程序中,主程序除了在onCreat()中创建两个EditText控件与一个Button控件外,分别设置onClickLinstener()让用户单击EditText控件时,同时清除内容,再单击Button时发送出短信,并通过isPhoneNumberValid()与iswithin70()这两个自定义的方法来检查收件人的电话号码是否正确以及短信内容是否超过70个字符。
确定无误后,通过PendingInter.getBroadcast()的方法自定义PendingInter并进行Broadcasting,而后使用SmsManager.getDefault()所预先构建的SmsManager使用sendTextMessage()方法,将相关数据以参数带入,即可完成短信发送的任务。
五、团队介绍和人员分工
成员介绍
分工情况
六、运行结果
6.1程序运行结果分析
1.在程序运行后,则进入短信输入框。
如图6-1所示:
程序运行界面6-1
1.在程序还没输入任何内容时,点击发送短信按键则会显示电话号码格式错误,请检查,如图6-2所示:
点击发送按键图6-2
3.程序运行后则输入相应内容,但是收件人框具有一定的要求,其可接受的电话格式可以为下列数字格式:
(123)456-7890,123-456-7890,1234567890等。
当输入不符合要求的收件人号码时,显示如图6-3所示:
图6-3
若在此时点击短信发送按键,则会显示电话号码格式错误,请检查,如图6-4所示:
图6-4
当输入符合收件人要求的号码时如图6-5所示,点击发送键后则会提示短信已发送,如图6-6所示:
图6-5
图6-6
4.程序运行后则输入相应内容,在文本框中限定了不得超过70个字,在输入符合要求时,如图6-7所示,点击短信发送按键则可显示短信已发送成功,如图6-6所示,
图6-7
当输入的文本框字符超过限定数目时,如图6-8所示,此时点击短信发送按键则会显示短信内容超过70字,请删除部分内容,如图6-9所示:
图6-8
图6-9
6.2程序代码及注解
packageirdc.EX05_03;
importandroid.app.Activity;
/*必需引用PendingIntent类才能使用getBrocast()*/
importandroid.app.PendingIntent;
importandroid.content.Intent;
importandroid.os.Bundle;
/*必需引用telephony.gsm.SmsManager类才能使用sendTextMessage()*/
importandroid.telephony.SmsManager;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassEX05_03extendsActivity
{
/*声明变量一个Button与两个EditText*/
privateButtonmButton1;
privateEditTextmEditText1;
privateEditTextmEditText2;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*透过findViewById建构子来建构EditText1,EditText2与Button对象*/
mEditText1=(EditText)findViewById(R.id.myEditText1);
mEditText2=(EditText)findViewById(R.id.myEditText2);
mButton1=(Button)findViewById(R.id.myButton1);
/*将默认文字加载EditText中*/
mEditText1.setText("请输入电话号码");
mEditText2.setText("请输入短信内容!
!
");
/*设定onClickListener让使用者点选EditText时做出反应*/
mEditText1.setOnClickListener(newEditText.OnClickListener()
{
publicvoidonClick(Viewv)
{
/*点选EditText时清空内文*/
mEditText1.setText("");
}
});
/*设定onClickListener让使用者点选EditText时做出反应*/
mEditText2.setOnClickListener(newEditText.OnClickListener()
{
publicvoidonClick(Viewv)
{
/*点选EditText时清空内文*/
mEditText2.setText("");
}
});
/*设定onClickListener让使用者点选Button时做出反应*/
mButton1.setOnClickListener(newButton.OnClickListener()
{
@Override
publicvoidonClick(Viewv)
{
/*由EditText1取得简讯收件人电话*/
StringstrDestAddress=mEditText1.getText().toString();
/*由EditText2取得简讯文字内容*/
StringstrMessage=mEditText2.getText().toString();
/*建构一取得defaultinstance的SmsManager对象*/
SmsManagersmsManager=SmsManager.getDefault();
//TODOAuto-generatedmethodstub
/*检查收件人电话格式与简讯字数是否超过70字符*/
if(isPhoneNumberValid(strDestAddress)==true&&iswithin70(strMessage)==true)
{
try
{
/*两个条件都检查通过的情况下,发送简讯*
*先建构一PendingIntent对象并使用getBroadcast()方法进行Broadcast*
*将PendingIntent,电话,简讯文字等参数传入sendTextMessage()方法发送简讯*/
PendingIntentmPI=PendingIntent.getBroadcast(EX05_03.this,0,newIntent(),0);
smsManager.sendTextMessage(strDestAddress,null,strMessage,mPI,null);
}
catch(Exceptione)
{
e.printStackTrace();
}
Toast.makeText(EX05_03.this,"送出成功!
!
",Toast.LENGTH_SHORT).show();
mEditText1.setText("");
mEditText2.setText("");
}
/*电话格式与简讯文字不符合条件时,使用Toast告知用户检查*/
else
{
/*电话格式不符*/
if(isPhoneNumberValid(strDestAddress)==false)
{
/*且字数超过70字符*/
if(iswithin70(strMessage)==false)
{
Toast.makeText(EX05_03.this,"电话号码格式错误+短信内容超过70字,请检查!
!
",Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(EX05_03.this,"电话号码格式错误,请检查!
!
",Toast.LENGTH_SHORT).show();
}
}
/*字数超过70字符*/
elseif(iswithin70(strMessage)==false)
{
Toast.makeText(EX05_03.this,"短信内容超过70字,请删除部分内容!
!
",Toast.LENGTH_SHORT).show();
}
}
}
});
}
/*检查字符串是否为电话号码的方法,并回传trueorfalse的判断值*/
publicstaticbooleanisPhoneNumberValid(StringphoneNumber)
{
booleanisValid=false;
/*可接受的电话格式有:
*^\\(?
:
可以使用"("作为开头*(\\d{3}):
*紧接着三个数字*\\)?
:
可以使用")"接续*[-]?
:
*在上述格式后可以使用具选择性的"-".*(\\d{3}):
*再紧接着三个数字*[-]?
:
*可以使用具选择性的"-"接续.*(\\d{4})$:
*以四个数字结束.*可以比对下列数字格式:
**(123)456-7890,123-456-7890,1234567890,(123)-456-7890*/
Stringexpression="^\\(?
(\\d{3})\\)?
[-]?
(\\d{3})[-]?
(\\d{4})$";
/*可接受的电话格式有:
*^\\(?
:
*可以使用"("作为开头*(\\d{2}):
*紧接着两个数字*\\)?
:
可以使用")"接续*[-]?
:
*在上述格式后可以使用具选择性的"-".*(\\d{4}):
*再紧接着四个数字*[-]?
:
*可以使用具选择性的"-"接续.*(\\d{4})$:
*以四个数字结束.*可以比对下列数字格式:
*
*(123)456-7890,123-456-7890,1234567890,(123)-456-7890*/
Stringexpression2="^\\(?
(\\d{2})\\)?
[-]?
(\\d{4})[-]?
(\\d{4})$";
CharSequenceinputStr=phoneNumber;
/*建立Pattern*/Patternpattern=Ppile(expression);
/*将Pattern以参数传入Matcher作Regularexpression*/
Matchermatcher=pattern.matcher(inputStr);
/*建立Pattern2*/Patternpattern2=Ppile(expression2);
/*将Pattern2以参数传入Matcher2作Regularexpression*/
Matchermatcher2=pattern2.matcher(inputStr);
if(matcher.matches()||matcher2.matches())
{
isValid=true;
}
returnisValid;
}
publicstaticbooleaniswithin70(Stringtext)
{
if(text.length()<=70)
returntrue;
else
returnfalse;
}
}
七、设计体会