手机防盗系统的设计与实现.docx

上传人:b****8 文档编号:30467401 上传时间:2023-08-15 格式:DOCX 页数:32 大小:486.45KB
下载 相关 举报
手机防盗系统的设计与实现.docx_第1页
第1页 / 共32页
手机防盗系统的设计与实现.docx_第2页
第2页 / 共32页
手机防盗系统的设计与实现.docx_第3页
第3页 / 共32页
手机防盗系统的设计与实现.docx_第4页
第4页 / 共32页
手机防盗系统的设计与实现.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

手机防盗系统的设计与实现.docx

《手机防盗系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《手机防盗系统的设计与实现.docx(32页珍藏版)》请在冰豆网上搜索。

手机防盗系统的设计与实现.docx

手机防盗系统的设计与实现

安徽三联学院

专科毕业论文

 

题目:

手机防盗系统的设计与实现

 

姓名

专业

班级

指导教师

2012年4月

题目:

手机防盗系统的设计与实现

摘要

随着智能手机的发展其硬件发展也非常快,已经远远超出了传统通讯的需求。

已经成为人们的个人信息处理终端。

其中涉及很多个人隐私,因而手机的安全也是大家很关心的问题。

关键词:

传感器,智能手机

 

目录:

第一章引言······················································1

1.1开发背景···············································1

1.2开发目标···············································1

1.3项目意义···············································1

1.4系统开发所需技术准备···································1

第二章系统分析··················································6

2.1系统需求分析··········································6

2.2用户需求················································6

2.3系统业务分析············································6

2.4系统逻辑方案············································6

第三章系统设计··················································6

3.1防盗系统功能需求简介··································6

3.2功能需求描述……………………………………………………6

3.3系统目标要求……………………………………………………6

3.4系统平台选择……………………………………………………6

第四章系统实施··················································6

4.1UI设计·················································6

4.2各子系统模块设计举例…………………………………………9

4.3软件测试…………………………………………………………21

第五章结束语………………………………………………………

 

第一章引言

如今,智能手机已经稳稳地跻身于手机主流市场。

根据权威市场研究机构IDC于去年年底公布报告中的数据,全球2004年第一季度移动电话出货量在智能手机的带动下,比去年同期增长了29.3%,达到1.527亿部,其中智能手机出货量比上年同期激增85.8%。

同时来自国内的报告显示,2004年第一季度,中国智能手机市场销售总量达到65.5万部,销售总额达到19.4亿元,与2003年同期相比销量上升195.05%。

这两份报告的数据同时显示,目前智能手机市场正处于一个高速发展的时期。

1.1开发背景

随着科技的发展手机从最原始的单一的通话功能发展到目前的智能平台,方便了人们的生活。

但是大家最头疼的也就是手机的丢失。

但是目前很多智能手机都拥有很多传感器。

例如光线,加速度等传感器。

利用这些我们就能很好的解决这个问题。

1.2开发目标

利用智能手机自身来解决防盗问题。

1.3项目意义

在不增加任何其他成本之下的高效简单的防盗方案。

1.4系统开发所需技术准备

传感器编程,平台API。

加速度传感器:

加速度传感器

加速度传感器是为了检测物体的加速度的传感器。

物体运动加速度也跟着变化,如果能取到加速度,物体受到什么样的作用力或则物体进行什么样的运动,我们就可以知道。

使用加速度,我们就能做模拟计步器、物体运动的应用程序。

通过加速度传感器能取到的值,我们可以通过Android的加速度传感器可以取得x,y,z三个轴的加速度。

加速度值受地球重力的影响值也不一样。

在SensorManager类中定义了很多星体的重力加速度值。

SensorManager类被定义的各新星体的重力加速度值

通常,从加速度传感器取得的值,拿手机手机设备的人的手震动或则放在摇晃的场所的时候,受震动影响设备的值增幅变化是存在的。

手的摇动、轻微震动的影响是属于长波形式,去掉这种长波干扰的影响,可以取得高精度的值。

