导航:首页 > 操作系统 > android蓝牙通知

android蓝牙通知

发布时间:2023-05-29 18:39:05

A. android 蓝牙连接时候那个弹出框是怎么实现的

主线程启动processDialog
子线程进行连接
连接完毕桐弯后通过轿春handler通知主闭轮耐线程结束processDialog。

B. android蓝牙连接成功后没有返回状态

没有返回状态说明连接成功。
也就是说链路层的数据只存在发送成功(可能经过重发N次后成功),或者连接断开,不存在失败的可能性,也就无所谓返回状态的区别。
onCharacteristicWrite返回的status状态看一下API就知道了,都是GATT开头的各种常量,也就是说从设备一定是接收到了数据,但是数据从链路层转发到GATT层的过程中可能存在各种异常情况,导致返回错误。需要注意的是应用层无法决定这个返回状态,比如说如果从设备的应用层知亏猛接收到数据后发现不符合自己空激定义的接口数据协议规范搭桥,那么也只能通过另外发起notify来通知主设备,而无法通过status来返回错误类型。

C. Android 蓝牙开发(一)

普通蓝牙设备官方文档

Android 平台包含蓝牙网络堆栈支持 ,凭借此支持,设备能以无线方式与其他蓝牙设备交换数据。应用框架提供了通过 Android Bluetooth API 访问蓝牙功能的途径。使用 Bluetooth API Android 应用可以执行下面的操作:

传统蓝牙适用于电池使用强度较大的操作,例如 Android 设备之间的流传输和通信等。针对具有低功耗要求的蓝牙设备,Android 4.3(API 18)中引入了面向低功耗蓝牙的 API 支持。

使用 Android Bluetooth API 来完成使用蓝牙进行通信的四项主要任务: 设置蓝牙 、 查找局部区域内的配对设备或可用设备 、 连接设备 ,以及在 设备之间传输数据 。

关于蓝牙的 API 在 android.bluetooth 包中,下面介绍一下和蓝牙相关的主要类:

在 BluetoothProfile IPC 客户端连接到服务(即,运行特定配置文件的内部服务)或断开服务连接时向其发送通知的接口。

使用蓝牙必须声明权限 BLUETOOTH 才可以执行蓝牙通信。

1、获取蓝牙适配器

例如:我们可以查询所有已配对的设备,然后使用 ArrayAdapter 向用户显示每台设备的名称:

要发起连接仅需要知道目标蓝牙设备的 Mac 地址就可以了。

注意 执行 discovery 对于蓝牙适配器来说是一个非常繁重的过程,并且会消耗大量资源。在找到要连接的设备后, 要确保使用 cancelDiscovery() 来停止发现,然后尝试连接 。如果您已经和某台设备进行连接,那么这个时候执行发现操作会大幅度的减少此连接可用的带宽!因此不应该在处于连接状态的时候执行发现操作!

例如:

在连接之前如果两个设备没有配对,则系统会自动发出配对请求。

服务器套接字接受连接的基本过程

放在子线程中去执行。

例子:

客户端连接的基本过程

调用 connect() 的时候要确保客户端没有执行发现操作。如果执行了会大幅度降低连接的速度,增加失败的可能。

例子

在连接之前调用 cancleDiscovery() 在进行连接之前应该始终调用这个方法,而且调用的时候无需检测是否正在扫描。

过程:

从 Android 3.0 开始, Bluetooth API 便支持使用蓝牙配置文件。蓝牙配置文件是适用于设备间蓝牙通信的无线接口规范。

1、蓝牙配置文件就是设备间通信(蓝牙设备)的一种规范

免提配置文件便是一个示例,对于连接到无线耳机的手机,两台设备都必须支持免提配置文件。我们也可以通过实现接口 BluetoothProfile 来写入自己的类来支持特定的蓝牙配置文件。Android API 提供了以下的几种蓝牙配置文件的实现:

2、使用配置文件的基本步骤

创建 HDP 应用:

关于普通蓝牙设备和普通蓝牙设备之间的连接通信

关于蓝牙设备和蓝牙仪器(蓝牙耳机、电子秤等等类似产品)
这种之间的通信是通过配置文件代理来实现的。
都有一个对应的配置文件代理类。具体的操作是通过这个对象来完成。

参考: https://mp.weixin.qq.com/s?__biz=MzU5NzA2NjQzMg==&mid=2247484128&idx=1&sn=&scene=21#wechat_redirect

D. android 蓝牙4.0怎么通过setcharacteristicnotification来接收信息

