文档库 最新最全的文档下载
当前位置:文档库 › Android平台蓝牙通信的实现

Android平台蓝牙通信的实现

Android平台蓝牙通信的实现
Android平台蓝牙通信的实现

Android平台蓝牙通信的实现

一、Android蓝牙概况

1.蓝牙的来历

蓝牙这个名称来自于第十世纪的一位丹麦国王哈拉尔蓝牙王,Blatand 在英文里的意思可以被解释为Bluetooth( 蓝牙)因为国王喜欢吃蓝莓,牙龈每天都是蓝色的所以叫蓝牙。在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。行业组织人员,在经过一夜关于欧洲历史和未来无线技术发展的讨论后,有些人认为用Blatand 国王的名字命名再合适不过了。Blatand 国王将挪威,瑞典和丹麦统一起来;他的口齿伶俐,善于交际,就如同这项即将面世的技术,技术将被定义为允许不同工业领域之间的协调工作,保持着各个系统领域之间的良好交流,例如计算机,手机和汽车行业之间的工作。名字于是就这么定下来了。

Blatand 国王

蓝牙的创始人是爱立信公司,爱立信早在1994 年就已进行研发。1997 年,爱立信与其他设备生产商联系,并激发了他们对该项技术的浓厚兴趣。1998 年2 月,跨国大公司包括诺基亚、苹果、三星组成的一个特殊兴趣小组(SIG),他们共同的目标是建立一个全球性的小范围无线通信技术,即蓝牙。而蓝牙这个标志的设计:它取自Harald Bluetooth 名字中的「H」和「B」两个字母,用古北欧字母来表示,将这两者结合起来,就成为了蓝牙的logo (见图)。

蓝牙logo

2.蓝牙开发概况

对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少

Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试至少需要两部手机,所以制约了很多技术人员的开发

现如今,蓝牙已是每部安卓手机标配的功能,多用于蓝牙耳机和传输文件,还可以多部手机之间建立蓝牙通信,本文就通过参考SDK自带的一个BluetoothChat的例程,开发一个新的蓝牙聊天室。

在Android1 的时候,相关API 非常不完善,还不能简单的使用Bluetooth 开发,有一个开源项目可以帮助程序员使用、开发蓝牙,支持直接方法bluetooth 协议栈。在Android2 以后,框架提供了一些官方API 来进行蓝牙的通信,但目前的程序也比较不完善。本文主要讨论Android2 蓝牙通信的API 使用方法。

首先看聊天效果图:

二、Android编程介绍

(一)编程环境

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

虽然大多数用户很乐于将Eclipse 当作Java 集成开发环境(IDE)来使用,但Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展Eclipse 的软件开发人员,因为它允许他们构建与Eclipse 环境无缝集成的工具。由于Eclipse 中的每样东西都是插件,对于给Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

(二)Android程序模块

2.1 AndroidManifest.xml 文件

AndroidManifest.xml是每一个应用都需要的文件。位于工程文件根目录下,描述了程序包的一个全局变量,包括的应用组件(activities, services等等)和为每个组件的实现类, 什么样的数据可以操作, 以及在什么地方运行。

本应用的AndroidManifest.xml文件:

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="8"

android:targetSdkVersion="10" />

android:anyDensity="true"

android:largeScreens="true"

android:normalScreens="true"

android:resizeable="true"

android:smallScreens="true" />

android:allowBackup="true"

android:icon="@drawable/icon"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name="https://www.wendangku.net/doc/8410125444.html,.zjp.bluetoothdemo.ChatActivity"

android:label="@string/app_name"

android:launchMode="singleTask"

android:screenOrientation="portrait"

android:windowSoftInputMode="adjustPan" >

android:name="https://www.wendangku.net/doc/8410125444.html,UNCHER" />

android:name="https://www.wendangku.net/doc/8410125444.html,.zjp.bluetoothdemo.GetVersion"

android:screenOrientation="portrait" >

android:name="https://www.wendangku.net/doc/8410125444.html,.zjp.bluetoothdemo.task.TaskService" >

android:name="https://www.wendangku.net/doc/8410125444.html,.zjp.bluetoothdemo.SelectDevice"

android:screenOrientation="portrait" >

首先minSdkVersion用于说明该应用程序所需要使用的最小SDK版本,这里设置为,也就是说最小需要使用android1.8版本的sdk。然后打开了BLUETOOTH和BLUETOOTH_ADMIN两个蓝牙操作相关的权限,最后看到了三个Activity和一个service 的声明,他们分别是ChatActivity(默认主Activity),SelectDevice(显示设备列表),GetV ersion,以及TaskService。

2.2layout

2.2.1XML文件

一个界面就是一个Activity,但是界面上会有很多的控件之类的,只要是用户可以看到的,

这些东西都是view 。通过代码来设计屏幕显示始终是一件麻烦的事情,Android 通过支持res/layout/目录下的XML 文档设计屏幕显示来解决。这里面定义了大量的自定义元素,一个View 占有一个长方形的地方,而且View 是可以嵌套的。 你可以像创建HTML 文档一样,通过保存在应用的XML 文件中一系列的嵌套标签,实现一个集合的版面设计。

activity_chat 的布局如下

