天花板的随笔

人与人之间最小的差距是智商,最大的差距是坚持!记录点滴,稳步成长!

JNI调用Java方法总结

1、首先了解一下native方法的方法签名,方法签名主要是描述了方法的参数和返回值,为了防止方法的重载而导致的调用混乱。

2019-06-07 00:57:17

阅读数 11

评论数 0

Android Studio NDK 开发

1、SDK Tools下载DNK,如果已经有下载有DNK的开发工具的话,可以直接导入 当然,AS后面推荐使用CMake方式开发NDK,这个后面再说,这里还是先讲ndk+javah+Android.mk的方式方式。 2、配置DNK的环境变量,这样才能在命令工具中方便使用DNK的命令,下面是我配置...

2019-06-06 23:16:56

阅读数 11

评论数 0

window弹窗接收view以外的触摸事件

项目上遇到这样一个需求,按键增减音量的时候会有一个window弹窗出来,在点击弹窗以外的地方需要立刻让其消失。 如果这个弹窗是dialog,那么可以设置方法setCanceledOnTouchOutside(true)来实现这个效果;但是如果是一个windowManager操作添加的window弹...

2019-06-05 18:27:16

阅读数 17

评论数 0

把一串十六进制的MAC地址放进一个字节数组里

比如有一串蓝牙的MAC地址字符串 “00:15:83:7D:6D:FC”,把它们放进字节数组里面是没有问题的。因为每一个数据,刚好能够放在一个字节里面,下面是提取的过程: String mac = "00:15:83:7D:6D:FC"; String [] macstring...

2019-05-23 19:25:54

阅读数 49

评论数 0

光大DVR模块串口通信协议开发总结

之前我写了如何使用串口发送和接收数据,但这只是最原始的一步,下面分享一下我开发基于广大DVR串口通信协议的过程。 概述: 1、每一帧的协议数据必须要是完整的才能用,主要是通过冗余校验位来检测。校验位放在每一帧数据的最后面,它的值是除了它自己之外前面所有数据的总和。每一帧数据的协议头始终是aa开...

2019-05-21 20:48:16

阅读数 13

评论数 0

Android串口开发总结

在嵌入式的开发中,经常会用到串口通信,用来和不同的硬件模块通信。比如最近我在开发行车记录仪,就用到了串口通信,串口就像一个桥梁,连接起了核心板(imax6)和行车记录仪(DVR)之前的数据通路。 使用串口,分为以下几个步骤: 1、导入Google的开源串口项目,此项目通过jni的方式提供了打开...

2019-05-13 20:20:16

阅读数 12

评论数 0

基于IjkMediaPlayer的播放器

作为一个练手项目,基于IjkMediaPlayer的仿照腾讯视频风格的播放器,支持全屏缩放,对其中核心的代码做记录。 播放器总体架构如图所示: player是继承frameLayout,自己内部拥有IjkMediaPlayer的实例,以及做渲染显示用的TextureView,同时player只有...

2019-03-19 17:57:07

阅读数 41

评论数 0

解决TextView中文英文数字混排导致的自动换行问题

Android原生的TextView,在某些特定的时候(我是在ListView的适配器里面),遇到中文和数字或者中文和英文一起混排的时候,会出现自动换行的现象。本来第一行还有很多空间可以显示,却莫名其妙地换行显示。经过网上的资料查找,需要继承TextView并重写OnDraw方法,具体代码如下: ...

2019-03-19 15:14:54

阅读数 169

评论数 0

车机屏幕适配方案总结

基本概念: 1、px 像素单位,构成图片的最小单位,1px相当于屏幕的一个物理像素点。 2、分辨率 屏幕的宽度上的像素点 * 高度上的像素点,例如1280*720。 可以通过命名 vm size 获取分辨率信息 wm size Physical size: 1280x480 ...

2019-03-11 15:11:09

阅读数 71

评论数 0

OKHttp+Gson解析网络json数据

