Android课程设计Word文档下载推荐.docx
《Android课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Android课程设计Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。
通过课程设计,我们学习到了Android开发的流程和简单的APP开发经历,并初步打好编程基础。
根据这次课程设计的经历,我们可以更快,更有方向的进行更深入的学习。
这次课题是基于安卓手机安全卫士开发一款手机应用软件,对于手机安全软件的功能实现有了更准确的认识,能够感受到当前手机
数据保护对于用户来说是一个多么重要的事情。
我们要实现对手机端的安全保护是刻不容缓的事情,继续探索安全保护方法是我们接下来要继续努力完成的任务。
二、设计方案
1.格式布局
1.1下面是本次课程设计规划的logo登陆界面(如图1):
图1Logo界面
1.2下面是本次课程设计规划的功能界面(如图2):
图2功能界面
2.功能设计内容
2.1SIM卡信息
功能介绍:
此功能可以获取手机网络、SIM卡相关信息。
(如图3)根据SIM卡设备当前位置信息,通过可以查询到本机所在地的位置。
(如图4)
图3SIM卡信息
图4基站查询结果
2.2通讯卫士
该功能可以对手机通话状态进行监听。
(如图5)当手机来电铃声想起时,程序会把来电号码记录到文件中。
这个文件保存在手机数据库里的data/data/org.crazyit.manager/files目录下的phoneList文件中。
将文件导入到电脑中可以查看该文件内容。
(如图6)
图5通讯卫士
图6phoneList文件内容
2.3文件管理
查看系统文件夹和文件,SD卡文件夹和文件(如图7)。
图7文件管理
2.4发送短信
在收件人号码输入框内输入收信人的电话号码,在短信内容内输入内容后就可以发送短信了。
(如图8)
图8发送短信
3.主要代码实现
3.1SIM卡信息模块
publicclassTelephonyStatusextendsActivity
{
ListViewshowView;
//声明代表状态名的数组
String[]statusNames;
//声明代表手机状态的集合
ArrayList<
String>
statusValues=newArrayList<
();
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.sim_main);
//获取系统的TelephonyManager对象
TelephonyManagertManager=(TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
//获取各种状态名称的数组
statusNames=getResources().getStringArray(R.array.statusNames);
//获取代表SIM卡状态的数组
String[]simState=getResources()
.getStringArray(R.array.simState);
//获取代表电话网络类型的数组
String[]phoneType=getResources().getStringArray(
R.array.phoneType);
//获取设备编号
statusValues.add(tManager.getDeviceId());
//获取系统平台的版本
statusValues.add(tManager.getDeviceSoftwareVersion()
!
=null?
tManager.getDeviceSoftwareVersion():
"
未知"
);
//获取网络运营商代号
statusValues.add(tManager.getNetworkOperator());
//获取网络运营商名称
statusValues.add(tManager.getNetworkOperatorName());
//获取手机网络类型
statusValues.add(phoneType[tManager.getPhoneType()]);
//获取设备所在位置
statusValues.add(tManager.getCellLocation()!
tManager
.getCellLocation().toString():
未知位置"
//获取SIM卡的国别
statusValues.add(tManager.getSimCountryIso());
//获取SIM卡序列号
statusValues.add(tManager.getSimSerialNumber());
//获取SIM卡状态
statusValues.add(simState[tManager.getSimState()]);
//获得ListView对象
showView=(ListView)findViewById(R.id.show);
ArrayList<
Map<
String,String>
>
status=
newArrayList<
//遍历statusValues集合,将statusNames、statusValues
//的数据封装到List<
String,String>
集合中
for(inti=0;
i<
statusValues.size();
i++)
{
HashMap<
map=newHashMap<
map.put("
name"
statusNames[i]);
value"
statusValues.get(i));
status.add(map);
}
//使用SimpleAdapter封装List数据
SimpleAdapteradapter=newSimpleAdapter(this,status,
R.layout.line,newString[]{"
"
}
newint[]{R.id.name,R.id.value});
//为ListView设置Adapter
showView.setAdapter(adapter);
}
3.2通讯卫士模块
publicclassMonitorPhoneextendsActivity
TelephonyManagertManager;
setContentView(R.layout.phone_main);
//取得TelephonyManager对象
tManager=(TelephonyManager)
//创建一个通话状态监听器
PhoneStateListenerlistener=newPhoneStateListener()
@Override
publicvoidonCallStateChanged(intstate,Stringnumber)
{
switch(state)
{
//无任何状态
caseTelephonyManager.CALL_STATE_IDLE:
break;
caseTelephonyManager.CALL_STATE_OFFHOOK:
//来电铃响时
caseTelephonyManager.CALL_STATE_RINGING:
OutputStreamos=null;
try
{
os=openFileOutput("
phoneList"
MODE_APPEND);
}
catch(FileNotFoundExceptione)
e.printStackTrace();
PrintStreamps=newPrintStream(os);
//将来电号码记录到文件中
ps.println(newDate()+"
来电:
"
+number);
ps.close();
default:
}
super.onCallStateChanged(state,number);
}
};
//监听电话通话状态的改变
tManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
3.3文件管理模块
publicclassFileManagerActivityextendsActivity{
privateFileServicefileService;
TabListenerlistener=newTabListener(){
@Override
publicvoidonTabUnselected(Tabtab,FragmentTransactionft){
//标签被选中的时候触发这个方法
publicvoidonTabSelected(Tabtab,FragmentTransactionft){
intposition=tab.getPosition();
//标签的索引
//tab.getText().toString();
//标签的文本标题
switch(position){
case0:
try{
fileService.getFiles(0);
}catch(Exceptione){
e.printStackTrace();
break;
case1:
fileService.getFiles
(1);
case2:
//弹出窗口,让用户输入新建文件夹的名称
case3:
//粘贴逻辑
publicvoidonTabReselected(Tabtab,FragmentTransactionft){
};
privatestaticfinalintITEM_CREATE=1;
privatestaticfinalintITEM_COPY=2;
privatestaticfinalintITEM_PAST=3;
privatestaticfinalintITEM_DELETE=4;
privateDataServiceservice;
privateActionBarbar;
privateListViewlistView;
privateTextViewpathView;
privateButtonbutton;
privateList<
FileItem>
list;
protectedvoidonCreate(BundlesavedInstanceState){
setContentView(R.layout.activity_file_manager);
listView=(ListView)findViewById(R.id.listView);
pathView=(TextView)findViewById(R.id.currentPath);
service=newDataService();
button=(Button)findViewById(R.id.button);
fileService=newFileService();
try{
initListView("
/"
}catch(Exceptione){
e.printStackTrace();
initActionBar();
initEvents();
privatevoidinitEvents(){
//给每一个Item添加点击事件
listView.setOnItemClickListener(listener1);
//界面上每一个视图组件都可以使用上下文菜单
registerForContextMenu(listView);
publicvoidonCreateContextMenu(android.view.ContextMenumenu,Viewv,android.view.ContextMenu.ContextMenuInfomenuInfo){
menu.add(1,ITEM_CREATE,0,"
新建"
menu.add(1,ITEM_COPY,1,"
复制"
menu.add(1,ITEM_PAST,2,"
粘贴"
menu.add(1,ITEM_DELETE,2,"
删除"
publicbooleanonContextItemSelected(MenuItemitem){
//触发上下文菜单的组件
AdapterContextMenuInfoinfo=(AdapterContextMenuInfo)item.getMenuInfo();
intposition=info.position;
intitemId=item.getItemId();
switch(itemId){
caseITEM_CREATE:
button.setEnabled(true);
break;
caseITEM_COPY:
caseITEM_PAST:
caseITEM_DELETE:
booleanflag=doubleCheck();
returntrue;
privatebooleandoubleCheck(){
finalResultres=newResult(false);
Builderbuilder=newBuilder(this);
builder.setTitle("
警告"
builder.setMessage("
你确定删除吗?
builder.setPositiveButton("
确认"
newOnClickListener(){
publicvoidonClick(DialogInterfacedialog,intwhich){
//匿名内部类在使用外部作用域的变量的时候,不能修改这个变量
res.setFlag(true);
});
builder.setNegativeButton("
取消"
null);
returnres.isFlag();
publicvoidpast(Viewv){
button.setEnabled(true);
privateOnItemClickListenerlistener1=newOnItemClickListener(){
publicvoidonItemClick(android.widget.AdapterView<
?
parent,Viewview,intposition,longid){
com.jsu.mobilesafe.bean.FileItemitem=list.get(position);
Stringpath=item.getFilePath();
try{
initListView(path);
}catch(Exceptione){
e.printStackTrace();
privatevoidinitListView(Stringpath)throwsException{
list=service.getFiles(path);
MyAdapteradapter=newMyAdapter(this,R.layout.list_item,list);
//绑定适配器
listView.setAdapter(adapter);
pathView.setText(path);
privatevoidinitActionBar(){
bar=getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Constants.TABS_TITLE.length;
i++){
addTab(Constants.TABS_TITLE[i]);
privatevoidaddTab(Stringtitle){
Tabtab=bar.newTab();
tab.setText(title);
tab.setTabListener(listener);
bar.addTab(tab);
3.4发送短信模块
publicclassSendSmsextendsActivity
EditTextnumber,content;
Buttonsend;
SmsManagersManager;
setContentView(R.layout.sendsms_main);
//获取SmsManager
sManager=SmsManager.getDefault();
//获取程序界面上的两个文本框和按钮
number=(EditText)findViewById(R.id.number);
content=(EditText)findViewById(R.id.content);
send=(Button)findViewById(R.id.send);
//为send按钮的单击事件绑定监听器
send.setOnClickListener(newOnClickListener()
publicvoidonClick(Viewarg0)
//创建一个PendingIntent对象
PendingIntentpi=PendingIntent.getActivity(
SendSms.this,0,newIntent(),0);
//发送短信
sManager.sendTextMessage(number.getText().toString(),
null,content.getText().toString(),pi,null);
//提示短信发送完成
Toast.makeText(SendSms.this,"
短信发送完成"
8000).show();
三、总结和分析
本次课程设计,经过一周时间的指导学习,我们设计出了课程设计Android作品,并成功答辩通过。
我们的课程设计