蓝牙app开发流程图(蓝牙app开发流程图解)

小程序开发 2123
今天给各位分享蓝牙app开发流程图的知识,其中也会对蓝牙app开发流程图解进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、怎么开发app?

今天给各位分享蓝牙app开发流程图的知识,其中也会对蓝牙app开发流程图解进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

怎么开发app?

谷歌推出的AppInventorAndroidApp开发工具可以让你仅通过拖拉式的简单操作就可以创建自己的AndroidApp。对于那些为了特定目的想要动手尝试开发一个简单应用的用户。

如何使用Android蓝牙开发

转载 Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输。本文档描述了怎样利用android平台提供的蓝牙API去实现蓝压设备之间的通信。蓝牙具有point-to-point 和 multipoint两种连接功能。

使用蓝牙API,可以做到:

* 搜索蓝牙设备

* 从本地的Bluetooth adapter中查询已经配对的设备

* 建立RFCOMM通道

* 通过service discovery连接到其它设备

* 在设备之间传输数据

* 管理多个连接

基础知识

本文档介绍了如何使用Android的蓝牙API来完成的四个必要的主要任务,使用蓝牙进行设备通信,主要包含四个部分:蓝牙设置、搜索设备(配对的或可见的)、连接、传输数据。

所有的蓝牙API在android.bluetooth包中。实现这些功能主要需要下面这几个类和接口:

BluetoothAdapter

代表本地蓝牙适配器(蓝牙发射器),是所有蓝牙交互的入口。通过它可以搜索其它蓝牙设备,查询已经配对的设备列表,通过已知的MAC地址创建BluetoothDevice,创建BluetoothServerSocket监听来自其它设备的通信。

BluetoothDevice

代表了一个远端的蓝牙设备, 使用它请求远端蓝牙设备连接或者获取 远端蓝牙设备的名称、地址、种类和绑定状态。 (其信息是封装在 bluetoothsocket 中) 。

BluetoothSocket

代表了一个蓝牙套接字的接口(类似于 tcp 中的套接字) ,他是应用程 序通过输入、输出流与其他蓝牙设备通信的连接点。

BluetoothServerSocket

代表打开服务连接来监听可能到来的连接请求 (属于 server 端) , 为了连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。 当远端设备发起连 接连接请求的时候,并且已经连接到了的时候,Blueboothserversocket 类将会返回一个 bluetoothsocket。

BluetoothClass

描述了一个设备的特性(profile)或该设备上的蓝牙大致可以提供哪些服务(service),但不可信。比如,设备是一个电话、计算机或手持设备;设备可以提供audio/telephony服务等。可以用它来进行一些UI上的提示。

BluetoothProfile

BluetoothHeadset

提供手机使用蓝牙耳机的支持。这既包括蓝牙耳机和免提(V1.5)模式。

BluetoothA2dp

定义高品质的音频,可以从一个设备传输到另一个蓝牙连接。 “A2DP的”代表高级音频分配模式。

BluetoothHealth

代表了医疗设备配置代理控制的蓝牙服务

BluetoothHealthCallback

一个抽象类,使用实现BluetoothHealth回调。你必须扩展这个类并实现回调方法接收更新应用程序的注册状态和蓝牙通道状态的变化。

BluetoothHealthAppConfiguration

代表一个应用程序的配置,蓝牙医疗第三方应用注册与远程蓝牙医疗设备交流。

BluetoothProfile.ServiceListener

当他们已经连接到或从服务断开时通知BluetoothProfile IPX的客户时一个接口(即运行一个特定的配置文件,内部服务)。

蓝牙权限

为了在你的应用中使用蓝牙功能,至少要在AndroidManifest.xml中声明两个权限:BLUETOOTH(任何蓝牙相关API都要使用这个权限) 和 BLUETOOTH_ADMIN(设备搜索、蓝牙设置等)。

为了执行蓝牙通信,例如连接请求,接收连接和传送数据都必须有BLUETOOTH权限。

必须要求BLUETOOTH_ADMIN的权限来启动设备发现或操纵蓝牙设置。大多数应用程序都需要这个权限能力,发现当地的蓝牙设备。此权限授予其他的能力不应该使用,除非应用程序是一个“电源管理”,将根据用户要求修改的蓝牙设置

注释:要请求BLUETOOTH_ADMIN的话,必须要先有BLUETOOTH。

在你的应用manifest 文件中声明蓝牙权限。例如:

