1、高级操作系统期末论文题 目 基于加速度传感器的老人跌倒检测报警系统基于加速度传感器的老人跌倒检测报警系统摘要:在社会逐渐走向老龄化的今天,独自生活的老年人的行动安全已经成为社会的重要问题。以前大多数的报警系统多采用按键式的报警方式,实际上,来年人摔倒时,常常失去自我意识,所以单纯依靠老年人摔倒后主动触发报警具备一定的风险。随着开源的 Android 平台移动终端操作系统的推出,这一系统具备广泛的兼容性,为了减少老年人因跌倒造成的身心伤害,利用当前android 手机集成的加速度传感器进行人体跌倒的检测,当检测到人体发生跌倒时对老人当前的位置进行定位并调用 SMS 将摔倒的信息和位置信息发送到预
2、先设置的紧急联系人手机,可以提高老年人摔倒报警的准确性。关键词:加速度传感器;跌到检测;定位;SMSAbstract:Today, gradually aging society, the elderly living alone safety has become an important problem of social action. Before most of the alarm system use touch-tone phones more alarm way, in fact, when people fall next year, often lose conscious
3、ness, so rely on initiative to trigger the alarm after the elderly fall have a certain risk. As open-source Android platform of mobile terminal operating system, the introduction of the system have a wide range of compatibility, in order to reduce the physical and mental damage caused by the fall in
4、 the elderly, using the current Android integration acceleration sensor falls for human detection, when the detected human body fall occurs on the current position of the old man to locate and invoke the SMS will fall information and location information sent to the preset emergency contact phone, c
5、an improve the accuracy of the elderly fall alarm.Keywords:acceleration sensor; detect; location;SMS11 前言1.1 研究背景及意义随着我国人口老龄化的趋势,如何照看老年人成为社会各界关注的问题。再加上现在“空巢老人”的现象已经成为人口老龄化的一种社会问题,引起了社会各界的高度关注。跌倒对于老年人来说是一项重大的威胁,如何准确检测出跌倒并及时发出报警求助信息,使老年人跌倒伤害降到最低,是人体健康监护领域中非常具有研究价值的问题。因此,开发具有便携性、高精度性、实时性以及自动报警功能的无线跌倒检测
6、系统,在人体发生跌倒行为时,第一时间检测出并发出警报信息进行求助,是整个社会的需要。传统的跌倒检测技术在设备、场景等方面具有较大的局限性,随着人工智能、无线通信、微电子技术以及生理信号检测与处理等技术的发展,使得人体运动状态信息的检测获得帮助。伴随着科技的进步,移动终端已经成为了每一个现代人生活中所必不可少的基本用品。现阶段无线宽带网络的迅猛发展也悄然地改变着人们的生活方式。目前的网络已经可以很好地满足用户对于高速移动数据的需求,从而促使手持设备向智能化、多媒体化发展。另外 Android 的系统架构及开发原理使它成为当前手持设备中具有可移植的操作系统。当然,更为重要的是 Android 的开
7、源性降低了其开发成本,Android 使用 Java 作为程序开发的语言,为用户所提供大量的程序组件,用户可以直接在这些组件基础上构建自己的开发程序。现在的移动终端中也集成了多种传感设备,通过对外界变化的及时获取,计算出加速度、地理位置、身体情况等所需的信息。本文利用加速度传感器,开发出基于 Android 的 App,对老年人的活动信息进行检测,在检测到异常情况时做出报警处理,使得老年人能够得到及时有效的救助,避免严重后果的发生。1.2 国内外的研究现状跌倒检测系统是一种个人远程监护系统,保护了老年人群的健康与安全,它可以有效检测老年人是否发生跌倒并及时报警。所以,跌倒检测技术愈发受到社会各
8、界的重视。从现今国内外的研究成果来看,关于老年人摔倒时进行报警的方法种类繁多,根据各项产品在研发和使用中得到的摔倒信息的形式和来源不同,主要的方法可以分为以下几类:1.老年人自主启动的摔倒报警系统设备要求老年人摔倒时自主报警,所以使用者必须具备一定程度的自救能力和自主活动能力,并且只有在该用户摔倒时,保持清醒才能保证报警功能的顺利实施。所以这也存在着很大的安全隐患:如果使用者由于摔倒对身体机能造成损伤,失去了自我启动设备的行动能力,无法及时按下报警按钮,这种设备就将失去它的报警功能。2.利用视频图像信息检测的摔倒报警系统在使用时,可以设置在老年人易发生摔倒的地方,这种报警方式主要是利用视频图像
9、检测设备实时捕捉老年人的活动,当老年人在图像信息中出现非正常情况下的身体移动或位置姿态变化时,检测摔倒行为的发生,实现自动报警。它有利于老年人的身体自由活动,但是使用具有空间上的局限性。并且这种摔2倒报警系统的使用,还有可能侵犯老年人的隐私。本文采用基于 Android 的App,只需要在老人的手机上安装上软件进行相应简单的设置,就可以实现检测和报警。2 软件设计及分析2.1 总体设计基于 Android 平台开发的老人跌倒检测报警系统主要用来对人体跌倒进行识别和报警,主要功能包括,通过获取到的加速度值和角速度值进行判别跌倒是否发生并用折线图对加速度变化的实时信息进行动态显示,使用百度地图定位
10、功能获取到老人跌倒时所处的位置,用户需要进行紧急联系人设置以便检测到跌倒发生时系统进行自动报警,检测到跌倒时将用户位置和摔倒的信息以短信发送到紧急联系人手机上。该系统中跌倒的识别是一个难点,只进行加速度和角速度阈值设定的方式 来判断摔倒是否发生测试结果会有一定的误差,要使测试结果更精确则需要使用识别数据库。即将人体运动时可能发生的各种情况如正常行走、跑步、跌倒等的相关数据保存到数据库中,判别跌倒是否发生时只需要和数据库中的数据进行对比即可。2.2 设计环境开发软件:Eclipse开发语言:Java+SQLite运行环境:Android 4.1.0 及以上2.2.1 加速度传感器简介加速度传感器
11、是一种能够测量加速力的电子设备。通过测量由于重力引起的加速度,你可以计算出设备相对于水平面的倾斜角度。通过分析动态加速度,你可以分析出设备移动的方式。加速度传感器是一种能够测量加速力的电子设备。因此其的范围比重力感应器要大,但是一般在手机被提到的加速度感应器时,其实就是指重力感应器,因此两者可以看作是等价的。加速度传感器应用于地震检波器设计、车祸报警、监测高压导线舞动、汽车安全、游戏控制、图像自动翻转、电子指南针倾斜校正、GPS 导航系统死角的补偿、计步器功能、防手抖功能、设备或终端姿态检测等众多领域。2.2.2 跌到检测简介跌倒检测系统,其包括:一个或多个传感器,所述传感器用于监测跌倒检测系
12、统的用户的运动以及用于生成相应的信号;用于根据用户身体状况的一个或多个测量结果确定阈值的模块;处理器,所述处理器用于分析信号以识别用户的跌倒、分析信号以识别跌倒。一般情况下,人体跌倒行为通常发生在 2 秒左右。跌倒过程中身体重心的瞬间移动会产生一个加速度,身体的倾倒也会产生一个偏离竖直方向的角度。在非跌倒状态如行走过程中,人体上躯干偏离 Z 轴的倾斜角3处于一个相对安全的范围内,而跌倒后人体多处于俯卧、侧卧或仰卧的状态,躯干方向接近于水平,即偏离竖直方向的倾斜角接近 90 度。因此我们选取加速度和身体的倾斜角这两个特征作为判别跌倒与其它日常活动的依据。.2.2.3 定位简介现在人们能实现的定位
13、的方式很多百度地图就是其中一个,百度提供的一项网络地图搜索服务,覆盖了国内近 400 个城市、数千个区县。在百度地图里,用户可以查询街道、商场、楼盘的地理位置,也可以找到离您最近的所有餐馆、学校、银行、公园等等。利用百度地图定位功能实时的知道用户所处的位置,要想到达目的地可以选择的路线信息等。2.2.4 SMS短信服务是一种存储和转发服务。也就是说,短消息并不是直接从发送人发送到接收人,而始终通过短信服务中心进行转发。如果接收人处于未连接状态(可能电话已关闭) ,则消息将在接收人再次连接时发送。SMS 具有许多其他的重要功能。它既是一个庞大的直接面对用户的服务部门,需要位于不同工作点的许多工作
14、人员通过客户端同时对数据库进行操作3 系统需求分析与概要设计3.1 需求分析本系统是一个基于安卓系统的人体跌倒检测报警系统软件,通过使用此软件能够快捷的识别出人体是否跌倒,利用百度地图对人所处的位置进行定位,并使用 SMS 将位置和摔倒的信息发送到家人的手机上,本系统包括的功能有紧急联系人信息添加,百度地图定位,跌倒识别的信息用折线图显示,短信的发送。3.2 系统概要设计3.2.1 系统功能模块介绍(1)添加紧急联系人信息模块:用户点击联系人按钮后可以通过点击添加按钮进入紧急联系人信息页面进行信息的添加也可以点击通讯录从手机通讯录中选择添加。该模块中包含了两个子模块自主添加联系人模块和从通讯录
15、选择添加联系人模块,模块界面如下图所示:4图 3.1 系统主界面 图 3.2 紧急联系人信息模块界面(2)百度地图定位模块:当老人跌倒需要家人的帮助时就需要能知道老人当时所在的位置,所以利用百度地图里的定位功能实现实时定位。模块界面如下: 图 3.3 百度地图模块界面(3)跌倒识别模块:现在的 android 手机中都已集成了加速度传感器,所以利用加速度传感器的和速度是否超过设定的阈值判定人体是否摔倒,并将信息用折线图显示。该模块中包含了加速度显示和折线图显示加速度值两个子模块,界面如下图所示:5图 3.4 跌倒识别模块界面(4)发送短信模块:当检测到用户摔倒时将用户的当前的所在位置和摔倒的信
16、息发送到指定的紧急联系人的手机上。模块的界面如下图所示:图 3.5 发送短息模块界面3.2.2 功能模块结构图6老人跌倒检测报警系统紧急联系人信息设置 百度地图定位 摔倒识别 短信发送自主添加联系人 从通讯录选取联系人 加速度显示 折线图显示加速度值图 3.6 功能模块结构图3.2.3 系统流程图开始联系人设置百度定位折线图显示发送短信合速度 a 阈值获取加速度是否图 3.7 系统流程图74 系统详细设计4.1 联系人设置模块4.1.1 代码设计紧急联系人设置的 xml 布局由两个 Button 和一个 Textview 组成,两个Button 分别表示通过系统自己的添加界面添加紧急联系人和调
17、用手机通讯录选择添加紧急联系人,Textview 用来显示添加的紧急联系人信息(包括姓名,电话,地址)模块部分代码如下:protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_contact_info);show=(TextView)findViewById(R.id.show);Intent i=getIntent();/* 实现紧急联系人的添加*/findViewById(R.id.add).setOnClic
18、kListener(new OnClickListener() /调用 “添加联系人信息”页面Overridepublic void onClick(View v) Intent jIntent=new Intent(ContactInfoActivity.this,AddContactActivity.class);/jIntent.putExtra(“familyInfo“,new familyInfo(“, “, “);startActivityForResult(jIntent, 0););/* 实现通讯录中选取联系人* */findViewById(R.id.book).setOnC
19、lickListener(new OnClickListener() Overridepublic void onClick(View v) Intent bIntent=new Intent(ContactInfoActivity.this,PhoneActivity.class);startActivityForResult(bIntent, 0););/处理接收的数据 8Overrideprotected void onActivityResult(int requestCode,int resultCode,Intent data)super.onActivityResult(requ
20、estCode, resultCode, data);/接收数据:采用Bundle传值 Bundle bundle =data.getExtras();String name=bundle.getString(“name“); String telphone=bundle.getString(“telphone“); String address=bundle.getString(“address“); show.setText(“联系人信息:“+“n姓名:“ +name+“n电话:“+telphone+“n地址:“+address);show.setTextSize(20);4.1.2 界面
21、设计联系人设置模块界面如图 4.1.1 所示。图 4.1 紧急联系人信息界面图4.2 自主添加联系人模块4.2.1 代码设计自主添加联系人 activity_add_contact.xml 布局主要由三个 TextView 来分别显示用户需要添加的姓名、电话和地址信息、三个 EditText 分别由用户输入对应的信息、两个Button 用来实现用户输入信息的存储并返回到另一个 Activity 将信息显示出来,取消按钮用来取消本次添加操作。模块的部分代码如下:protected void onCreate(Bundle savedInstanceState) super.onCreate(sa
22、vedInstanceState);setContentView(R.layout.activity_add_contact);/接收数据9Intent jIntent=getIntent();/实现“联系人信息页”到“ 添加联系人信息”页name=(EditText)findViewById(R.id.editText1); telphone=(EditText)findViewById(R.id.editText2);address=(EditText)findViewById(R.id.editText3);/返回 联系人信息页findViewById(R.id.confirm).set
23、OnClickListener(new OnClickListener() Overridepublic void onClick(View v) Bundle bundle=new Bundle();bundle.putString(“name“,name.getText().toString();bundle.putString(“telphone“,telphone.getText().toString();bundle.putString(“address“,address.getText().toString();Intent intent=new Intent(AddContact
24、Activity.this,ContactInfoActivity.class);intent.putExtras(bundle);setResult(1, intent);finish(););4.2.2 界面设计自主添加联系人模块界面如图 4.2.1 和图 4.2.2 所示。图 4.2 添加联系人界面 图 4.3 取消按钮信息提示界面4.3 通讯录获取联系人模块104.3.1 代码设计通讯录获取联系人 activity_phone.xml 布局由 ListView 来显示从用户手机通讯录中读取出来的联系人信息,模块部分代码如下:public class GetNumber public s
25、tatic List lists = new ArrayList();public static String getNumber(Context context) Cursor cursor = context.getContentResolver().query(Phone.CONTENT_URI,null, null, null, null);String phoneNumber;String phoneName;while (cursor.moveToNext() phoneNumber = cursor.getString(cursor.getColumnIndex(Phone.NU
26、MBER);/电话号码phoneName = cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME);/姓名PhoneInfo info = new PhoneInfo(phoneName, phoneNumber);lists.add(info);System.out.println(phoneName);System.out.println(phoneNumber);return null;4.3.2 界面设计通讯录获取联系人模块界面如图 4.3.1 所示。图 4.4 通讯录选择联系人信息界面4.4 百度地图定位模块114.4.
27、1 代码设计百度地图定位 activity_locationss.xml 布局由一个 Button 来驱动用户调用百度地图 API 实现百度地图的定位,在实现百度地图定位时需要根据所建项目的包和Eclipse 中的 SHA1 fingerprint 信息来申请对应的 API key 并在配置文件中配置响应信息,还需要导入 baidumapapi 的包。模块的部分代码如下:public class MyLocationListenner implements BDLocationListener Overridepublic void onReceiveLocation(BDLocation l
28、ocation) / map view 销毁后不在处理新接收的位置if (location = null | mMapView = null)return;MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius()/此处设置开发者获取到的方向信息,顺时针 0-360.direction(100).latitude(location.getLatitude().longitude(location.getLongitude().build();mBaiduMap.setMyLocation
29、Data(locData);if (isFirstLoc) isFirstLoc = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude();MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);mBaiduMap.animateMapStatus(u);String addr = location.getAddrStr();if (addr != null) Log.i(“Test“, addr); else Log.i(“Test“,“
30、error“);double longitude = location.getLongitude();double latitude = location.getLatitude();if (longitude 0 LatLng ptCenter = new LatLng(latitude,longitude);/ 反 Geo搜索mSearch.reverseGeoCode(new ReverseGeoCodeOption().location(ptCenter); /停止定位mLocClient.stop();12public void onReceivePoi(BDLocation poi
31、Location) 4.4.2 界面设计百度地图定位模块界面如图 4.4.1 所示。图 4.5 百度地图定位信息界面4.5 加速度信息显示模块4.5.1 代码设计加速度信息显示 activity_sensor.xml 布局由一个 TextView 显示通过手机中的加速度传感器获取到的人体运动加速度的数据,此处需要计算加速度的合速度并设定相应的阈值,若获取的合速度 a 超过了阈值则表示人摔倒否则属于正常情况。模块部分代码如下:/* 功能:采集加速度传感器,得到传感器从外界采集的数据 */Overrideprotected void onCreate(Bundle savedInstanceSta
32、te) super.onCreate(savedInstanceState);setContentView(R.layout.activity_sensor);showTextView = (TextView) findViewById(R.id.showTextView);sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);sensorMan
33、ager.registerListener(this, accelerometerSensor,SensorManager.SENSOR_DELAY_GAME);/坐标轴都是手机从左侧到右侧的水平方向为x轴正向,从手机下部到上部为y轴正向,垂直于手机屏幕向上为z轴正向13Overridepublic void onSensorChanged(SensorEvent event) if (event.sensor.getType() = Sensor.TYPE_ACCELEROMETER) / x,y,z分别存储坐标轴x,y,z 上的加速度float x = event.values0;floa
34、t y = event.values1;float z = event.values2;/ 根据三个方向上的加速度值得到总的加速度值afloat a = (float) Math.sqrt(x * x + y * y + z * z);System.out.println(“和加速度a-“ + a);/ 传感器从外界采集数据的时间间隔为10000 微秒System.out.println(“x轴加速度x-“ + x);System.out.println(“y轴加速度-“ + y);System.out.println(“z轴加速度-“ + z);Log.d(“TAG“, “x-“ + x);
35、Log.d(“TAG“, “y-“ + y);Log.d(“TAG“, “z-“ + z);showTextView.setText(“t“+“合速度a-“+ a+“nX轴加速度-“ + x +“nY轴加速度-“ +y +“nZ轴加速度-“ + z);/将当前时间赋值给timestamptimestamp = event.timestamp;4.5.2 界面设计加速度信息显示模块界面如图 4.5.1 所示。图 4.6 人体运动加速度信息显示界面144.6 折线图显示合速度信息模块4.6.1 代码设计折线图显示合速度 activity_chart.xml 布局由一个 TextView、一个Lin
36、earLayout 和一个 Button 组成,TextView 反映折线图的内容, LinearLayout 用来显示折线图,Button 用来返回上一级的 Activity 页面。代码如图所示:Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_chart);LinearLayout layout = (LinearLayout)findViewById(R.id.linearlayout)
37、;/生成图表chart = ChartFactory.getTimeChartView(this, getDateDemoDataset(), getDemoRenderer(), “HH:mm:ss“);layout.addView(chart, new LayoutParams(LayoutParams.WRAP_CONTENT,370);/为 TextView添加事件/ textview = (TextView)findViewById(R.id.myview);/ textview.setOnClickListener(new View.OnClickListenerButton bu
38、tton = (Button)this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener()Overridepublic void onClick(View v) Toast.makeText(ChartActivity.this, “加速度“, 1).show();Intent intent = new Intent();intent.setClass(ChartActivity.this, MainActivity.class);startActivity(intent););handl
39、er = new Handler() Overridepublic void handleMessage(Message msg) /刷新图表updateChart();super.handleMessage(msg);task = new TimerTask() Overridepublic void run() Message message = new Message();message.what = 200;handler.sendMessage(message);15;timer.schedule(task, 2*1000,1000);4.6.2 界面设计折线图显示合速度信息模块界面
40、如图 4.6.1 所示。图 4.7 折线图显示人体运动加速度信息界面4.7 发送短信模块4.7.1 代码设计短信发送 activity_sms.xml 布局由两个 TextView 和两个 EditView 和一个Button 组成, TextView 用来作为用户发送短信时输入信息的提示,EditView 用来给用户进行信息编辑,Button 实现短信发送的操作。模块部分代码如下:protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layo
41、ut.activity_sms);phone_number_editText = (EditText)findViewById(R.id.phone_number_editText);sms_content_editText = (EditText) findViewById(R.id.sms_content_editText);send_sms_button = (Button) findViewById(R.id.send_sms_button);send_sms_button.setOnClickListener(new OnClickListener() Overridepublic
42、void onClick(View arg0) String phone_number = phone_number_editText.getText().toString().trim();String sms_content = 16sms_content_editText.getText().toString().trim();if(phone_number.equals(“) Toast.makeText(SMSActivity.this, R.string.str_remind_input_phone_number, Toast.LENGTH_LONG).show(); else S
43、msManager smsManager = SmsManager.getDefault();if(sms_content.length() 70) List contents = smsManager.divideMessage(sms_content);for(String sms : contents) smsManager.sendTextMessage(phone_number, null, sms, null, null); else smsManager.sendTextMessage(phone_number, null, sms_content, null, null);To
44、ast.makeText(SMSActivity.this, R.string.str_remind_sms_send_finish, Toast.LENGTH_SHORT).show(); );4.7.2 界面设计短信发送模块界面如图 4.7.1 所示。图 4.8 短信发送界面4.8 系统开发过程故障排除在整个系统开发的过程中,总会遇到各种各样的问题,现将部分问题及解17决办法总结如下:(1) 在 Activity 中,获取被启动的 Activity 传回的信息时报空指针的错误,原因是布局文件中有些控件未被绑定组件,所以获取的值是空的。(2) 在利用百度地图进行定位时报错:Unable to
45、 execute dex: Multiple dex files define,原因是重复定义 support.v4 的支持包,解决办法:删掉一个即可。(3) 在运行程序时报错:Please check logcat output for more details。原因是测试的手机内存不足,解决办法:删除手机上的其他应用。(4) 点击按钮时程序不响应,但程序不报错误。原因是:在页面布局中,图片和按钮的命名相同时。(5) 在系统中需要使用折线图显示获取到的加速度值得变化信息,出现错误:java.lang.NoClassDefFoundError:org.achartengine.model.XY
46、MultipleSeriesDataset,原因:依赖的 Jar 包没有编译到 apk 中,解决办法:选择工程 Project 右键属性Java Build Path Order and Export将引入的 Jar 包移到 Android 包之上Clean 运行程序即可。(6) 在利用百度地图定位时,之前能正常定位,一段时间之后运行程序打开时只显示白色网格并不能正常定位,解决办法:重新申请了百度地图API key 替换之前的 key 之后即可正常运行。(7) 导入包之后报错,错因是添加 jar 包之后移动了 jar 文件的位置。(8) 报错:Unable to execute dex: Mu
47、ltiple dex files define;Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define,原因是有重复的 jar 被引用,可以查看你的 build path,尤其是 Android Dependencies 一定有重复引入的.jar 包,解决的方法是在 libs 删除重复的 jar 即可。4.9 系统测试系统测试时系统开发中的一个重要环节,测试的主要目的是展示人体跌倒检测系统的运行状况、是否达到预期设计的指标。测试的主要方面有:(1) 测试系统安装后占用手机资源的情况
48、;(2) 驱动运行状态;(3) 传感器数据的精度和周期;(4) 定位信息的准确性;(5) 短信发送是否成功;(6) 摔倒发生时系统是否触发相应的事件。5.总结这个学期在其他学习之余,我都会在网上看一些安卓基础知识方面的视频18并跟着进行操作,从一开始的环境搭建到现在能简单的运用一些代码,也算慢慢找到一些学习的方法。选择这样一个题目作为期末作业是家里的老人独自在家时摔倒受伤没有及时地通知到家人。之后看见别人做了这样的软件觉得很有用就想自己尝试一下,刚开始从百度地图定位,短信界面的调用和通讯录信息的获取等简单的学习开始的。开始的时候总会遇到各种问题,个人在遇到问题时也总会先在网上找资料尽量自己解决
49、,所以进度比较慢。有时候遇到一个错误或许好久都没有找到解决的办法,但是在各种查阅资料或者看别人的代码之后将问题解决了之后总会有些感触。在这次的作业中摔倒的识别仅仅通过加速度传感器获取的信息来进行判断准确性不高,之前是想通过加速度传感器和陀螺仪传感器两者结合进行判断的(即加速度大于设定的阈值时进一步判断角度偏离来识别跌倒是否发生)由于手机没有陀螺仪传感器所以只能使用加速度传感器。在系统中紧急联系人信息,百度地图定位信息,加速度值等需要用数据库进行存储,最后才能更好的实现数据的交互,但到目前为止对数据库的应用也没有弄明白导致有限的时间内最后的结果没有出来,这有些遗憾。不过做这个系统并不仅仅是为了交作业,我后面还有继续将它做出来。在这个过程中,不断的解决自己遇到的问题并进行总结,也让自己有所成长。参考文献: