4 Code-Porter

尚未进行身份认证

我要认证

我从事多年Android软件开发及物联网方面开发,熟悉Java,Android,前端、数据库开发;对技术要求苛刻、热爱分享、热爱新技术

等级
TA的排名 6k+

微信小程序蓝牙(BLE)开发与蓝牙设备数据交互开发总结

需要做一个类似于美团单车小程序扫码开锁的程序,需要使用到微信小程序的蓝牙模块功能与蓝牙锁进行交互一、这里我先把我遇到的两个天坑在这里先说明一下:1、根据锁的开发文档描述:读特征值是000036F6-0000-1000-8000-00805F9B34FB,可实际开发下来发现:在Android手机是使用这个,在iOS手机确是0000FEC8-0000-1000-8000-00805F9B34FB这个问题一直没有搞懂!(上面这两个特征值至是举例)2、开启读特征值通知成功后发送数据给锁,无法收到锁回复的数据

2020-08-27 22:51:50

Android通过反射EthernetManager Api设置以太网为静态IP地址或者动态获取IP

一、对于一些工控行业的Android主板一般都会扩展个以太网接口,也就是可以插网线进行上网;然后在系统设置页面有个以太网菜单可以进行IP、网关等设置,如下:二、那怎么通过代码去设置呢?1、Android系统在Framework层是有提供操作以太网Api的也就是android.net.EthernetManager,但是Google把Api给隐藏了;所以最终你是调用不了的2、那需要怎么操作才能调用到隐藏的Api呢?相信你肯定会立马想到使用反射去调用;对,没错!这里我就是使用的这个方式;当然如果你公

2020-08-21 16:16:31

Android串口开发,基于官方的android-serialport-api增加支持设置奇偶校验|数据位|停止位