manifest ...

uses-permission android:name="android.permission.BLUETOOTH" /

...

/manifest

通过查看uses-permission资料来声明应用权限获取更多的信息。

蓝牙设置

在你的应用通过蓝牙进行通信之前,你需要确认设备是否支持蓝牙,如果支持,确信它被打开。

如果不支持,则不能使用蓝牙功能。如果支持蓝牙,但不能够使用,你刚要在你的应用中请求使用蓝牙。这个要两步完成,使用BluetoothAdapter。

1.获取BluetoothAdapter

所有的蓝牙活动请求BluetoothAdapter,为了获取BluetoothAdapter,呼叫静态方法getDefaultAdapter() 。这个会返回一个BluetoothAdapter,代表设备自己的蓝牙适配器(蓝牙无线电)。这个蓝牙适配器应用于整个系统中,你的应用可以通过这个对象进行交互。如果getDefaultAdapter()返回null,则这个设备不支持蓝牙。例如:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (mBluetoothAdapter == null) {

// Device does not support Bluetooth

}

2.打开蓝牙

其次。你需要确定蓝牙能够使用。通过isEnabled()来检查蓝牙当前是否可用。如果这个方法返回false,则蓝牙不能够使用。为了请求蓝牙使用,呼叫startActivityForResult()与的ACTION_REQUEST_ENABLE动作意图。通过系统设置中启用蓝牙将发出一个请求(不停止蓝牙应用)。例如:

if (mBluetoothAdapter.isEnabled()) {

Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);

}

![]

对话框中显示请求使用蓝牙权限。如果响应"Yes",这个进程完成(或失败)后你的应用将能够使用蓝牙。

REQUEST_ENABLE_BT常量作为一个整型传到startActivityForResult()中(值必须大于0),该系统传回给你,在你onActivityResult()作为实现的requestCode参数。

