- 博客(13)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 Android 蓝牙SPP通信——问题汇总
一、子线程操作1、在执行accept()方法会阻塞等待,开启子线程避免ANR。2、接收数据, IO操作完成一定要释放。二、长连接1、发送心跳包,在超时未响应发起重发N次,或者isConnect()判断。三、粘包快速发送短小的数据容易引起粘包1、发送端发送时,添加发送间隔,这样处理也会影响发送端的效率。2、完善数据解析协议,数据包内包含数据长度,按照长度解析数据,或者在数据结尾添加特殊的符号,标记为单帧数据的结尾。...
2020-07-08 14:53:45
1239
原创 Android 蓝牙SPP通信——服务端
创建BluetoothServerSocketserverSocket = bluetoothAdapter.listenUsingRfcommWithServiceRecord( bluetoothAdapter.getName(),java.util.UUID.fromString(SPP_UUID));开启接收 读写数据
2020-07-08 14:53:35
1952
原创 Android 蓝牙SPP通信——客户端
开始前先看一下大致的流程和服务端相似,客户端也经历创建Socket,连接,操作流的过程。1、开启扫描 public void starScan() { if (bluetoothAdapter != null){ if (bluetoothAdapter.isDiscovering()){ stopScan(); } bluetoothAdapter.startDi
2020-07-08 14:53:19
1631
原创 Android 蓝牙SPP通信——简介
在这就不对SPP协议进行深入探讨技术细节,而是对于SPP通信进行一个大体描述,建立一个整体框架模型,总结如下几点。蓝牙协议众多,SPP只是其中一种; SPP通信属于典型的C/S模式,那么建立通信的双方就分为服务端和客户端; SPP对蓝牙模块串口的读写实现通信,建立在串口仿真协议RFCOMM上实现; 服务端和客户端对应为BluetoothServerSocket和BluetoothSock...
2020-07-08 14:52:53
5598
转载 Android疑难杂症之KillProcess 和System.exit 无效
转载自:原文首先就这个名字来说,kill了process 或者 system.exit确实已经把APP杀掉了,特别是当你栈里只有一个Activity的时候,这个措施是行之有效的。但是因为Android framework的原因,在一些情况下APP会被重启,其实更准确地来说是App被恢复了。什么情况呢?就是如果你还有未被主动关闭的Activity的时候。比如ActivityA -打开-> ...
2020-04-02 09:59:19
778
原创 Android 复合字符串
引言:今天测试小姐姐告诉我,切换英文的时候你这里显示“Total 99 picture”不对,应该是“Total 99 pictures”,要复数。不得不说测试小姐姐也是很细心的,好在问题不大,很快就给你改好了。脑子一过解决方案就是判断数字大小来选取单复数,说干就干,但是刚写下if就发现事情并不那么简单,假如有n个位置的数字要改变,那我就要写n个if...else...来选取单复数,真是令...
2019-07-11 18:21:58
327
原创 Android 实现截图功能
本截图功能的实现思路是通过反射调用系统的截图功能,在service中执行,可以截取任何界面。放出一个demo,截取图片保存在U盘,核心代码在screenshot方法。本文参考了该文章public class ScreenShotService extends Service { private String TAG = "ScreenShotService"; priva...
2019-06-26 13:58:37
5520
6
原创 Android Launcher2 分析与个人理解
刚刚进入工作岗位就分配到了launcher开发,之前是都没有接触过,我是一脸懵逼的。。。。由于是车载多媒体,为了稳定,所以选择了Android4.4的,在这将我个人的分析和理解记录,如有不对之处望多多指正。 图标的加载图标内容加载有篇好文章写的不错在这分享一下(偷懒一下。。。。) launcer2内容加载开始第一点击就借用了别人的文章,要是结束了就太水了哈哈哈哈,接下来说一下laun...
2019-01-30 15:33:24
2127
2
原创 Android 显示文字超过指定长度部分使用省略号表示
1、超过指定字符数 这个实现方法网上一查一大堆,这里挑几篇网友的参考:https://blog.youkuaiyun.com/lvi_166/article/details/53762008https://blog.youkuaiyun.com/anlidengshiwei/article/details/45915637 2、超过指定宽度由于中文字符和英文字符的大小不...
2019-01-23 17:37:40
3071
原创 java截取byte中的n位
在公司的项目中定了一份协议,使用byte数组来传输协议数据,通常一个byte里不同的位代表着不同的数据,工作中,需要将我们想要的数据从一个byte中截取出来,特意在这里记录一下。若是有什么不足和错误请指出。假设有这么一个byte数据b1:1 1 0 1 1 0 1 1 假设我们需要从中获取其中的3~5位,即110,我们取出的正确的数值应该是这样...
2018-10-11 14:14:15
5568
原创 Android 中使用Timer()倒计时
以下为Timer的一种写法,执行run()里面的方法:if (timer != null) { timer.cancel(); } timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { handler.obtainMessage(0x101).sendTo...
2018-09-27 12:30:52
3294
WindowManager.docx
2019-10-15
Moto z2018 在用第三方外接充电模块,app怎么获取电量,不是usb充电。
2019-11-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人