我们可以在代码Activity.onCreate()实现中通过调用 setContentView(https://www.wendangku.net/doc/8410125444.html,yout.file_name)方法加载显示资源。

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 使用主界面布局

setContentView(https://www.wendangku.net/doc/8410125444.html,yout.activity_chat);

// 获得蓝牙管理器,打开蓝牙设备

btEnable();

// 初始化界面 initChatView();}

2.2.2控件的数据绑定

对于控件的数据绑定,会提及UI 上面的现实组织.。这些组成对象是经典AdapterView 类的子类.,例如包括图像,数层结构表现.这些对象有2个通用的任务:

数据层的填充

LinearLayout

LinearLayout

ListView

LinearLayout LinearLayout ImageView Button EditText

用户操作选择

在本文中主要涉及用户操作选择,举两个典型的例子

1.activity_chat .xml中“发送”按钮的处理

先在界面初始化方法中绑定数据并设置监听器

mSendBtn = (Button) findViewById(R.id.sendBtn);

mSendBtn.setOnClickListener(this);

然后在重写的onClick方法中作出回应:

@Override

public void onClick(View v) {

if (v == mSendBtn) {

String msg = mInput.getText().toString().trim();

TaskService.newTask(new Task(mHandler,

Task.TASK_GET_REMOTE_STATE,

null));

if (msg.length() == 0) {

showToast("聊天内容为空");

return;

}

// ------ DEUBG ------

// 将发送消息提交给后台服务

TaskService.newTask(new Task(mHandler,

Task.TASK_SEND_MSG,

new Object[] { msg }));

showOwnMessage(msg);

// 清空输入框

mInput.setText("");

}

2.activity_main.xml中对于listview中某项的点击处理

同样首先绑定数据

adapter = new ArrayAdapter(this,

https://www.wendangku.net/doc/8410125444.html,yout.simple_list_item_1, mArrayAdapter);

设置对ListItem点击的处理

@Override

public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {

//获得设备的名字

String targetDev = mArrayAdapter.get(arg2);

//将设备名字打印出来

System.out.println(targetDev);

Intent data = new Intent();

//将设备对象作为Extra数据添加到data

data.putExtra("DEVICE", mDeviceList.get(arg2));

setResult(RESULT_OK, data);

this.finish();

2.3 Activity

Activity是一个与用户交互的系统模块,几乎所有的Activity都是和用户进行交互的,在本应用中共有三个Activity:ChatActivity, SelectDevice, GetVersion。在每个Activity进行初始化的时候,都要执行setContentView (View)函数来指定界面UI。

而onCreate(Bundle)函数是进行初始化的地方,也是执行setContentView(View)函数的地方,setContentView(View)函数可以传入一个由XML编制的UI界面,可以使UI和具体实现完全分离。

前面讲布局文件时提起过ChatActivity的onCreate方法,这里再分析一下SelectDevice的onCreate方法:

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 请求显示进度条

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

setContentView(https://www.wendangku.net/doc/8410125444.html,yout.activity_main);

// 初始化界面

initScanView();

// 搜寻蓝牙

openAndFindDevice();

// 用来接收查找到设备和查找完成的广播

IntentFilter filter = new

IntentFilter(BluetoothDevice.ACTION_FOUND);

filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);

// 动态注册广播接收器,用来接收扫描到的信息,需要重写onReceiver方法

registerReceiver(mReceiver, filter);

}

可以看到,我们在onCreate方法中完成了绑定布局,申请打开蓝牙和初始化界面的操作。

Activity有四种状态:

活动状态,当Activity处于Stack顶时,就是手机当前的现实屏幕,这是Activity就处于activity

或者运行状态。

运行但是失去焦点,当Activity还处于运行状态时,但是屏幕是有另外一个Activity处于文档处于焦点状态,当前的Activity就处于pause。

停止,当Activity被另一个Activity完全覆盖的时候,就被停止了,其实就是虽然在运行,但是用户却看不见。

结束,当Activity处于pause或者stop时,系统可以结束Activity,回收资源,这是Activity 就是处于结束状态了。

处于结束状态的Activity,如果要使用户可见,只有重启才可以。

下面的图表示了Activity的生命周期:

Activity生命周期

在Activity进行转换的时候需要可以借助函数startActivity(new Intent(this,class))或者startActivityForResult(new Intent(this, class),第二个参数为指定的需要跳转的Activity。不同的是第一种不会传递数据,第二种会传递数据。如:

1向GetVersion跳转

startActivity(new Intent(this, GetVersion.class));

2向SelectDevice跳转

startActivityForResult(new Intent(this, SelectDevice.class),

REQUES_SELECT_BT_CODE);

2.4Intent

Intent是对被执行操作的抽象描述。调用startActivity(Intent),可以启动Activity;调用broadcastIntent(Intent),可以把Intent发送给任何相关的IntentReceiver组件;调用startService(Intent, Bundle) 以及bindService(Intent, String, ServiceConnection, int) 可以让应用和后台服务进行通信。

Intent 提供了一个在不同应用的代码之间进行动态绑定(late runtime binding) 的机制。它主要被用来启动Activities,因此可以被看作是Activities之间的粘合剂。Intent 大体上是一个被动数据结构,该数据结构包括被执行动作的抽象描述。Intent 中的主要内容有:

action -- 需要被执行的动作。比如VIEW_ACTION, EDIT_ACTION, MAIN_ACTION 等。data -- 执行动作要操作的数据,在Intent 里用指向数据记录的URI (ContentURI) 表示。比如联系人数据库中的一个联系人记录。

除了action, data 两个主要属性,Intent 还具有一些其它属性,这些属性也可以被用在Intent 里:

category -- 类别,被执行动作的附加信息。例如LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher 中作为顶级应用出现;而ALTERNATIVE_CATEGORY 表示当前的Intent 是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。

type -- 数据类型,显式指定Intent 的数据类型(MIME)。一般上Intent 的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。

component -- 组件,为使用Intent 的组件类指定名称。通常会根据Intent 中包含的其它信息——比如action, data/type, categories ——进行查找,最终找到一个与之匹配的组件。如果这个属性存在的话,将直接使用它指定的组件,不再执行上述查找过程。指定了这个属性以后,Intent 的其它所有属性都是可选的。

extras -- 额外的附加信息,是其它所有附加信息的集合。使用extras 可以为组件提供扩展信息,比如,如果要发送电子邮件,也就是要执行“发送电子邮件”的动作,可以将电子邮件的标题、正文等保存在extras 里。

在Intent类里定义了多种标准action和category 常量(字符串),同时应用也可以根据自己的需要进行定义。

Intent 有两种主要形式:

显式意图:

显式意图是指定了component 属性的intents。调用setComponent(ComponentName) 或者setClass(Context, Class) 可以为intents 设定component 属性——指定具体的组件类。这些intents 一般不包括包括其它任何信息,它们通常只是用来通知应用启动内部的activities 作为该应用的(当前)用户界面。

隐式意图:

隐式意图是没有指明comonent 的intents。这些intents 必须包括足够的信息,这样系统才能确定在所有的可用组件中,对一个intent 来说运行哪一个组件才是最合适的。Intent 解析机制主要是将已安装应用程序包里的Intent-Filter 描述和Intent 进行匹配。如果使用广播发送Intent,还要在已经注册的IntentReceiver 中尽心匹配。更多的相关描述可以在IntentFilter 中找到。

在解析Intent 的过程中要用到Intent 的三个属性:动作、数据类型和类别。使用这些属性,就可以PackageManager 上查询能够处理当前intent 的合适组件。组件是否合适由AndroidManifest.xml 文件中提供的intent 信息决定。判断的方法如下:

如果intent 指明了要执行的action,组件action 列表中就必须包含着个action,否则不能匹配;

如果Intent 没有提供数据类型(type),系统从数据(data) 中得到数据类型。和action 一样,组件的数据类型列表中必须包含intent 的数据类型,否则不能匹配。

如果Intent 中的数据不是content: 类型的URL,而且Intent 也没有明确指定它的数据类型,将根据Intent中数据的scheme (比如http: or mailto:) 进行匹配。同上,Intent 的scheme

必须出现在组件的scheme 列表中。

如果Intent 指定了一个或多个类别,这些类别必须全部出现在组建的类别列表中。比如intent 中包含了两个类别:LAUNCHER_CA TEGORY 和ALTERNA TIVE_CA TEGORY,解析得到的组件必须至少包含这两个类别。

2.5 Service

在本设计中只定义了一个Service。服务是在后台长时间运行的应用组件,不和用户直接进行交互。每一个服务类在AndroidManifest.xml 文件中,必须有一个相应的 声明。和其它应用对象一样,服务运行在它们宿主进程的主线程里。这意味着,如果一个服务需要执行阻塞操作(比如网络操作)或者CPU 敏感的操作(比如MP3播放器),它应该分离出一个线程来执行这样的操作。服务类是应用程序的生命周期中的一个重要部分。

服务的生命周期

a)调用Context.startService(),系统将获得服务(如果服务不存在,系统创建服务,然后调

用它的onCreate() 方法),然后使用调用者提供的参数调用服务的onStart(int, Bundle) 方法。从此以后,服务开始持续运行,直到Context.stopService() 或者stopSelf() 被调用。注意:多次调用Context.startService() 虽然会导致onStart() 被多次调用,但是服务本身不会嵌套。所以无论调用多少次Context.startService(),只要调用一次Context.stopService() 或者stopSelf(),服务就会停止运行。

@Override

public void onCreate() {

super.onCreate();

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (mBluetoothAdapter == null) {

Log.e(TAG, "Your device is not support Bluetooth!");

return;

}

//启动服务线程

mThread = new TaskThread();

mThread.start();}

b)服务可以同时被启动和绑定多个连接。在这种情况下,只要服务被启动,或者存在着到

这个服务的连接,服务都会持续运行。当两个条件都不满足时,系统调用服务的onDestroy() 方法,服务从此被终止。当onDestroy() 返回的时候,所有的清理工作(停止线程,取消已经注册的receivers)都已经完成。

@Override

public void onDestroy() {

super.onDestroy();

mThread.cancel();}

访问权限

对服务的全局访问权限可以通过服务的manifest 中的 元素指定。这样,其它应用需要在它们的manifest 中声明对应的 元素,这样才能启动、停止和绑定到服务。

同时,在执行IPC 调用之前,服务可以调用checkCallingPermission(String) 对这次IPC 调用的权限进行检查。

进程生命周期

只要服务被启动或者被客户绑定(建立连接),Android 系统就尽可能维护一个进程来作这个服务的宿主。当系统内存不足的时候,系统需要杀死进程来出让内存。这时候在下列情况下,服务的宿主进程具有较高的优先级:

如果服务已经被启动,它的宿主进程比任何在屏幕上对用户可见的进程都具有更低的优先级;但是比其它所有不可见的进程都具有更高的优先级。通常对用户可见的进程的数量非常少,所以正在运行的服务在绝大多数时候不会被杀死——除非系统的可用内存极其匮乏。

如果有客户绑定在服务上,服务的宿主进程的优先级至少和客户的优先级一样(不会比客户更低)。这意味着如果客户对用户可见,那么服务本身也会被系统认为对用户可见。

在服务的宿主进程中运行有其它应用组件,比如activity,可以提高整个进程的优先级,而不是仅仅提高服务本身的优先级。

三、蓝牙通信API介绍

(一)本程序的通信过程

(二).蓝牙API的主要方法

Android所有关于蓝牙开发的类都在android.bluetooth包下,如下图,只有8个类

而我们需要用到了就只有几个而已:

1.BluetoothAdapter 顾名思义,蓝牙适配器,直到我们建立bluetoothSocket连接之前,都要不断操作它

BluetoothAdapter里的方法很多,常用的有以下几个:

getDefaultAdapter()获取默认BluetoothAdapter,实际上,也只有这一种方法获取BluetoothAdapter

enable()打开蓝牙,这个方法打开蓝牙不会弹出提示,更多的时候我们需要问下用户是

否打开,一下这两行代码同样是打开蓝牙,不过会提示用户:

Intemt enabler=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enabler,reCode);//同startActivity(enabler);

效果如下:

cancelDiscovery() 根据字面意思,是取消发现,也就是说当我们正在搜索设备的时候调用这个方法将不再继续搜索

getRemoteDevice(String address)根据蓝牙地址获取远程蓝牙设备

getState()获取本地蓝牙适配器当前状态(感觉可能调试的时候更需要)

isDiscovering()判断当前是否正在查找设备,是返回true

isEnabled()判断蓝牙是否打开,已打开返回true,否则,返回false

listenUsingRfcommWithServiceRecord(String name,UUID uuid)根据名称,UUID创建并返回BluetoothServerSocket,这是创建BluetoothSocket服务器端的第一步startDiscovery()开始搜索,这是搜索的第一步

2.BluetoothDevice看名字就知道,这个类描述了一个蓝牙设备

createRfcommSocketToServiceRecord(UUIDuuid)根据UUID创建并返回一个BluetoothSocket

这个方法也是我们获取BluetoothDevice的目的——创建BluetoothSocket

这个类其他的方法,如getAddress(),getName(),同BluetoothAdapter

3.BluetoothServerSocket如果去除了Bluetooth相信大家一定再熟悉不过了,既然是Socket,方法就应该都差不多。

这个类一种只有三个方法

两个重载的accept(),accept(inttimeout)两者的区别在于后面的方法指定了过时时间,需要注意的是,执行这两个方法的时候,直到接收到了客户端的请求(或是过期之后),都会阻塞线程,应该放在新线程里运行!

还有一点需要注意的是,这两个方法都返回一个BluetoothSocket,最后的连接也是服务器端与客户端的两个BluetoothSocket的连接!

close()关闭!

4.BluetoothSocket,跟BluetoothServerSocket相对,是客户端

一共5个方法,都会用到

close(),关闭

connect()连接

getInptuStream()获取输入流

getOutputStream()获取输出流

getRemoteDevice()获取远程设备,这里指的是获取bluetoothSocket指定连接的那个远程蓝牙设备

四、开发中场遇到的问题及解决方法

1. 如果你的项目的R文件不见的话,可以试下改版本号再保存,,除此之外一般都是布局文本出错导致.

2. 布局文件不可以有大写字母

3. 抛出如下错误WARNING: Application does not specify an API level requirement!,

是由于没有指定users sdk的缘故,修改AndroidManifest.xml文件.

加入:

4. 机器内存的瓶颈,当apk大于我们的机器内存时,模拟器无情的抛出

Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE Please check logcat output for more details. Launch canceled!

让我们无法调试,现在我们来根治这个问题,解决方法有两种:

第一种(仅限apk小于机器内存,并且已安装上当前apk,只是无法再次debug)

启动模拟器,然后进入菜单

settings->applications->mange

applications-> select the application->select "unistall".

这样就能彻底删除了,然后再重新安装这个apk就没问题了

第二种(通用)

-partition-size 128

Eclipse中在项目Target的Options中添加。

5.启动android模拟器时候如果提示:Failed to install on device ‘emulator-5554′: timeout

这是可能因为卡的原因导致启动超时,解决办法:eclipse -> window -> Preferences -> Android -> DDMS -> ADB connection time out(ms).把这个时间设置的长一些,默认是5秒即5000ms,我改成10秒就ok了。

这样就不用每次重启模拟器了。具体时间设置根据实际环境需要

6. 在开发的过程中经常在安装apk到模拟器上时会报出

ActivityManager: Error: Activity class {..} does not exist.

这样的错误,这里总结两种解决方式:

在AndroidManifest.xml文件中查看主Activity的名字前是否有'.'符

7 运行Eclipse时出现了这个错误

No Launcher activity found!

The launch will only sync the application package on the device!

解决办法:

在AndroidManifest.xml 中添加

8 出现如下错误,没有写入sd卡权限java.io.FileNotFoundException: /mnt/sdcard/update.zip (Permission denied)

解决办法:

资源文件写入如下权限

五、总结

本次毕业设计是一个基于eclipse开发平台,需要学习包括Java语言、安卓知识、蓝牙通信在内的知识。在此期间主要完成的工作包括以下几个方面:

(1)设计初期收集Java语言,安卓知识方面相关资料,对安卓开发有一定的了解。

(2)学习蓝牙通信,对对蓝牙操作,蓝牙之间通信方式了解加深。

(3)参考网上程序源码,确定最终的智能小车控制的设计方案

(5)根据要实现的各个界面,在eclipes开发环境下应用JA V A程序编程序,并且通过模拟器来检测手机界面程序。

(6)从整个设计的过程来看前期的充分的准备显得非常的重要,经过前期充分的准备,和对软件开发的学习,避免了很多在后续的设计中可能出现的问题。

android蓝牙介绍二蓝牙代码架构及其uart 到rfcomm流程

Android bluetooth介绍(二) android 蓝牙代码架构及其uart 到rfcomm 流程 一、Android Bluetooth Architecture蓝牙代码架构部分(google 官方蓝牙框架) Android的蓝牙系统,自下而上包括以下一些内容如上图所示: 1、串口驱动 Linux的内核的蓝牙驱动程、Linux的内核的蓝牙协议的层 2、BlueZ的适配器

BlueZ的(蓝牙在用户空间的函式库) bluez代码结构 Bluetooth协议栈BlueZ分为两部分:内核代码和用户态程序及工具集。(1)、内核代码:由BlueZ核心协议和驱动程序组成 Bluetooth协议实现在内核源代码 kernel/net/bluetooth中。包括 hci,l2cap,hid,rfcomm,sco,SDP,BNEP等协议的实现。 (2)、驱动程序:kernel/driver/bluetooth中,包含Linuxkernel对各种接口的 Bluetooth device的驱动,如:USB接口,串口等。 (3)、用户态程序及工具集: 包括应用程序接口和BlueZ工具集。BlueZ提供函数库以及应用程序接口,便于程序员开发bluetooth应用程序。BlueZ utils是主要工具集,实现对bluetooth设备的初始化和控制。 3、蓝牙相关的应用程序接口 Android.buletooth包中的各个Class(蓝牙在框架层的内容-----java)

同样下图也是一张比较经典的蓝牙代码架构图(google官方提供) 二、蓝牙通过Hciattach启动串口流程: 1、hciattach总体流程

基于android的游戏开发开题报告总结.doc

开题报告 (1)研究的目的和意义 Android 操作系统最初是由 Andy Rubin 制作,最初主要支持手机,在2005 年被搜索巨头 Google 收购注资,并组建开放手机联盟开发改良随后,逐渐扩展到平板电脑及 其他领域上,2008年全球第一步安卓智能手机问世,标志着安卓的重生。而在2011 年 11 月份的调查, android 智能机一跃超过苹果,以全球市场占有率76%,中国 90% 遥遥领先。在安卓手机中以三星的GALAXY III系列为领头羊,领跑安卓手机最新科技。 当人类步入 21 世纪,随着科技的日趋发展,智能手机 ,平板电脑等高端电子产品进 入了我们的日常生活,随着 3G 时代已经慢慢的融入了我们的日常生活,随着社会的进 步和科技的发展手机已经从单纯的通讯工具转变为集娱乐,学习,通讯为一体的高端电子 产品,随着诺基亚塞班系统的没落,安卓系统迎来了春天。据市场调查,智能手 机市场已经形成了二足鼎力的态势,安卓和苹果的 IOS作为领军者遥遥领先于 windows phone 系统。同时各种 android 应用程序已经有了比较明朗的发展前景,尤其以手机游 戏这个亮点受到广泛的关注和喜爱,正是由于android 拥有广大的用户群, android 手 机游戏拥有巨大的潜力,它也主宰者手机游戏的未来,此次毕业设计顺应时代发展潮 流,依托现在硬件上的优势,以 android 为平台,旨在玩家打造一款优秀的安卓小游戏, 使玩家身临其境,爱不释手。在安卓游戏的市场上,使得 android 手机游戏种类更加丰 富多彩,为安卓手机游戏的发展做出贡献。 (2)国外同类研究的概况 手机游戏种类和资源日益丰富,游戏界面越来越华丽,游戏规则日益复杂,已经 具备了很强的娱乐性和交互性的复杂形态。 2003 年 10 月,Andy Rubin 等人创建了 Android 公司,google 公司于 2005 年 8 月 17 日低调收购 android 以及其团队,Andy Rubin 成为 Google 公司 android 项目工程部

基于Android平台的菜谱实现

基于Android平台的菜谱实现 1需求分析 随着手机的广泛普及,无线技术的突飞猛进,移动生活、移动办公逐渐由概念转变为现实,对于传统的餐饮业也产生了潜移默化的影响。 目前,大多数餐厅仍然以传统的纸质菜单为主。但是,这种点菜方式存在诸多弊端:从消费者角度来讲,菜谱不能及时更新,导致菜谱信息陈旧,点菜时经常出现某菜品已下架等情况。 用户需求:从餐厅老板来说,及时更新纸质的菜谱,无疑会增加餐厅的额外支出。为了改善传统纸质菜谱的弊端,将菜谱应用于手机客户端,为消费者带来更为便利的客户体验。而实时的菜品更新,不仅解决了纸质菜谱短时间内就出现脏、乱、差的问题,实现餐厅无纸化操作,而且潜在的提升了饭店的形象。 功能需求:用户可以进入菜单界面选择菜品分类,进入相应的分类内,查看该分类中的菜品信息,并对菜品的等级程度进行评价,查询某特定菜品,也可添加新菜品,删除菜品等。 2功能实现 本APP基于自身的需求,同时对西北大学周围众多餐厅现状的合理分析,结合实际,设计并实现了一个基于移动手机平台的智能菜谱显示,该系统的设计基于Android智能操作系统,简单的SQLite数据库,实现了对菜品的增、删、查、改各个功能。 消费者可以添加要点的菜品,在餐后可以对菜品的口味及好感程度进行具体化的评价,这样是对餐厅工作人员的一个回馈,同时也可以为其他消费者就餐提供建议。 2.1主界面 1、实现了对菜品的具体分类。如图2-1

图2-1 单击所选择的菜品分类,出现菜品的镜像显示,为消费者提供更为直观的视觉效果,有助于消费者做出选择。如图2-2 图2-2 2、是进入菜品显示的入口,同时也显示了该软件的使用方法如图2-3:

基于Android系统的游戏APP设计

本科毕业设计(论文)题目:基于Android系统的游戏APP设计 院系:工学院电气与电子工程系 专业:自动化 班级:自动化1202 姓名:王学松 学号:201202022007 指导教师:张俊超杨鹏 烟台南山学院教务处 二〇一六年六月

烟台南山学院毕业设计(论文)原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在论文中作了明确的说明并表示了谢意。本声明的法律结果由本人承担。 论文作者签名: 年月日 烟台南山学院关于毕业设计(论文)使用授权的说明 本人完全了解烟台南山学院有关保留、使用学士学位论文的规定,即:学校有权保留、送交论文的复印件,允许论文被查阅,学校可以公布论文的全部或部分内容,可以采用影印或其他复制手段保存论文。 指导教师签名:论文作者签名: 年月日年月

烟台南山学院本科毕业设计(论文)第 I 页基于Android系统的游戏APP设计 摘要 随着移动互联网的不断发展,我们的生活发生了巨大的改变,智能手机已经成为我们日常生活所必不可少的一个工具,而在整个手机操作系统中,Android以一种开放源码操作系统为基础的系统迅速霸占了手机操作系统市场,因而在Android系统的环境下开发极其重要。Android系统是完全开放性的系统构架,不仅开发和调试环境方便快捷,而且对于用户来说,具有极强的扩展性,用户可体验各种丰富的组件、多媒体功能和各类浏览器。对于从事软件开发工作的人,在Android平台下开发软件非常有吸引力。 Android是以Java为基础的一种语言,本文详细介绍了如何在Android平台上开发编写程序,在分析软件开发技术原理的基础上,在Android平台上为用户开发了一款数独游戏。而在对Android系统进行进一步需求分析时,明确了系统的各项性能要求,而且对于数独游戏的启动动画、主界面设计、屏幕的绘制、时间的控制以及如何布局等进行了一系列的设计,最终为用户实现了一个操作简单、内容丰富的益智休闲游戏。 关键词Android数独游戏智能机

Android蓝牙协议指南

Android蓝牙协议栈 Android蓝牙协议栈使用的是BlueZ,支持GAP, SDP, and RFCOMM规范,是一个SIG认证的蓝牙协议栈。 Bluez 是GPL许可的,因此Android的框架内与用户空间的bluez代码通过D-BUS进程通讯进行交互,以避免专有代码。 Headset和Handsfree(v1.5)规范就在Android框架中实现的,它是跟Phone App紧密耦合的。这些规范也是SIG认证的。 下面的图表提供了一个以库为导向的蓝牙栈视图。 实线框的是Android模块,红色虚线部分为合作伙伴指定模块(译者注:芯片商提供)。 下面的图表是以进程为导向视图:

移植 BlueZ是兼容蓝牙2.1的,可以工作在任何2.1芯片以及向后兼容的旧的蓝牙版本。有要有两个方面: ?串口驱动 UART driver ?蓝牙电源开/关 Bluetooth Power On/Off 串口驱动 BlueZ核心子系统使用hciattach守护进程添加你的指定硬件串口驱动。

例如,MSM7201A,这个文件是在drivers/serial/msm_serial.c。你还需要通过修改init.rc为hciattach来编辑命令 行选项。 蓝牙电源开/关 蓝牙芯片的电源开关方法1.0和Post 1.0是不同的,具体如下: ? 1.0:Android框架写0或1到/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on ?Post 1.0:Android框架使用linux rfkill API,参考 arch/arm/mach-msm/board-trout-rfkill.c例子。 编译 编译Android打开蓝牙支持,添加下面这行内容到BoardConfig.mk。 BOARD_HAVE_BLUETOOTH :=true 解决问题 调试 调试你的蓝牙实现,可以通过读跟蓝牙相关的logs(adb logcat)和查找ERROR和警告消息。Android使用Bluez,同时 会带来一些有用的调式工具。下面的片段为了提供一个建议的例子: hciconfig -a # print BT chipset address and features. Useful to check if you can communicate with your BT chipset. hcidump -XVt # print live HCI UART traffic. hcitool scan # scan for local devices. Useful to check if RX/TX works. l2ping ADDRESS # ping another BT device. Useful to check if RX/TX works. sdptool records ADDRESS # request the SDP records of another BT device. 守护进程日志 hcid(STDOUT)和hciattach(STDERR)的守护进程日志缺省是被写到/dev/null。编辑init.rc和init.PLATFORM.rc在logwrapper下运行这些守护进程,把它们输出到logcat。 hciconfig -a 和 hcitool

基于Android平台的生活小助手app的设计与实现.

天津工业大学 毕业设计(论文) 基于android平台的生活小助手app的设计与实现 姓名 学院 专业 指导教师 职称 年月日

摘要 随着智能手机的快速普及,智能手机操作系统市场风生水起。为了让智能手机用户能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问Web网站并处理各种各样的业务。因此,智能手机的应用软件及其需要的服务将有广阔的发展前景。 在如今这个智能手机系统群雄纷争的时候,2008年Google推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所需要的全部软件。Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限的吸引力。 本文就在分析讨论Android手机软件开发技术原理的基础上,开发出能为用户提供更好的基于Android平台的4G生活小助手app软件。 关键词:Android;天气;生活助手;

Abstract With the rapid popularization of intelligent mobile phone, intelligent mobile phone operating system market fast. In order to make intelligent mobile phone users can query the services provided by the Internet anytime, anywhere, to expand the function an efficient approach is the application of the system to the mobile phone terminal, let the phone through the mobile network and Internet access to a web site and handle a wide variety of business. Therefore, the intelligent mobile phone application software and service will have broad prospects for development. In now the system of intelligent mobile phone warlords dispute. In 2008, Google launched a product called Android open-source smartphone operating system, which uses Linux kernel, Open Handset Alliance (OHA) members can be free to use and modify the SDK package, the open-source system make it with good scalability. This software includes the operating system user interface and applications that need intelligent mobile phone all the software. The biggest feature of Android is its open architecture, not only has a very good development and debugging environment, but also support a variety of scalable user experience, including rich graphical components, multimedia support, and powerful browser. Therefore, for software practitioners, Android platform has unlimited appeal. This article on the basis of analysis and Discussion on the Android mobile phone software development technology, developed to provide users with better Android platform based on the 4G life of small assistant app software. Keywords: Android; weather; life assistant;

基于Android操作系统的中国象棋手机游戏

基于Android操作系统的中国象棋手机游戏

石家庄科技信息职业学院 毕业论文 题目:基于Android操作系统的中国象棋手机游戏 学号:090124012 姓名:王麒 专业班级:软件技术(游戏方向)09-24 班 指导教师:刘永伟 完成日期:2011-12-18

摘要:Chess是运行在Android平台上的一款支持双人联网对局、即时聊天、对弈记录的休闲棋牌类手机游戏。 系统采用面向对象的编程思想进行构思与分析设计;使用UML构建软件模型;使用MVC架构模式实现系统的整体架构及各模块之间的接口设计;在系统的实践过程中还采用了部分GoF的设计模式进行编码与开发。 本文详细系统地阐述了在Android平台上,面向对象的软件开发思想对Chess游戏系统的分析、设计及实现过程。在项目的实践过程中,主要用到了以下技术:手机布局主要使用了XML设计,程序及其子模块的生命周期管理用到了Activity流程控制,数据储存方面使用的是轻量级数据库SQLite、网络通讯部分使用的是XMPP即时通讯协议进行数据的传输、对弈的画面更新使用的是手机的2D 图形编程。本论文的前半部分将简要介绍系统相关的行业信息及基础的技术知识,后半部分将对本人在系统各模块中所使用的关键技术的实现进行了全面的介绍。 关键词:联网对弈;中国象棋;手机游戏;Android平台

ABSTRACT:CnChess is a Chinese Chess game that running on the Android platform.It support many of the features such as playing games through the network, real-time chat, and play chess records of casual mobile games. The CnChess game is object-oriented programming design and analysis of the idea of thinking; build software models using UML; use of MVC architecture patterns to achieve the overall system and the interface between the module designs; in practice the system also uses some of the GoF's design patterns to coding and development. This paper systematically expounded in the Android platform, the application of MVC pattern and hierarchical structure of object-oriented software development thoughts cnChess game system analysis, design and implementation process. Practice in the course of the project, mainly used in the following technologies: cell phones primarily use XML layout design, process and life cycle management sub-module uses the Activity process control, data storage areas using a lightweight database SQLite, netwrok communication Some use the XMPP instant messaging protocol for data transmission, public debate of the frame using a mobile phone 2D graphics programming. The first part of this paper will briefly introduce the system based on relevant industry information and technical knowledge, the latter part of each module in the system; I will be in the key technology used in the realization of a comprehensive introduction. Keywords: Network of games; Chinese chess; Mobile Games; Android platform

基于Android平台的手机通讯录管理系统

第一章绪论 1.1 项目研究背景 经过多年的发展,随着第三代网络的使用及四代网络的即将来了呢,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google与包括HTC、摩托罗拉、三星、联想等在内的三十多家技术和无线应用的领军企业组成的开发联盟为此于2007年11月退出了一份专为移动设备设计的软件平台——Android OS。 Android 是一套真正意义上的移动性设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化额Java程序的运行过程。Android 系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机硬件的连接层。 Abdroid平台的开放性等特点既能促进技术(包括平台本身)的创新,又有助于降低开发成本,还可以是运营商能非常方便地制定特色化的产品,因此,它具有很大的市场发展潜力。 1.2 项目研究的目的及意义 随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。在Google和Android手机联盟的共同推动下,Android在众多手机操作系统中脱颖而出,受到广大消费者的欢迎。 手机通讯录作为手机的基本功能之一,每天我们都在频繁地使用着。根据手机功能的不断加强与完善,手机通讯录对于人们的意义,已经不仅仅像记事簿一样显示通讯地址,而是向着个性化、人性化的方向发展。通讯录从无到有,从英文到中文,经过了十几年的发展历程,今后的发展趋势就是从通讯录发展为名片夹,也就是一个人名下,可以储存座机、手机、单位、地址、电子邮箱等内容,这种名片夹在电话薄的基础上,大大丰富了内容,同时结构也发生了革命性的的变化,而且随着手机的发展,相信更优秀的通讯录会越来越受到社会各层认识的喜爱。 1.3系统主要内容与实现方式

基于Android的蓝牙遥控小车设计

成绩评定表

课程设计任务书

阐述一种通过手机蓝牙遥控小车行走的软、硬件设计。手机蓝牙作为客户端,小车上的蓝牙模块HC-05作为服务端。客户端采用Eclipse 开发环境,J2ME编程,服务端采用单片机控制。双方通过串口仿真协议进行通信,单片机驱动直流电机控制小车行动。实验结果表明,小车可以接收手机遥控信号并灵活地进行前行、倒退、左转、右转和停止等功能。 关键词:89c52,hc-05,遥控小车,Andriod

目录 1引言 (1) 1.1课题设计目的及意义 (1) 1.1.1设计的目的 (1) 1.1.2设计的意义 (2) 2 方案比较与论证 (2) 2.1无线单元方案与比较 (2) 3 硬件电路设计 (4) 3.1 总体设计 (4) 3.2 单片机模块 (5) 3.2.1 STC89C52简介 (5) 3.2.2 L298N驱动模块及原理介绍 (6) 3.2.3 蓝牙模块 (7) 4 软件设计 (8) 4.1 智能车运动控制程序 (8) 4.2 Android蓝牙客户端设计与实现 (9) 4.2.1 客户端界面设计 (10)

4.2.2 BluetoothCar类设计 (10) 4.2.3 单片机C语言代码 (10) 5 实验结果及分析 (16) 6 心得体会 (17) 参考文献 (17)

1引言 1.1课题设计目的及意义 1.1.1设计的目的 遥控小车起源于美国,由于政府对无线遥控小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在遥控小车技术上占据着明显优势。我国的无线遥控小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。在研发应用方面取得了重要发展,但是与国际先进还存在一定的差距。无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势。目前在信息家电方面应用正在铺。遥控小车起源于美国,由于政府对无线遥控小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在遥控小车技术上占据着明显优势。我国的无线遥控小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。在研发应用方面取得了重要发展,但是与国际先进还存在一定的差距。无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势。目前在信息家电方面应用正在铺开。各种家电共用遥控,并可组网与公众互联网相接,共享有用信息。目前蓝牙技术实现无线遥控的短板在于传输距离短和芯片

(完整版)基于Android平台的管理系统设计与实现毕业设计

基于Android平台的管理系统设计与实现 院系:信息科学与工程学院 专业班:计算机科学与技术班 姓名: 学号: 指导教师:

201 年月

基于Android平台的 管理系统设计与实现Design and Implementation of Online Management System Based on the Android Platform

摘要 基于Android平台的网上超市管理系统是结合当前最流行的移动平台开发的电子商务系统。本系统是PC端电商网站在Android平台的延伸,除了传统电商网站能够实现的各项基本功能之外还具有使用简单,操作方便等优点。利用本系统可以为超市的销售提供新的渠道。 本系统的开发运用了基于Java的Android SDK技术,系统采用C/S (客户端/服务器)结构实现。开发所采用的IDE为MyEclipse 10并安装由Google提供的Android Developer Tools。系统运行环境为Android版本4.0以上的移动设备。 本系统在电商网站的基础上完成了移动平台功能的设计,使用户能够在手机上方便的进行传统电商网站上所能完成的大部分操作。本系统的优点在于能够充分利用都市人群上下班途中、排队闲暇等碎片时间,提供方便快捷的购物方式,因此能够极大的抓住用户的依赖程度,提高超市自身品牌影响力,扩张超市营业范围,提高商品销售收入。 关键词:Android 移动设备网上超市

Abstract This e-commerce system named Online Market Management System is based on the most popular mobile platform - Android platform. This system is an extension of PC e-commerce website on the Android platform. Except functions that normal e-commerce system can realize, this system also has many advantages like easily use and convenient. Using this system has provided a brand new way for market sales. The development of this system has using the Android SDK based on Java technology, and achieve by C/S (Client/Server) structure. The IDE used for development is MyEclipse 10 which has installed Android Developer Tools provided by Google. This system need a mobile device that Android version is higher than 4.0 for running. This system has completed the function of the mobile platform based on e-commerce sites, and allow user finish most functions which can be done at normal e-commerce sites. This system can make full use of pieces of time which like the way go to work and the way home, or when you get in a line waiting for something, to provide a fast convenient way to shopping. These advantages can seize the users' dependence, improve the influence, expansion the scope of the business and increase sales revenue. Key words:Android mobile device Online Market

Android蓝牙编程

ANDROID 蓝牙编程 用BluetoothAdapter类,你能够在Android设备上查找周边的蓝牙设备然后配对(绑定),蓝牙通讯是基于唯一地址MAC来相互传输的,考虑到安全问题Bluetooth通讯时需要先配对。然后开始相互连接,连接后设备将会共享同一个RFCOMM通道以便相互传输数据,目前这些实现在Android 2.0或更高版本SDK 上实现。 一、查找发现 findding/discovering devices 对于Android查找发现蓝牙设备使用BluetoothAdapter类的startDiscovery()方法就可以执行一个异步方式获取周边的蓝牙设备,因为是一个异步的方法所以我们不需要考虑线程被阻塞问题,整个过程大约需要12秒时间,这时我们紧接着注册一个 BroadcastReceiver 对象来接收查找到的蓝牙设备信息,我们过滤ACTION_FOUND这个 Intent动作来获取每个远程设备的详细信息,通过附加参数在Intent字段EXTRA_DEVICE 和 EXTRA_CLASS, 中包含了每个BluetoothDevice 对象和对象的该设备类型BluetoothClass ,示例代码 private final BroadcastReceiver cwjReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); myArrayAdapter.add(device.getName() + " android123 " + device.getAddress()); //获取设备名称和mac地址 } } }; // 注册这个 BroadcastReceiver IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); registerReceiver(cwjReceiver, filter); 最后android123提醒大家需要注意的是,记住在Service或Activity中重写onDestory()方法,使用unregisterReceiver方法反注册这个BroadcastReceiver对象保证资源被正确回收。 一些其他的状态变化有 ACTION_SCAN_MODE_CHANGED 额外参数 EXTRA_SCAN_MODE 和 EXTRA_PREVIOUS_SCAN_MODE以及SCAN_MODE_CONNECTABLE_DISCOVERABLE、 SCAN_MODE_CONNECTABLE和SCAN_MODE_NONE, 蓝牙模块 二、配对绑定 bnded/paired device 在Android中配对一个蓝牙设备可以调用BluetoothAdapter类的getBondedDevices()方法可以获取已经配对的设备,该方法将会返回一个BluetoothDevice数组来区分每个已经配对的设备,示例代码如下: Set pairedDevices = cwjBluetoothAdapter.getBondedDevices();

基于Android平台的博客客户端

基于Android平台的博客客户端设计与实现 杨定标 广西大学计算机与电子信息学院南宁 530004 摘要:本文主要介绍采用Google发布的Android SDK开发基于Android系统的手机软件, 解决手机网民不能随时发布博客的需求。在实现该系统中,需要服务器端与客户端进行数据交换,在实现中使用的是自己搭建一台服务器来解决这个问题。服务器端需要解决接收客户端发来的指令并作相应的处理,封装客户端的数据并返回给客户端。客户端需要解析并显示返回的数据以便以后操作。 关键词:手机软件、Android、博客 Design and Implementation of blog client based on Android Yang Dingbiao Computer and Electronic Information College, Guangxi University, Nanning 530004 Abstract:This paper introduce the Android system-based phone software to solve the mobile phone users can not publish their blogs. In order to implement this system, we need a server to exchange data with the client, so we should build a server to solve this problem. The server-side need to receive the processing instructions client send, and packaging and returning the data client needs . Then the client needs to parse and display the returned data. Keywords:Phone software、Android、Blog 0 引言 随着无线网络的不断发展,智能移动终端的迅速普及,越来越多的人开始体会到移动互联网带来的深刻变革。移动互联网不仅改变了人们的生活方式,甚至对人们工作方式也产生了巨大的影响。因此,本文提出了并实现了一种基于android平台[1]的博客系统,用户可在手机通过客户端来。在整个发表博客过程中脱离电脑和网络的限制。可解决用户在无电脑在身旁而无法发表博客的困扰。 1 系统设计 1.1 系统技术选型 Android客户端使用Java技术,网络通信使用TCP连接,中间WEB服务器采用Servelt技术响应客户端请求,后台采用JDBC访问数据库。WEB服务器采用开源的Tomcat服务器,数据库采用MySQL。 1.2 系统整体架构 APK(Android Package)客户端结构类似于B/S结构,由APK客户端、服务器和数据库构成,客户端Android系统智能手机具有前端处理与计算能力,而且可通过无线网络访问Web服务器。系统体系结构如下图1: 图1 系统架构图

基于android平台连连看游戏设计与实现本科毕业设计论文

毕业论文 题目:基于Android平台的连连 看游戏设计与实现

毕业论文(设计)原创性声明 本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。 据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名:日期: 毕业论文(设计)授权使用说明 本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。 作者签名:指导教师签名: 日期:日期:

注意事项 1.设计(论文)的内容包括: 1)封面(按教务处制定的标准封面格式制作) 2)原创性声明 3)中文摘要(300字左右)、关键词 4)外文摘要、关键词 5)目次页(附件不统一编入) 6)论文主体部分:引言(或绪论)、正文、结论 7)参考文献 8)致谢 9)附录(对论文支持必要时) 2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。 3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。 4.文字、图表要求: 1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写 2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画 3)毕业论文须用A4单面打印,论文50页以上的双面打印 4)图表应绘制于无格子的页面上 5)软件工程类课题应有程序清单,并提供电子文档 5.装订顺序 1)设计(论文) 2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订 3)其它

