基于zigbee的无线定位刘会平2518.docx
- 文档编号:25194457
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:26
- 大小:740.12KB
基于zigbee的无线定位刘会平2518.docx
《基于zigbee的无线定位刘会平2518.docx》由会员分享,可在线阅读,更多相关《基于zigbee的无线定位刘会平2518.docx(26页珍藏版)》请在冰豆网上搜索。
基于zigbee的无线定位刘会平2518
合肥工业大学
计算机与信息学院
计算机系2009级
方向综合设计报告
方向:
分布式与控制
课题题目:
基于android的ARM开发
姓名:
曹政
专业班级:
计算机09-4班
学号:
20092761
指导教师:
马学森
方向综合设计内容
一.设计目的和内容
了解基于android系统的应用程序开发,并熟悉掌握。
了解SQL-Lite数据库的基本功能。
掌握基于android系统的手机理财软件开发和基本功能的实现。
二.背景知识
本项目的实现基于Android1.5版本,主要实现了一个提供日常消费和收入的明细记录功能,主要的使用数据库Android自带的SQL-Lite数据库,编程语言:
Java。
2.1Android系统
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于便携设备,如智能手机和平板电脑。
Android操作系统最初由AndyRubin开发,主要支持手机。
2005年由Google收购注资,并组建开放手机联盟开发改良随后,逐渐扩展到平板电脑及其他领域上。
2008年10月第一部Android智能手机发布。
2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。
2.2Eclipse平台介绍
eclipse-galileo
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
2.3关于SQL-Lite
SQlite是嵌入式SQL数据库引擎SQLite(SQLiteEmbeddableSQLDatabaseEngine)的一个扩展。
SQLite是一个实现嵌入式SQL数据库引擎小型C语言库(Clibrary),实现了独立的,可嵌入的,零配置的SQL数据库引擎。
特性包括:
事务操作是原子,一致,孤立,并且持久的,即使在系统崩溃和电源故障之后。
零配置——不需要安装和管理。
实现了绝大多数SQL92标准。
androidsqlitedatabase包里面的关键API,打开数据库:
staticSQLiteDatabaseopenOrCreateDatabase(Stringpath,SQLiteDatabase.CursorFactoryfactory)。
执行查询SQL:
Cursorquery(Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit)。
执行非查询sql:
voidexecSQL(Stringsql)。
三.系统方案和实现
3.1启动程序
开机启动的时候显示启用了一个Activity,调用其中的onCreate方法,对其中的各种控件进行初始化。
。
界面的具体xml如下:
main.xml
xml version="1.0" encoding="utf-8"?
>
id="@+id/RelativeLayout01"xmlns: android=" android: layout_gravity="center_vertical|center_horizontal" android: layout_height="wrap_content" android: layout_width="wrap_content"> id="@+id/ImageView01" android: src="@drawable/logo3" android: layout_width="wrap_content" android: layout_height="wrap_content"> id="@+id/TextView01" android: text="@string/welcome" android: layout_below="@id/ImageView01" android: layout_width="wrap_content" android: layout_height="wrap_content">
3.2添加账目(数据录入)
当用户进入系统以后,从前面的登录页面跳转进入添加账单页面,这个页面主要是用来登记收支记录的,就是向数据库SQL-Lite中录入明细。
表结构就是
db.execSQL("CREATETABLEbills("
+"_IDINTEGERPRIMARYKEY,"//id
+"feeinteger,"
+"acctitemidinteger,"//账目类型
+"useridinteger,"//使用者
+"sdateTEXT,"//日期
+"stimeTEXT,"//时间
+"descTEXT"//备注
+");");
3.3账目管理
在已录入账目的页面里实现账目的增加、删除、编辑,从而实现账目细则的人性化处理和修改,便于账目管理和处理。
package com.cola.ui;
import android.app.AlertDialog;
import android.app.ExpandableListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.SimpleCursorTreeAdapter;
import android.widget.TextView;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
/**
* Demonstrates expandable lists backed by Cursors
*/
public class Frm_Editacctitem extends ExpandableListActivity {
private int mGroupIdColumnIndex;
private String mPhoneNumberProjection[] = new String[] { People.Phones._ID,
People.Phones.NUMBER };
private ExpandableListAdapter mAdapter;
BilldbHelper billdb;
Dialog_edit newdialog;
private ExpandableListContextMenuInfo info;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("ColaBox-选择账目");
billdb = new BilldbHelper(this);
// Query for people
Cursor groupCursor = billdb.getParentNode();
// Cache the ID column index
mGroupIdColumnIndex = groupCursor.getColumnIndexOrThrow("_ID");
// Set up our adapter
mAdapter = new MyExpandableListAdapter(groupCursor, this,
android.R.layout.simple_expandable_list_item_1,
android.R.layout.simple_expandable_list_item_1,
new String[] { "NAME" }, // Name for group layouts
new int[] { android.R.id.text1 }, new String[] { "NAME" }, //
new int[] { android.R.id.text1 });
setListAdapter(mAdapter);
registerForContextMenu(getExpandableListView());
}
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id)
{
Bundle bundle = new Bundle();
bundle.putString("DataKey", ((TextView)v).getText().toString());//给bundle 写入数据
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
billdb.close();
finish();
return true;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateOptionsMenu(menu);
if (ExpandableListView
.getPackedPositionType(((ExpandableListContextMenuInfo) menuInfo).packedPosition) == 1) {
Log.v("cola", "run menu");
menu.setHeaderTitle("菜单");
menu.add(0, 1, 0, "新 增");
menu.add(0, 2, 0, "删 除");
menu.add(0, 3, 0, "编 辑");
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
info = (ExpandableListContextMenuInfo) item.getMenuInfo();
if (item.getItemId() == 1) {
// Log.v("cola","id"+info.id);
newdialog = new Dialog_edit(this, "请输入新增账目的名称", "",
mDialogClick_new);
newdialog.show();
} else if (item.getItemId() == 2) {
new AlertDialog.Builder(this).setTitle("提示").setMessage("确定要删除'"+((TextView)info.targetView).getText().toString()+"'这个账目吗?
")
.setIcon(R.drawable.quit).setPositiveButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
billdb.Acctitem_delitem((int)info.id);
updatedisplay();
}
}).setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// 取消按钮事件
}
}).show();
} else if (item.getItemId() == 3) {
newdialog = new Dialog_edit(this, "请修改账目名称",
((TextView) info.targetView).getText().toString(),
mDialogClick_edit);
newdialog.show();
}
return false;
}
private Dialog_edit.OnDateSetListener mDialogClick_new = new Dialog_edit.OnDateSetListener() {
public void onDateSet(String text) {
Log.v("cola", "new acctitem");
billdb.Acctitem_newitem(text,ExpandableListView.getPackedPositionGroup(info.packedPosition));
updatedisplay();
}
};
private Dialog_edit.OnDateSetListener mDialogClick_edit = new Dialog_edit.OnDateSetListener() {
public void onDateSet(String text) {
billdb.Acctitem_edititem(text,(int)info.id);
updatedisplay();
}
};
private void updatedisplay(){
Log.v("cola", "update display");
((MyExpandableListAdapter)mAdapter).notifyDataSetChanged();
}
public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {
public MyExpandableListAdapter(Cursor cursor, Context context,
int groupLayout, int childLayout, String[] groupFrom,
int[] groupTo, String[] childrenFrom, int[] childrenTo) {
super(context, cursor, groupLayout, groupFrom, groupTo,
childLayout, childrenFrom, childrenTo);
}
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
String pid = groupCursor.getLong(mGroupIdColumnIndex) + "";
// Log.v("cola","pid="+pid);
return billdb.getChildenNode(pid);
}
@Override
public long getGroupId(int groupPosition) {
// Log.v("cola", "getGroupId " + groupPosition);
Cursor groupCursor = (Cursor) getGroup(groupPosition);
return groupCursor.getLong(mGroupIdColumnIndex);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// Log.v("cola", "getChildId " + groupPosition + "," +
// childPosition);
Cursor childCursor = (Cursor) getChild(groupPosition, childPosition);return childCursor.getLong(0);
}
}
}
3.4账目检索
在已录入的账目的界面里,实现按月份对账目的检索。
3.5账目统计
在已录入的账目进行统计,显示当月收入、支出、小计,从而清楚了解当月的收支情况。
四.设计结果(包括必要的截图)
4.1启动程序
4.1下载程序至ARM板
4.2运行结果
5.设计总结和体会
通过本次综合实训我学会了如何在PC上使用JAVA语言编写串口程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 zigbee 无线 定位 刘会平 2518