您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于蓝牙的文本交互程序设计
246实验三基于蓝牙的文本交互程序设计实验三基于蓝牙的文本交互程序设计一、实验目的1.理解蓝牙的协议体系结构。2.理解蓝牙设备通信的原理与流程。3.掌握Android平台上蓝牙数据传输程序的设计思想和基本框架。二、实验内容在Android平台上(也可选择iOS和WindowsPhone平台)编写一程序,实现蓝牙开启、蓝牙设备扫描、蓝牙设备连接和文本交互等功能。三、实验仪器与设备PC机1台,智能手机2部。四、程序思想程序需要实现手机蓝牙功能检测、蓝牙开启、设备扫描、设备互连和文本通信等功能。蓝牙设备互连的流程如算法1所示。算法1蓝牙设备互连算法beginif(手机没有蓝牙适配器)return;if(手机蓝牙功能未开启)打开蓝牙;if(蓝牙适配器对其它设备不可见)使蓝牙适配器对其它设备可见300秒;//时间可设置,范围0-3600秒switch(连接方式){case安全连接:扫描周边蓝牙设备;显示已配对设备和其它可连接设备列表;if(用户选择其它可连接设备)两端设备配对;连接用户选择的对端设备;break;case不安全连接:扫描周边蓝牙设备;显示已配对设备和其它可连接设备列表;无线网络技术247连接用户选择的对端设备;break;}文本通信;断开连接;end程序中需要用到android.bluetooth包中的一些类,这些类的功能如下:1)BluetoothAdapter表示本地蓝牙适配器。可完成蓝牙适配器对其它设备可见,查询已配对蓝牙设备,扫描周边蓝牙设备和创建BluetoothServerSocket对象等功能。2)BluetoothDevice表示远端蓝牙设备。可查询远端设备的名字,地址和配对状态等信息。可通过BluetoothSocket对象连接对端设备。3)BluetoothSocket表示蓝牙socket接口。这是一个连接点,允许应用通过InputStream和OutputStream与另一个蓝牙设备交换数据。4)BluetoothServerSocket表示服务器socket,监听连接请求。为了连接两个设备,一个设备必须使用这个类打开服务器socket。当对端设备发送连接请求时,若请求被接受,BluetoothServerSocket将返回一个已连接的BluetoothSocket。五、实验步骤及要求1.建立AndroidStudio工程。工程的Applicationname和CompanyDomain可自行命名,但应符合相关规范。此处两者分别命名为BTTexInter和well.ren。选择工程的存储位置。APP运行的formfactor选择PhoneandTablet,MinimumSDK选择Android4.1。activity选择BlankActivity。工程建立后,会产生一系列文件和文件夹,其中有AndroidManfest.xml、activity_main.xml、menu_main.xml、strings.xml和MainActivity.java等文件。2.新建activity_device_list.xml、device_name.xml、message.xml、DeviceListActivity.java、Constants.java和BTTexInterCliServ.java文件。完整的工程文件结构如图1所示。3.撰写与修改程序代码。1)修改AndroidManfest.xml文件代码。加入对权限和activity的声明。代码如下:…uses-permissionandroid:name=android.permission.BLUETOOTH_ADMIN/uses-permissionandroid:name=android.permission.BLUETOOTH/…activityandroid:name=.DeviceListActivityandroid:configChanges=orientation|keyboardHiddenandroid:label=@string/select_deviceandroid:theme=@android:style/Theme.Holo.Dialog/248实验三基于蓝牙的文本交互程序设计图1工程文件结构2)修改strings.xml文件。这里存放程序中用到的字符串常量。完整的代码如下:?xmlversion=1.0encoding=utf-8?resourcesxmlns:xliff=urn:oasis:names:tc:xliff:document:1.2stringname=app_nameBTTexInter/stringstringname=action_settingsSettings/string!--BTTexInterCliServ--stringname=sendSend/stringstringname=not_connectedYouarenotconnectedtoadevice/stringstringname=bt_not_enabled_leavingBluetoothwasnotenabled.LeavingBluetoothInteractive./stringstringname=title_connectingconnecting.../string无线网络技术249stringname=title_connected_toconnectedtoxliff:gid=device_name%1$s/xliff:g/stringstringname=title_not_connectednotconnected/string!--DeviceListActivity--stringname=scanningscanningfordevices.../stringstringname=select_deviceselectadevicetoconnect/stringstringname=none_pairedNodeviceshavebeenpaired/stringstringname=none_foundNodevicesfound/stringstringname=title_paired_devicesPairedDevices/stringstringname=title_other_devicesOtherAvailableDevices/stringstringname=button_scanScanfordevices/string!--OptionsMenu--stringname=secure_connectConnectadevice-Secure/stringstringname=insecure_connectConnectadevice-Insecure/stringstringname=discoverableMakediscoverable/string/resources3)撰写MainActivity.java文件代码。这部分代码完成加载文本交互界面,蓝牙功能开启,蓝牙适配器可见和交互文本的显示等功能。完整的代码如下:packageren.well.bttexinter;importandroid.app.Activity;importandroid.bluetooth.BluetoothAdapter;importandroid.bluetooth.BluetoothDevice;importandroid.content.Intent;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.support.v7.app.ActionBar;importandroid.support.v7.app.ActionBarActivity;importandroid.util.Log;importandroid.view.KeyEvent;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.inputmethod.EditorInfo;importandroid.widget.ArrayAdapter;importandroid.widget.Button;importandroid.widget.EditText;250实验三基于蓝牙的文本交互程序设计importandroid.widget.ListView;importandroid.widget.TextView;importandroid.widget.Toast;publicclassMainActivityextendsActionBarActivity{privatestaticfinalStringTAG=BTTexInteractiveMAIN;//IntentrequestcodesprivatestaticfinalintREQUEST_CONNECT_DEVICE_SECURE=1;privatestaticfinalintREQUEST_CONNECT_DEVICE_INSECURE=2;privatestaticfinalintREQUEST_ENABLE_BT=3;//LayoutViewsprivateListViewmConversationView;privateEditTextmOutEditText;privateButtonmSendButton;//NameoftheconnecteddeviceprivateStringmConnectedDeviceName=null;//ArrayadapterfortheconversationthreadprivateArrayAdapterStringmConversationArrayAdapter;//StringbufferforoutgoingmessagesprivateStringBuffermOutStringBuffer;//LocalBluetoothadapterprivateBluetoothAdaptermBluetoothAdapter=null;//MemberobjectforthechatservicesprivateBTTexInterCliServmInterCliServ=null;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mConversationView=(ListView)this.findViewById(R.id.in);mOutEditText=(EditText)this.findViewById(R.id.edit_text_out);mSendButton=(Button)this.findViewById(R.id.button_send);无线网络技术251//GetlocalBluetoothadaptermBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();//Iftheadapterisnull,thenBluetoothisnotsupportedif(mBluetoothAdapter==null){Toast.makeText
本文标题:基于蓝牙的文本交互程序设计
链接地址:https://www.777doc.com/doc-2576545 .html