SerialPortPlus项目地址Android串口开发,基于谷歌官方的android-serialport-api增加支持设置奇偶校验、数据位和停止位使用步骤第一步:app/build.gradle进行依赖implementation 'com.azhon:serialport:1.0.0'第二步:打开串口1.打开串口try { SerialPortPlus serialPortPlus = new SerialPortPlus("/dev/ttyMT2", 9600);

2020-08-02 12:52:35

记一次艰难的OutOfMemoryError:Could not allocate JNI Env问题排查

当我们看到这个错误的时候第一反应是不是内存泄露导致程序无法申请到内存而导致的,然而查下来的事实告诉我并不是的…

2020-05-27 17:32:05

解决Android SoundPool播放多个音效没有播放完成回调通知

一、在我们需要播放一些短促的音乐或者音效的时候(播放mp3文件),通常会使用SoundPoolApi来播放因为可以对音频文件进行预加载至内存中从而能够迅速播放出来二、SoundPool的简单使用SoundPool soundPool = new SoundPool.Builder().build();int soundId = soundPool.load(App.getApplication(), R.raw.mp3_0, 1);soundPool.play(soundId, 1, 1, 0, 0

2020-05-17 17:00:26

Netty在Android开发中的应用实战系列(六)——— 自定义协议进行拆包

之前的文章有写过Netty的拆包处理Netty在Android开发中的应用实战系列(四)——— 粘包 | 拆包 处理一、这篇文章重点讲一下Netty中自定义协议的拆包需要怎么处理,也就是Netty提供的LengthFieldBasedFrameDecoder拆包器二、一般情况下我们都会定一个数据包的格式,如下: 包头(共10个字节) 扩展数据 标识符...

2020-04-24 22:31:09

Java实现部标JTT1078实时音视频传输指令——视频流负载包(RTP)传输

一、 说一说实现的思路1.接收平台方下发的0x9101命令(实时音视频传输请求)2.解析下发的0x9101命令,拿到音视频上传数据的服务器IP和端口号3.开始获取设备摄像头的每一帧视频数据,这里需要注意的是:视频数据支持的格式有:H.264,H.265,AVS,SVAC;详细的可以查看JTT1078协议的(表12)4.将每一帧的数据封装成(表19)音视频流及透传数据传输协议负载包格式...

2020-03-07 15:08:22

使用Netty封装的部标JTT808 | JTT1078 | 渝标协议 数据上传Android端

使用Netty封装的 部标JTT808,JTT1078,渝标协议 数据上传Android端示例项目地址:GitHub地址已实现的功能JTT808注册鉴权心跳位置信息汇报设置终端参数JTT1078历史音视频查询、回放与下载指令实时音视频传输实时音视频流及透传数据传输位置信息汇报渝标上传抽烟报警上传打电话报警上传未注视前方报警上传疲劳驾驶报警...

2020-03-01 22:42:08

Android使用AudioRecord录制PCM音频、PCM转AAC、使用MediaRecorder直接录制AAC编码音频

Android为我们提供了两个音频处理的API:AudioRecord和MediaRecorderAudioRecord:偏底层的apiMediaRecorder:对AudioRecord进行包装的api

2020-02-29 21:06:08

Android采集摄像头的视频流数据并使用MediaCodec编码为H264格式

前言:博主在写这篇文章之前可以说是在`音视频这方面`,知识积累与经验几乎为0;所以在实现这个功能上也是费了好一番功夫和精力把它给搞出来了,所以以此篇文章纪念一下。一、首先就是需要先打开摄像头,并拿到视频的每一帧数据1、相机权限是必须要的,API>=6.0还需要动态申请 (动态申请权限代码略过,详情见文末源码)<uses-permission android:name="a...

2020-02-26 23:59:18

Viewpager迁移至ViewPager2实现Tab标签页面

ViewPager2是什么呢?ViewPager2 是 ViewPager 的下一代版本,带来了更强的功能并修复了之前的 bug;也就是解决了ViewPager的bug和不支持RTL布局等等其他问题,Google同时也放弃对ViewPager的维护了。ViewPager2相比ViewPager带来的新功能支持竖直滑动支持RTL布局可以使用DiffUtil…相关文档链接ViewP...

2019-12-16 16:26:19

使用Android APT(Annotation Processing Tool)让代码学会自己写代码

APT即注解处理器(Annotation Processing Tool)的简称

2019-12-02 15:10:51

Android 动态换肤技术原理 | 实践 及总结

动态换肤一般实现的原理对页面需要换肤的View进行标记在Activity#setContentView()加载view时获取到标记的view(后面会说是要怎么获取到)创建一个Library项目制作我们的皮肤包(res下的资源名称需要与app使用的一致,换肤就是通过使用的资源名称去皮肤包里加载相同名字的资源)创建皮肤包对应的Resources对象(用于加载皮肤包内的资源)点击换肤将我们标...

2019-11-20 15:24:03

Netty在Android开发中的应用实战系列(五)——— 创建Web服务 | 作为HTTP服务器

Netty连续Socket文章系列Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用Netty在Android开发中的应用实战系列(三)——— 心跳处理 | 断线重连Netty在Android开发中的应用实战系列(四)——— 粘包 | 拆包...

2019-09-23 21:28:01

Netty在Android开发中的应用实战系列(四)——— 粘包 | 拆包 处理

阅读本文建议从第一篇开始往后看本系列文章Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用Netty在Android开发中的应用实战系列(三)——— 心跳处理 | 断线重连Netty在Android开发中的应用实战系列(四)——— 粘包 ...

2019-09-19 22:53:04

Netty在Android开发中的应用实战系列(三)——— 心跳处理 | 断线重连

阅读本文建议从第一篇开始往后看本系列文章Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用一、客户端添加心跳处理这里就需要提到一个netty重要的IdleStateHandler,用于处理心跳机制;为当前连接通道设置 读、写、读写 空...

2019-09-17 21:53:06

Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用

阅读本文建议从第一篇开始往后看本系列文章Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端一、Encoder的作用将发送的数据进行编码成需要的数据格式,然后发送出去二、Decoder的作用将收到的数据根据数据协议进行解码,然后处理三、Handler的作用将解码好的数据进行处理四、下面们通过一个简单的一个示例进行收发数据定义一个传输的...

2019-09-14 17:46:22

Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端

一、简单的介绍一下Netty官网地址:https://netty.io官网Jar包下载:https://netty.io/downloads.htmlJar包也可以去mvnrepository下载:https://mvnrepository.com/artifact/io.netty/netty-all直接上官网的介绍再好不过了谷歌翻译过来就是Netty是一个异步事件驱动的网络应用...

2019-09-05 23:41:36

Android自定义输入车牌号键盘、车牌简称 | 数字 | 字母键盘

为了便于用户快捷的输入车牌号码便需要自定义个车牌键盘,而不是使用系统的键盘输入,上效果图:横屏效果竖屏效果一、首先我们要来分析一下需要做哪些东西默认展示车牌的省份简称特殊车牌(使、领、警、港、澳)删除键切换为数字和字母按键车牌号中是没有I、O字母的(容易与1、0)分混淆,故不需要这两个按键I、O这两个按键的位置正好使用学、挂来填充二、根据效果图可以看出键盘就...

2019-08-31 15:45:59

记一次BLE(低功耗蓝牙)扫描周围设备慢的一个坑

BluetoothManager bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);bluetoothAdapter = bluetoothManager.getAdapter(); bluetoothAdapter.startLeScan(leScanCa...

2019-08-22 23:32:34

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取