去掉这种长波这种过滤机能叫Low-PassFilter。

Low-PassFilter的封装方法如下面所述。

从抽样数据中取得中间的值的方法.最近取得的加速度的值每个很少变化的方法

 从抽样数据取得中间值的抽样代码如下。

并且,抽样数为30来做的,根据封装的程序的用途和传感器的感度进行调整。

API文档代码:

importjava.util.Arrays;

importjava.util.List;

importandroid.app.Activity;

importandroid.hardware.Sensor;

importandroid.hardware.SensorEvent;

importandroid.hardware.SensorEventListener;

importandroid.hardware.SensorManager;

importandroid.os.Bundle;

importandroid.widget.TextView;

publicclassAndroidEggSensorGetValueActivityextendsActivityimplementsSensorEventListener{

/**Calledwhentheactivityisfirstcreated.*/

privateSensorManagersensorManager;

privatestaticfinalintELEMENT_COUNT=30;

privatefloat[]samplingX=newfloat[ELEMENT_COUNT];//..................①

privatefloat[]samplingY=newfloat[ELEMENT_COUNT];

privatefloat[]samplingZ=newfloat[ELEMENT_COUNT];

privateintposition;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

sensorManager=(SensorManager)this.getSystemService(SENSOR_SERVICE);

setContentView(R.layout.main);

}

@Override

protectedvoidonResume(){

super.onResume();

Listsensors=sensorManager.getSensorList(Sensor.TYPE_ALL);

for(Sensors:

sensors){

sensorManager.registerListener(this,s,SensorManager.SENSOR_DELAY_NORMAL);

}

}

 

@Override

publicvoidonAccuracyChanged(Sensorsensor,intaccuracy){

//TODOAuto-generatedmethodstub

}

@Override