基于Android平台的智能家居系统设计

基于Android平台的智能家居系统设计 摘要:为了实现家居生活智能、方便等目的,提出一种基于Android平台的智能家居系统。采用内外网通信方式,使得当家庭宽带不可用时仍能通过内网实现对家居设备的控制。将用户配置信息、设备信息存在网关使得不同客户端能信息共享,实现动态添加、删除动作。采用推送而不是轮询,实时性好。客户端APP功能齐全,云计算的使用实现了外网控制,同时便于未来的系统扩展。 关键词:智能家居;Android;信息推送;云计算;远程控制 0 引言 智能家居通过物联网技术将家居子系统有机结合在一起形成高度智能化的智慧家庭[1]。物联网、云概念的提出加速了智能家居的发展,Android智能手机和网络技术的发展也给智能家居带来了新的思路[2]。本文提出一个基于Android平台的智能家居系统设计方案。以Android手机作为家居控制终端,通过云平台转发消息,真正实现远程控制,将用户信息、设备信息存在网关使不同客户端能实现信息共享,实现动态添加、删除动作。结合推送技术获得良好的实时性。 1 系统总体框架图 系统由客户端、云计算中心、网关和家庭设备组成。系统框架。 客户端实现对底层设备的控制方式包括:(1)内网控制:客户端使用家庭网络与网关直接通信,由网关控制底层设备;(2)外网控制:客户端与网关不在同一网段内,客户端指令由云服务器转发给对应的网关,再由网关控制底层设备。采用内外网的通信方式,使得家庭宽带网络在不可使用的情况下,仍能通过内网通信实现对设备的控制,同时节省用户数据流量[3]。每次运行客户端软件,会自动获取网关处的配置信息、设备信息。网关同步底层设备状态,当发生改变时由网关转发给客户端,使用户能及时获知底层设备的最新状态。 2 客户端设计与实现 2.1 客户端功能说明 Android客户端功能模块。 设备管理是核心模块,包括自定义房间和设备。可添加、删除、修改房间,房间下可添加设备。点击设备管理,通过后台获取当前用户下的所有房间并以JSON格式返回,客户端完成解析并显示在界面上,点击添加图标进入添加房间界面,填写房间名称并将用户ID与房间名称发往网关并保存至数据库。通过长按房间界面实现删除与修改动作。点击房间会显示该房间下的所有设备,可添加设备,长按删除设备,不提供修改设备动作。可以控制单个设备或区域内的所有设备,也可以对某个情景模式关联的设备进行联动控制。 2.2 客户端框架 在Eclipse开发环境下,采用java语言,基于MVC模式对客户端进行设计。视图层View 负责生成用户界面,接收输入并显示结果。控制层Controller用于监听用户操作并作出反应。模型层Model定义了各种功能模块,包括通信模块、数据库模块、数据格式的封装和解析模块等[4],其中通信模块是核心。 2.3 通信模块 通信模块负责客户端和服务器或网关间的消息通信和链路维护。通信方式有:TCP/UDP、Http、MQTT推送。系统的通信协议。 2.4 通信模块实现

相关文档
相关文档 最新文档