如果调用蓝牙成功,你的Activity就会在onActivityResult()中收到RESULT_OK结果,如果蓝牙不能使用由于错误(或用户响应“NO”那么结果返回RESULT_CANCELED。

除了通过onActivityResult(),还可以通过监听ACTION_STATE_CHANGED这个broadcast Intent来知道蓝牙状态是否改变。这个Intent包含EXTRA_STATE,EXTRA_PREVIOUS_STATE两个字段,分别代表新旧状态。可能的值是STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF, 还有STATE_OFF。

小贴: Enabling discoverability 将自动启用蓝牙。如果您计划执行蓝牙活动之前,始终使设备可发现,你可以跳过上面的步骤2。参阅enabling discoverability。

搜索设备

使用BluetoothAdapter可以通过设备搜索或查询配对设备找到远程Bluetooth设备。

Device discovery(设备搜索)是一个扫描搜索本地已使能Bluetooth设备并且从搜索到的设备请求一些信息的过程(有时候会收到类似“discovering”,“inquiring”或“scanning”)。但是,搜索到的本地Bluetooth设备只有在打开被发现功能后才会响应一个discovery请求,响应的信息包括设备名,类,唯一的MAC地址。发起搜寻的设备可以使用这些信息来初始化跟被发现的设备的连接。

一旦与远程设备的第一次连接被建立,一个pairing请求就会自动提交给用户。如果设备已配对,配对设备的基本信息(名称,类,MAC地址)就被保存下来了,能够使用Bluetooth API来读取这些信息。使用已知的远程设备的MAC地址,连接可以在任何时候初始化而不必先完成搜索(当然这是假设远程设备是在可连接的空间范围内)。

需要记住,配对和连接是两个不同的概念:

配对意思是两个设备相互意识到对方的存在,共享一个用来鉴别身份的链路键(link-key),能够与对方建立一个加密的连接。

连接意思是两个设备现在共享一个RFCOMM信道,能够相互传输数据。

目前Android Bluetooth API's要求设备在建立RFCOMM信道前必须配对(配对是在使用Bluetooth API初始化一个加密连接时自动完成的)。

下面描述如何查询已配对设备,搜索新设备。

注意:Android的电源设备默认是不能被发现的。用户可以通过系统设置让它在有限的时间内可以被发现,或者可以在应用程序中要求用户使能被发现功能。

查找匹配设备

在搜索设备前,查询配对设备看需要的设备是否已经是已经存在是很值得的,可以调用getBondedDevices()来做到,该函数会返回一个描述配对设备BluetoothDevice的结果集。例如,可以使用ArrayAdapter查询所有配对设备然后显示所有设备名给用户:

SetBluetoothDevice pairedDevices = mBluetoothAdapter.getBondedDevices();

// If there are paired devices

if (pairedDevices.size() 0) {

// Loop through paired devices

for (BluetoothDevice device : pairedDevices) {

// Add the name and address to an array adapter to show in a ListView

mArrayAdapter.add(device.getName() + "n" + device.getAddress());

}

};

BluetoothDevice对象中需要用来初始化一个连接唯一需要用到的信息就是MAC地址。

蓝牙APP层的开启与关闭

BluetoothAdapter是Android提供给开发者控制蓝牙的api,使用其enable()和disable()方法,会穿过framework层,来到app层,实现蓝牙app的开启与关闭。

下面就梳理一下蓝牙app,及各个 profile Service开启与关闭的流程

BluetoothAdapter.enable()方法经过一系列流程会onCreate AdapterService,然后会调用startProfileService()

路径:packages\apps\Bluetooth\src\com\android\bluetooth\btservice\AdapterService.java

然后会调用setAllProfileServiceStates();

再接着会调用setProfileServiceState(service, state);

以startService的方法启动各个profile service

profile service有以下一些:

A2dpService

A2dpSinkService

AvrcpControllerService

GattService

HeadsetClientService

BluetoothPbapService

MapClientService

等等

它们都继承了ProfileService

所以各个协议服务都必须重写ProfileService的onStartCommand()方法

因为是enable(),传过来的state是on,所以调用doStart()

注意 mProfileStarted = start();会去调用start()方法

这个start方法是profile service定义的抽象方法,各个子类必须去实现它,所以各个协议服务都会有一个start()方法,各个协议服务的真正开启也是从start()开始的。

开启阶段分析到此为止

关闭蓝牙的流程与开启类似,从BluetoothAdapter的disable开始,会调用Adapterservice的stopProfileServices()方法

传入一个off的状态

关闭也是从startService()开始的,不过传入的状态是一个off状态

根据off状态,会走的doStop()

会走到stop()

和开启类似,stop也是profile service定义的抽象方法

各个子类必须去实现它

所以各个子类服务会在其stop方法里实现退出逻辑,到此为止

开发一个app有哪些流程?

1、 明确app的功能需求 如果你要开发一个应用程序,你应该考虑应用程序中的功能,明确开发应用程序的目的,把自己变成一个应用程序用户,想想如果你是一个用户,你需要什么功能。

2、 App功能思维导图展示 并不是每个公司都会在明确了功能需求之后,再做APP的功能思维图展示。为了节省时间,不浪费成本,很多公司会在您签订合同后才做功能展示。对于应用开发行业的人来说,我认为这种公司不是很真诚。具体的这里我就不多说了。

3、 App产品报价 在上一步app思维导图功能展示中,可以随意增删改查,对一些合理不合理的应该增删加删,直到你满意为止。功能最终确定后,公司产品经理会根据核算开发周期和人员投入给你合适的报价。当然,很多公司的价格差别很大,大家可以讨价还价。如果您认为签订合同合适,请签署合同并支付押金。注意一定要仔细看合同内容。

4、 确定app的UI设计 UI设计是app正式开发的第一步,UI设计是app开发后的一个小缩影。所以,开发公司给你UI设计图的时候,一定要大胆说出自己的想法,不合适的地方要抓紧修改。 UI设计完成后,APP开发将正式开始。

5、 app软件开发过程一般分为三个阶段,即app开发前期、app开发中期、app开发后期。其中,APP开发前期包括前期沟通、APP需求评估、APP规划,甚至APP开发流程图中的视觉设计和UI设计; App中期开发是指App开发的过程,包括App前端制作、后端制作、技术开发等; APP后期开发是指APP开发后的调试和APP的后期维护。 当然,从用户的角度来看,app开发的流程图应该是这样的,分为七个步骤:委托app开发公司做手机app,提供app开发方案,了解需要多少费用开发APP,确认APP软件开发并签订合同,提供APP开发报告,正式开发APP,最终开发APP。

开发一个app有明确app的功能需求,App功能思维导图展示,App产品报价,确定app的UI设计这几个大致的步骤

有不同时期的企业标志。作为现代企业身份的象征,应用开发不断被接受。许多企业或个人选择APP开发寻求新的高度。

关于蓝牙app开发流程图和蓝牙app开发流程图解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码