1、定义OKHttp的客户端,并设置一些常用属性 OkHttpClient mOKHttpClient; OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(15, Ti...

2019-03-08 12:39:18

阅读数 124

评论数 0

车载系统Android WIFI开发小结

1、WifiManager 操作wifi的管理类 ,通过系统服务获取: wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(true/...

2019-03-04 17:22:16

阅读数 113

评论数 0

车机中行车记录仪(DVR)MVP模式开发总结

现在的车机系统中,DVR已经是不可或缺的功能了,下面是本人在开发DVR应用中总结的一些经验。

2018-12-12 17:57:07

阅读数 389

评论数 0

讯飞消噪处理的知识点总结

音频流是通过MIC录入的,录入的音频流会经过讯飞模块消除噪音之后,再给到讯飞识别模块,或者给到蓝牙电话等其他应用使用。 首先这里有两种输入模式:外挂模式和顶灯模式。如果是单个麦克风,由于声音能量比较小,所以我们的硬件驱动会对输入增益后,再给到讯飞的降噪模块,此为外挂模式;如果是麦克风组,比...

2018-12-11 19:43:28

阅读数 170

评论数 0

车载定制化系统设置中实现平滑的语言切换

在每个车载系统中,都会有自己独特的UI风格。比如系统设置这个功能,为了统一风格,我们不能直接去调用Android原生的设置应用,而是应该重新做一个风格统一的符合需求的系统设置应用。我们要说的语言切换这个功能,就是其中一个设置项。 如果简单地实现语言切换,应该是比较简单的,就是利用反射重新设置一下...

2018-11-23 18:55:43

阅读数 113

评论数 0

车机系统开发中的经验总结

1、ACC OFF代表的是车辆熄火,ACC ON代表的是车辆打火;LOCK ON代表的是打开车门,LOCK OFF代表的是关闭车门;B+代表的是车上的电源,连接B+就是把车前面的电瓶的电源连上,掉B+就是把电瓶的电源拔了。 2、主机的运行状态有多种,需要注意区分。 息屏状态:MCU只是单纯地把...

2018-11-19 18:24:03

阅读数 309

评论数 0

MVP模式在车载系统中车身设置的运用

车载系统的中的关于车身相关的设置过程,是一个异步的过程,就像网络请求一样。只是和网络用的http协议不同的是,车载主机和车身各个控制器的通信,是通过CAN协议实现的。CAN线就像是一个神经网络,它允许各个控制器也包括主机去获取自己感兴趣的报文,而我们的主机更像是一个整辆车的大脑一样。 我们以辅助...

2018-11-14 20:29:30

阅读数 2943

评论数 1

自定义Toast

我们可以根据自己UI的需求,加载布局xml文件来实现自定义Toast。同时,也可以根据需求,缩短Toast的显示时间。 public class MyToast { TextView wtext = null; Toast mToast = null; public MyToast(Co...

2018-11-14 19:10:58

阅读数 57

评论数 0

讯飞汽车语音助理在其他外部应用唤醒

我们可以通过讯飞提供的外部唤醒适配功能,可以在不用唤醒语音关键词的情况下,监听我们所发出的语音命令。比如,我们用TTS播报一段消息,“规划前往北京鸟巢,是否前往?” ,这个时候语音其实是还没有通过唤醒词唤醒的,我们就需要通过外部唤醒适配功能,让语音去识别到我们的命令,是前往还是取消。实现此功能有以...

2018-11-05 16:41:38

阅读数 320

评论数 0

AIDL文件定义参数前面的in、out、inout修饰符

通常我们在定义aidl文件里面的方法的时候,很少注意或者很少用到到参数的修饰符:in 、out 、inout,它们代表的是客户端和服务端数据相互传递的规则。 in代表参数只能从客户端传到服务端;out代表此参数从客户端传递不到服务端,但是服务端中对应的这个参数如果改变,客户端的参数对象是会改变的...

2018-11-05 11:00:41

阅读数 193

评论数 0

在子线程中快速使用Handler

很多时候,我们需要在其他线程使用Handler,特别是在一些远程回调方法中。这个时候,我们直接用Handler发送消息会出问题,提示我们没有Looper初始化;但我们并不能在代码中去初始化Looper然后loop(),因为这样会阻塞线程的。因此我们可以使用主线程原有的MessageQueue,在创...

2018-11-01 11:24:56

阅读数 142

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