publicvoidonSensorChanged(SensorEvente){

if(position==ELEMENT_COUNT-1){

position=0;

}else{

position++;

}

floatx=e.values[sensorManager.DATA_X];

floaty=e.values[sensorManager.DATA_Y];

floatz=e.values[sensorManager.DATA_Z];

samplingX[position]=x;

samplingY[position]=y;

samplingZ[position]=z;

TextViewtextX=(TextView)findViewById(R.id.x);

textX.setText("x:

"+String.valueOf(getMedian(samplingX)));

TextViewtextY=(TextView)findViewById(R.id.y);

textY.setText("y:

"+String.valueOf(getMedian(samplingY)));

TextViewtextZ=(TextView)findViewById(R.id.z);

textZ.setText("Z:

"+String.valueOf(getMedian(samplingZ)));

}

privatefloatgetMedian(float[]values){         

//TODOAuto-generatedmethodstub

float[]tmp=values.clone();

Arrays.sort(tmp);

intlen=tmp.length;

intfirst=0;

for(inti=0;i

first=i;

}

returntmp[(len-first)/2+first];

}

@Override

protectedvoidonStop(){

super.onStop();

sensorManager.unregisterListener(this);

}

}

光线传感器:

光线感应器就是可以感应光线强度的一个设备,而我们对他的开发一般是通过感应光线强度的变化。

首先android通过一个SensorManager来管理各种感应器,而获得这个管理器的引用必须通过(SensorManager)getSystemService(Context.SENSOR_SERVICE);这句代码来获得。

(3)

在android系统中所有的感应器都属于Sensor类的一个实例,并没有继续细分下去,通过这次的主题,你也会发现android对于感应器的处理几乎是一摸一样的。

既然都是Sensor类,那么怎么获得相应的感应器呢?

这时就需要通过SensorManager来获得,我们通过这句代码来确定我们要获得感应器类型.

sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

很显然我获得的是光线感应器的引用.

(4)

既然已经获得相应的感应器的引用,那么我们的怎么用呢?

在第一部分我就说到了我们通过感应光线强度的变化,注意是‘变化’。

有些人获取已经明白了,既然是变化,我们肯定需要通过监听他,来获得变化。

因为我们就需要给我们的感应器加个监听,android提供了两个监听一个是SensorEventListener,另一个SensorListener,因为后者已经在androidAPI上显示过时了,那么我们就不介绍他了。

(5)

知道了有哪些感应器监听,那么我们就来介绍下如何给感应器加监听,这时又需要SensorManager,他就是感应器的保姆,很多关于感应器的部分都要靠他。

SensorManager关于加监听的方法有几个:

registerListenr(SensorListener

listenr,intsensors,intrate):

已过时

registerListenr(SensorListener

listenr,intsensors):

已过时

registerListenr(SensorEventListener

listenr,Sensorsensors,intrate)

registerListenr(SensorEventListener

listenr,Sensorsensors,intrate,Handlerhandler)

因为SensorListener已经过时,那么相应的注册方法,也就过时了。

说下各个参数的意义:

Listener:

相应监听器的引用

Sensor:

相应的感应器引用

Rate:

感应器的反应速度,这个必须是系统提供4个常量之一的:

SENSOR_DELAY_NORMAL:

匹配屏幕方向的变化

SENSOR_DELAY_UI:

匹配用户接口

SENSOR_DELAY_GAME:

匹配游戏

SENSOR_DELAY_FASTEST.:

匹配所能达到的最快

Handler:

(6)

要注意的是在android中注册了感应器,也就启用了他,而使用感应器是相当耗电的,这些是为什么感应器的应用没有那么泛滥的主要原因,所以我们必须在我们不需要他的时候,关掉他。

怎么关闭呢?

注册是启用,那么注销就是关闭了。

Android有以下一些注销方法:

unregisterListener(SensorListenerlistener):

已过时

unregisterListener(SensorListenerlistener,intsensors):

已过时

unregisterListener(SensorEventListenerlistener);

unregisterListener(SensorEventListenerlistener,Sensorsensor);

相应的参数作用,我相信大家也就知道了。

(7)

知道开和关,那么现在就来介绍具体的用!

也就是关于SensorEventListener的实现,实现这个监听器必须实现两个方法:

一个是onAccuracyChanged(Sensorsensor, int accuracy),另一个是onSensorChanged(SensorEventevent)。

第一个方法是反应速度变化的方法,也就是第五部分的rate变化时的方法.另一个是感应器的值变化的相应的方法。

但是需要注意的是,这两个方法是响应的是一起,就是说当感应器发生变化,两个方法都会一起被调用。

下面我介绍下:

accuracy的值,也就是那四个常量相应的整数:

SENSOR_DELAY_NORMAL:

3

SENSOR_DELAY_UI:

2

SENSOR_DELAY_GAME:

1

SENSOR_DELAY_FASTEST.:

0

现在介绍SensorEvent类:

他有四个成员变量:

Accuracy:

精确值

Sensor:

发生变化的感应器

Timestamp:

发生的时间,单位是纳秒

Values:

发生变化后的值,这个是一个长度为3数组

光线感应器只需要values[0]的值,其他两个都为0.

而values[0]就是我们开发光线感应器所需要的,单位是:

lux照度单位

而android提供了8个不同情况下的:

LIGHT_NO_MOON:

晚上没月亮时的lux值==0.001

LIGHT_FULLMOON:

晚上满月时的lux值==0.25

LIGHT_CLOUDY:

多云天气下的lux值==100.0

LIGHT_SUNRISE:

黎明时的lux值==400.0

LIGHT_OVERCAST:

阴天的lux值==10000.0

LIGHT_SHADE:

阴影下的lux值==20000.0

LIGHT_SUNLIGHT:

阳光下的lux值==110000.0

LIGHT_SUNLIGHT_MAX:

阳光下的最大lux值==120000.0[1]

第二章系统分析

2.1系统需求分析

该系统需要一个平台,这里我选择的是目前最流行的android。

也需要一个硬件基础。

也就是说该系统必须运行在拥有加速度传感器和光线传感器的android手机之上。

2.2用户需求

简单实用的防盗方案。

diy程度高,省电,可靠性好。

2.3系统逻辑方案

传感器实时获取数据,系统分析手机是否发生相对运动。

判断是否是用户,是用户退出防盗,相反就启动防盗。

第三章系统设计

3.1防盗系统功能需求简介

首先本系统需要有防盗基本的模块,同时还需要其他配套模块。

人性化的设计是必须的。

所以用户可以调整解锁方式、音量大小、防盗的安防等级。

3.2系统平台选择

目前android系统是最流行也是最开放的系统之一所以本系选择android系统。

Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。

Android操作系统最初由AndyRubin开发,最初主要支持手机。

2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。

Android的主要竞争对手是苹果公司的iOS以及RIM的BlackberryOS。

2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。

2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。

[2]

第四章系统实施

4.1UI设计

现在的好软件并不是功能好就能算上好软件。

必须在拥有好的功能的同时还需要有很好的交互。

古语说人靠衣装马靠鞍,软件的UI就如同人的脸一样。

美观、大方、简约是设计关键词。

我们在设计本系统的UI时充分考虑友好交互。

让用户在使用本软件的时候有一种耳目一新的感觉。

在素材的选择上。

我们尽量以原创为主。

在控件的设计上我们自己设计,自己用代码实现。

 

这样就可以避免使用平台提供的呆板的控件。

让用户有新鲜感。

4.2各子系统模块设计举例

防盗系统主模块

packagecdfs.c_alarm;

importjava.util.List;

importcom.wooboo.adlib_android.ImpressionAdView;

importandroid.app.Activity;

importandroid.app.AlertDialog;

importandroid.app.Dialog;

importandroid.app.Service;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.graphics.Color;

importandroid.graphics.Rect;

importandroid.hardware.Sensor;

importandroid.hardware.SensorEvent;

importandroid.hardware.SensorEventListener;

importandroid.content.SharedPreferences;

importandroid.content.SharedPreferences.Editor;

importandroid.hardware.SensorManager;

importandroid.media.AudioManager;

importandroid.media.MediaPlayer;

importandroid.os.Bundle;

importandroid.os.Looper;

importandroid.os.Vibrator;

importandroid.telephony.TelephonyManager;

importandroid.util.DisplayMetrics;

importandroid.util.Log;

importandroid.view.KeyEvent;

importandroid.view.LayoutInflater;

importandroid.view.MotionEvent;

importandroid.view.View;

importandroid.view.ViewGroup;

importandroid.view.Window;

importandroid.view.WindowManager;

importandroid.widget.LinearLayout;

importandroid.widget.LinearLayout.LayoutParams;

publicclassalarmextendsActivityimplementsSensorEventListener{

Viewcurrent;//记录当前View

intxz2_x=192;//地栏

intxz1_y=-500;//菜单

//GameViewgv;//GameView对象

Vibratorvibrator;;//震动马达

privateSensorManagermSensorManager;//传感器管理器

privatebooleanmRegisteredSensor;

WelcomeViewwelcome;//欢迎界面

booleanzhujiemian=true;//是否在主界面

booleansn=false;//室内模式启动标志位

booleansw=false;//室外模式启动标志位

MediaPlayerButtonMusic;//按键音效

MediaPlayerAlarmMusic;//报警音效

Rectshineimoshi;//室内模式的矩形框

Recthuwaimoshi;//户外模式的矩形框

Rectjiankong;//监控的矩形框

Rectbangzhu;//帮助的矩形框

Rectshezhi;//设置的矩形框

Rectguanyu;//关于的矩形框

Recttuichu;//退出的矩形框

Rectselect_sound;//声音设置

Rectseletc_wait_time;//报警延迟

Rectselect_lingming;//灵敏度设置

Rectshoushi;//解锁手势

intselect_sound_x;

intselect_wait_time_x;

intsele

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1