最近接了一个新项目顷悔,但是对于蓝牙BLE并不大了解。。。这个问题卡我我很久。。一直不知春饥道是哪里错了。onCharacteristicChanged这个方法一直不回调
我的项目需要连接一个蓝牙4.0的设备,用Android BLE 我这边设置了扫描到蓝牙有一雀森正个服务,三个特征,分别是 indicate,write,read。我在链接设备后。然后订阅indicate的 characteristic
mBluetoothLeService.setCharacteristicNotification(mNotifyCharacteristic, true);

mBluetoothLeService.java
public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic, boolean enabled) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}

E. android开发中如何增加蓝牙连接成功后弹出一个toast进行提示

用 handler
在activity里面声明一个 handler

1、如果蓝牙连接是一个类,把handler传入蓝牙的类
当蓝牙连接成功之后,Message mes = handler.obtainMessage();用mes发个消息。然后在activity里面的handler里面进行处理就可以了。

2.如果蓝牙连接在一个类里面。那就直接用
当蓝牙连接成功之后,Message mes = handler.obtainMessage();用mes发个消息。然后在activity里面的handler里面进行处理就可以了。

我一般都用service 处理蓝牙 以为要循环连接和搜索。也可以用广播。

F. 安卓系统手表蓝牙安装第三方软件可以吗

可以。1.   工具箱安装

运行

安装程序,一直按下一步,最好不要修改安装目录。务必关闭杀毒软件,否则会影响adb的安装。

2.   运行工具箱

按软件内文字提示操作,开启工具箱。该安装adb就跟着安装。

3.调试

连接电脑与手表,用充电器即可。

开启调试

(此处为ow2操作)进入手表设置——>其他设置——>关于手表——>连按版本号打开开发者选项——>回到其他设置,进入开发者选项——>开启USB模式——>选择文件传输

这时手表会弹出白色的授权界面,点击授权即可

G. android蓝牙设置了notify通知,但是发送不了数据

对指定的服务蓝牙对象进行初始化。
具体问题应该是代码书写过程中,出现了逻辑错误等不易发雀庆肆现的错误类型,代码书写并无实质性错误。这才导致发送不了数据。
这个的实现主要依赖于代码的正差虚确顷轿性,代码是实现发送和接受数据的关键,如果自己发现不了错误,可以寻求专业人士的帮助。代码改正不正确可能会导致出现更多的错误。

H. Android保活——蓝牙唤醒(主动kill掉也可唤醒)

项目需要后台保活,但无论怎么保活,只要用户主动kill掉,app依然是活不了。

发现了蓝牙唤醒这个方式,用户主动kill掉也可行。

Android 8.0开始提供猜差了 startscan的方法,

public void startScan(ScanCallback callback)

public void startScan(List<ScanFilter> filters,ScanSettings settings,ScanCallback callback)

public int startScan(List<ScanFilter> filters,ScanSettings settings,PendingIntent callbackIntent)

第一个没有过滤条件,锁屏就停止扫描

第二个可以加过滤条件,锁屏不影响扫描 

第三个的扫描结果由PendingIntent发送,即使app没有在运行,系统也可以扫描后唤醒app,这就是我们要的方法了。

PendingIntent是对Intent的封装,是满足某些条件或触发某些事件后才执行指定的行为,主要用于闹钟、通知、桌面部件。Android的四大组件之间通信用Intent,跨进程通信用PendingIntent。

Android 8.0 引进了Context.startForegroundService(),在系统创建服务后,应纤神用需要在ANR发生前调用startForeground(int ,android.app.Notification),如果未及时调用该方法,系统将报ANR错误 。系统给前台服务的ANR时间是20秒。

用startScan蓝牙唤醒的原理是:app向系统订阅了扫描结果(预先加了过滤条件),当蓝牙连接断开的时候,设备就会发广播,这时系统就可以扫描到对应的广播,唤醒对应的service,这时想做什么操作就根据你的项目需要了。至于系统会为你扫描多久,这个还没测试。

(1)setScanMode有四个参数可以选 :

SCAN_MODE_BALANCED:在平衡电源模式下执行蓝牙LE扫描。返回扫描结果的速度能够很好地权衡扫描频率和功耗。

SCAN_MODE_LOW_LATENCY:扫描使用最高占空比。建议只在应用程序在前台运行时使用此模式。

SCAN_MODE_LOW_POWER:在低功耗模式下执行蓝牙LE扫描。这是默认的扫描模式,因为它消耗的能量最少。如果扫描应用程序不在前台,则强制执行此模式。

SCAN_MODE_OPPORTUNISTIC:一种特殊的蓝牙LE扫描模式。使用这种扫描模式的应用程序将被动地侦听其他扫描结果,而不启动BLE扫描本身

(2)settingBuilder.setMatchMode有两个参数可以选:

MATCH_MODE_AGGRESSIVE:  信号弱也会报告 

MATCH_MODE_STICKY:  信号比较强和毁兆亏扫描到的次数比较多才会报告

(3)settingBuilder.setCallbackType也有其他参数可选,但适用的就一个

  (4)  ScanFilter  的过滤方法有几个,如下图,打勾的是测试了可行的,但只有第一个DeviceAddress有唯一性  

I. 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回调。你必须扩展这个类并实现回调方法接收更新应用程序的注册状态和蓝牙通道状态的变化。


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

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。

J. 安卓手机安装蓝牙通知后死机是怎么回事

1、第一种情况及解决方法:rom中存在大量的bug,导致手机频繁死机。
这种情况下主要死机的情况一般为对系统进行一些设置时手机突然时机的情况,比如我们打开蓝牙或是开启WIFI就会导致手机死机没有反应了,这种情况下大部分都是由BUG引起的,这时要做的就像是电脑出现问题时我们经常说的重装系统一样,不过手机的就需要对ROM进行更新。
1)打补丁。码扰每个ROM在出来不久官方都会发布补丁或是一些论坛根据用户的实际出现的问题做一些补丁,我们要及时的打补丁修复这些漏洞。
2)升级ROM。这种方法一般是我们信模雹经常选择的方法,我们的手机出现问题时,我们一般都会选择刷机来解决这种频繁出现的问题,很多好的ROM都会为我们修复了漏洞,刷机可以使用刷机精灵等工具或SD升级,不同的手机有不同的要求和限制,刷机前做好备份是最重要的。
2、第二种情况及解决方法:运行程序导致CPU温度过高或是各种数据运算时出现错误导致。
不同的CPU有着不同的负载能力,我们需要根据自己的手机安装程序,不要看到什么软件好就安装什么软件,有些软件的处理机制有我们手机的CPU不符就无法运行,进入后导致手机黑屏死机。
1)不要长时间运行比较大型的游戏,注意手机后盖上的温度滑帆,有异常是及时结束掉相应的进程,避免死机。
2)使用完一个程序之后就要将其关闭,不要在后台运行过多的程序。有些时候在我们不知道情况下有些程序就会自动的运行,比如什么水果忍者之类的游戏,都会自动后台获取我们的地理位置等占用手机进程。所以,如果你的手机CPU负载能力不够就不要后台运行过多的程序,及时清理,避免死机。
3、第三种情况及解决方法:SD卡读取错导致手机死机。
这种情况一般出现子在我们在资源管理器中打开一些内存卡文件时出现死机,比如打开一个视频文件或是音乐等出现死机。
1)删除内存卡中没用的文件,或是直接对内存卡进行格式化处理。
2)更换没存卡。这种情况是你的内存卡和手机不兼容的请款下就需要更换内存卡来缓解手机运行的压力从而解决死机问题。
4、第四种情况:软件造成手机死机。
这种情况比较常见,一般我们使用某个软件的时候就会发现手机突然会反应很慢,运行一段时间后就会出现死机的情况,后台运行程序也不多,手机也不热,这就是软件有问题。
这时直接将软件拆卸即可,到官方或是一些其他的软件市场重新下载。
5、第五种情况:病毒导致手机死机。
这种情况是比较常见的一种情况了,我们的手机防护措施相比电脑来说是很弱的,虽然有什么360或是金山都没有电脑的效果好。
1)恢复出厂设置。
2)进入Recover进行两清。
3)SD升级,对系统进行彻底的还原。
注意事项
1、恢复出厂时一定还要注意备份你的联系人信息。
2、刷机的话需要获取root权限。

阅读全文

与android蓝牙通知相关的资料

热点内容
甘肃酒泉发票服务器地址 浏览:356
程序员专用诗集 浏览:208
微信租车系统源码 浏览:983
中国抗日狙击手电影 浏览:420
千王之王2000百度网盘资源 浏览:515
phpsocketepoll 浏览:726
小孩和熊的电影 浏览:241
python写网页界面的框架 浏览:6
当通过ssh远程连接弹性云服务器时 浏览:655
12306哪个app 浏览:680
免费网站电视剧电影全免费在线观看 浏览:737
如何快速清除app广告 浏览:716
单片机按键外部中断 浏览:560
单片机的usb供电 浏览:256
更改android分辨率 浏览:186
phpstaticfinal 浏览:695
成人伦理风月片电影 浏览:294
禁播爱情片 浏览:21
动漫电影免费版大全 浏览:14
java什么是this 浏览:811