自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

拥抱世界

坚持才会有收获

  • 博客(88)
  • 资源 (12)
  • 问答 (1)
  • 收藏
  • 关注

原创 记录一个因为dumpsys导致应用出现ANR的问题

我们先看一下这个ANR的主线程状态:从主线程的堆栈我们可以看出,应用block在了renderthread的postAndWait方法,我们接着看一下这个方法的实现:从这里我们可以看出是mSignal这个在等待锁释放,进一步搜索发现mSignal是在unblockUiThread方法中释放的那么unblockUiThread方法是什么时候调用的呢?搜索代码发现该方法在DrawFrameTask的run方法中调用根据postAndWait方法我们可以看到run方法实际是在renderthread中的消

2022-12-07 17:30:05 887 1

原创 Ubuntu编译AOSP报错集锦

本文主要收集各类Ubuntu编译aosp时出现的报错信息 以及解决办法1、错误信息:error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory解决方案:sudo apt install libncurses5方法来源:https://www.jianshu.com/p/4876ab4a8f32...

2022-05-12 15:59:13 372

原创 蓝牙PBAP-PCE连接流程分析

​ 蓝牙电话本协议英文简称为PBAP,一般手机端作为服务端,也就是PSE角色,车机端作为客户端,也就是PCE角色。这里我们主要分析车机端的链接流程。​ PBAP-PCE的实现代码主要位于蓝牙App的pbapclient文件夹中,其中PbapClientService提供与外部交互的接口,核心逻辑实现则由PbapClientStateMachine和PbapClientConnectionHandler实现。​ 蓝牙电话本协议连接入口在PbapClientService的connect(Bluetooth

2021-09-27 11:06:09 1410

原创 在Windows上通过NDK编译CURL

因为Windows不能像Linux那样执行configure命令,所以需要手动新建一个curl_config.h文件,该文件需要放入源码目录的lib文件夹下,具体内容如下:/* lib/curl_config.h. Generated from curl_config.h.in by configure. *//* lib/curl_config.h.in. Generated from configure.ac by autoheader. */ /* when building libc

2021-09-18 09:40:42 491 2

原创 Android蓝牙启动流程分析

本文基于Android9.0源码,文中代码分布位于framework/base/services/core/java/com/android/server frameworks/base/core/java/android/bluetooth(平时我们调用的api代码就位于这里) package/app/bluetooth(系统中的蓝牙app,这里是最终实现蓝牙协议的地方) system/bt/binder/bluetooth(这里定义了整个蓝牙服务中使用到的AIDL)启动蓝牙我们需要调用framewor

2021-07-15 11:08:15 1722

原创 记录一次应用ANR问题的解决过程

公司的一个广告播放软件在更换硬件以后频繁出现ANR,查看日志发现ANR出现在下载过程中,当初测试的时候为了查看进度,添加了进度打印。因此日志里充斥着海量的无用日志,这里提一下日志框架用的LOG4J。然后开始抓取traces文件,但是traces文件很奇怪,并没有发现我们的进程,但是logcat里面显示我们的应用的的确确发生了ANR。经过一番思考,决定先关闭本地的日志输出,此时应用再次运行,还是会发生ANR,但是发生ANR的时间比之前晚了许久。因此初步确定是IO影响了应用的运行,测试机器的IO性能发现确实

2020-09-24 17:00:20 153

原创 在UE4使用JSON遇到的一个问题

最近一个UE4的项目使用的数据传输格式是JSON的,比较方便的是UE4自带了JSON解析相关的库。因此直接使用就是了,但是写完代码编译的时候,提示无法找到外部链接符号。于是找到了一个开源的JSON蓝图插件的源码,发现需要在项目中的xxx.Build.cs中添加JSON模块才行,就像使用HTTP一样。详细代码如下:// Fill out your copyright notice in the Description page of Project Settings.using UnrealBuildT

2020-09-15 11:07:49 591

原创 解决okhttp或者retrofit出现UnknownHostException的问题

首先确认你的设备能否解析该域名,可以直接ping这个域名,如果能ping通则代表设备所处的网络是没有问题的,如果不能ping通可以尝试接入阿里云或者其他云服务厂商提供的http dns服务,或者检查一下网络状况。在排除掉以上问题以后,检查一下是否添加了网络访问权限<uses-permission android:name="android.permission.INTERNET" />如果网络权限也添加了,仍然出现该问题,确认是否使用的http协议而不是https协议,如果是http协议

2020-06-22 11:46:45 4004 1

原创 解决flutter项目在AndroidStudio4.0的logcat中出现Please configure Android SDK

这个只针对flutter项目,我估计是flutter插件的原因,因为flutter项目的工程目录结构并不是一个传统的AS项目结构。所以解决办法就是先打开一个正常的android工程,然后再在新窗口打开flutter项目,这时候Please configure Android SDK的提示就没有了。...

2020-06-17 10:46:32 2169 2

原创 正确的Flutter和Android交互代码

网上能搜到很多交互的示例代码,这里主要说一下Android端的:// CHANNEL_NAME是String字符串,对Channel命名MethodChannel methodChannel = new MethodChannel(getFlutterView(), CHANNEL_NAME); // setMethodCallHandler,接收此通道上对方法的调用处理 m...

2020-03-05 14:20:03 2077 2

原创 谈一谈C#调用C++的一些心得体会

最近又开始写WPF了,这一次和之前不一样,以前都是纯C#项目,但是这一次涉及到了C++。其实之前做安卓的时候也接触过一些C++的东西,但都是涉及的不深,所以这一次就当加深印象了。一般来说C#调用C++有托管和非托管两种方式,在我的理解里托管方式就像Java里面的jni一样,需要自己先写一层中转层,用来转换上层语言和底层的数据结构。但是C#还有一种更为直接的方式,那就是非托管模式。在非托管模式下,...

2020-02-21 01:50:46 273

原创 记flutter dio使用过程中遇到的两个问题

1、dio使用post请求时,如果content-type是form-data,我们需要通过FormData类来构建数据,否则服务器将无法识别,同时需要传入一个Option指明content-type,而form-data的content-type完整类型表述为:multipart/form-data,昨天在这两个问题上卡了很久,归根结底还是自己对于http协议不够熟悉,以后还需要加强这方面的知识...

2020-01-07 11:15:38 5335

原创 oracle官网下载JDK速度很慢的解决方案

华为有个镜像可以下载:https://repo.huaweicloud.com/java/jdk/

2019-07-30 16:22:32 27162 22

原创 UE4学习之路【1】

因为公司工作方面的调整,golang学习之路估计得无限制搁浅了,开一个新坑,开始学习UE4。这个系列主要记录一下自己学习UE4的心得。1.在UE4的编辑界面,我们可以像玩3D游戏一样 按住鼠标右键 然后通过WASD来调整镜头,这样会比较方便。当然滚轮可以直接缩放镜头2.在UE4的官方文档中,关于创建可破坏的静态网格体,当我们右键单击SM_Rock时,找不到创建可破坏的静态网格体。这时候我们需要...

2019-07-11 15:04:25 765

原创 Golang学习之路【01】

1、在Go的结构体中,如果成员属性小写开头代表这个成员是私有的,如果是大写开头代表是公开的。因此在定义一些Json数据的结构体时,需要将成员属性均改为大写,否则无法解析2、beego创建一个纯API项目,通过bee api xxx(xxx为项目名)。创建以后我们需要进入项目目录直接运行bee run -gendoc=true -downdoc=true命令即可运行项目并且生成对应的文档。文档的访...

2019-06-20 15:51:24 137

原创 一个列表里的CheckBox导致的bug

在Android中,列表里使用CheckBox来做多选是一件很常见的事情,但是因为列表的ItemView的复用问题,这个CheckBox的状态就会异常。一般来说我们都会在ItemBean加一个属性来记录这个checkbox的状态,这样的话就不会因为复用ItemView导致状态错乱,其实这个道理和那些图片文字是一样的,只不过这个选中项对于新手来说容易忽略掉。还记得当初自学的时候,第一次遇到这个问题郁...

2019-06-05 00:01:21 515

原创 实现微信聊天界面的泡泡对话框效果(改进)

我们先来看看这个泡泡效果具体是什么如上图所示,这是聊天界面中有人发送的视频,这个泡泡背景左上有个尖角,按照我们普通的设计来说,这个角要么是空白的,要么视频内容完全覆盖了那个尖角。那么我们如何才能实现截图中的效果呢,这里我们就需要用到安卓自定义UI中遮罩相关的API了,网上关于这个说明很多了,我这里就提一个关键字,大家可以去搜相关的文章来看:PorterDuffXfermode另外我们这里还...

2019-05-31 02:43:59 3606

原创 谈一谈对新技术的态度

在IT行业我们经常遇到各种各样层出不穷的框架以及工具库,但是人总是习惯于待在一个舒适区的,对于一些事物的改变,即使心里抱着一种支持的态度,但是也很难落实到行动中来。而且公司的项目基于已有的框架和技术已经能够很好的完成各项任务,并且应用新技术可能导致一系列的问题。由于这两个原因,对于很多新技术我都只是看看简介,大概了解有这么一个东西。如果这份工作是像公务员那样稳定的,那么可能并没有什么影响,然而IT...

2019-05-27 00:57:12 2589 1

原创 Android实现3DES加密解密字符串

最近一个项目需要用到3DES加密解密,网上有很多关于android实现3DES加密解密的文章和代码,但是因为3DES加解密的时候需要确定加密模式和填充方式,网上大多都是采用的默认的,这就可能导致你加解密的结果和服务器并不一致。首先是加密过程,这里我们把需要加密的字符串定义为data,秘钥定义为key(这里我们使用的是kotlin),另外需要注意的是,在字符串转为byte[]时,我们需要保持编码的...

2019-05-09 14:10:21 1230

原创 通过xUtils3向服务器提交数组参数

首先我们来看看在http请求里面,如何提交数组参数,这里我们以GET请求为例。比如我们需要向服务器发送多个用户ID,那么如何以数组的方式向服务器提交数据呢?下面是示例代码:http://192.168.1.1/api?id=1&id=2&id=3基本做法就是这样,重复的参数名,不同的参数内容。那么回到xUtils3这个http请求库上来,我们怎么向服务器提交数组参数呢?xUt...

2019-05-06 23:32:10 798

原创 Qt通过post方式向服务器提交带参数的文件

代码如下QHttpMultiPart mMultiPart(QHttpMultiPart::FormDataType);QHttpPart filePart;filePart.setBodyDevice(&file);//这里的file对象就是我们需要提交的文件,如果需要上传多个文件,我们就需要创建多个QHttpPart对象filePart.setHeader(QNetworkRe...

2019-04-22 13:55:38 3877

原创 记录一个Qt信号槽问题

这里主要记录一下在连接信号槽犯得的一个错误错误写法:connect(mVideoPlayer,SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),this,SLOT(onVideoPlayStatusChanged(QMediaPlayer::MediaStatus status)));正确写法:connect(mVideoPlay...

2019-04-18 13:01:33 350

原创 解决WPF切换视频播放时黑屏的问题

播放器在加载一个新视频的时候,通常会把当前画面清空,然后开始渲染新视频内容,但是播放器在加载到渲染的过程中需要一定的时间,虽然时间不长,但是在视频切换的过程中用户还是能看到屏幕会出现黑屏的情况。所以理想的解决办法是,播放器在加载过程中不清空画面,依旧保留上一个视频的最后一帧。但是这种方案需要对播放器进行底层改造,这个对于不熟悉音视频开发的人来说是一个很大的挑战,所以本文基于WPF的MediaEle...

2019-03-19 18:07:36 3081 5

原创 阿里Sophix热修复框架注意要点

  今天测试了一下阿里的Sophix热修复框架,然后搞了一下午,始终无法正常的联网更新,一开始一直以为是权限问题,后来发现是参数填写错误了,所以在博客里面记录一下,如果后续需要使用的话,可以避免掉(小小的吐槽一下,Sophix这个名字第一眼看着我以为是凤凰的意思,还感叹了一下别人起名字就是这么艺术,凤凰浴火重生嘛,完美契合热修复主题。然后后来发现是我英语太渣了。。。。。)  SophixMana...

2019-03-16 22:33:57 289

原创 解决Mac AndroidStudio搜索不到插件(Plugin)的问题

  今天原本想学习一下Flutter,结果准备安装插件的时候,发现我的AS居然无法搜素任何插件了,在Google和百度上找了半天,也就搜索到两种办法。  1.不要勾选AS设置里面的Updates选项中的 Use secure connection  2.在C盘当前用户目录下有一个.AndroidStudioX.Y的隐藏文件夹,这个X.Y一般是你的AS版本号,比如我的AS3.3那么这个文件夹就是...

2019-03-14 01:36:56 8877 6

原创 Chrome69及更高版本开启默认flash选项

  之前版本的flash我们是可以直接在设置里面添加网站允许来默认开启网站的flash选项的,但是更新到69版本以后,添加按钮已经消失了,用户必须等网站弹出flash授权窗口才能继续使用flash,并且浏览器重启以后,该选项需要重新进行。  解决办法:  在地址栏输入:chrome://flags/#enable-ephemeral-flash-permission 把第一个选项改为Disab...

2018-11-20 22:52:37 889

原创 关于Android设备管理器的一些操作以及权限开启

做这个的目的简要的说一下,因为我们的设备长期暴露在阳光之下,长时间的运行导致设备温度过高从而导致设备停止运行。因此我们做了一个温度传感器,当温度高于阈值的时候,通过关闭屏幕来进行降温。至于为什么不直接关机,这里主要是为了后台监控方便。 那么,怎么关闭屏幕呢?谷歌为我们提供了一个叫DevicePolicyManager的服务,我们可以通过这个服务来实现屏幕的关闭。 当然首先我们需要配置一些东西,...

2018-08-09 01:15:24 11201 7

原创 Android调用系统安装apk的注意事项

对于7.0及其以上的设备我们需要做如下操作: 1.在manifest中注册FileProvider&lt;provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="...

2018-07-11 12:32:02 14929 1

原创 解决JxBrowser中BrowserView控件覆盖其他控件的办法

JxBrowser是一个基于chromium的Java浏览器组件,同时支持Swing以及JavaFx。因为是基于chromium开发的,所以JxBrowser对于H5以及CSS3的支持非常良好,兼容性也不错,完全可以代替JavaFx自带的Webview。但是在有一些使用场景上,JxBrowser会出现一些问题,比如我希望在布局容器上除了添加JxBrowser还想添加一些其他控件,按照正常情况来讲,...

2018-03-26 16:09:25 2226 3

原创 CentOS7部署安装Tomcat

本文内容主要用于个人的学习,所以一些本人已经烂熟于心的东西会省略掉。 1、配置JAVA相关内容。 这里选择了最新了JDK9,JDK9里面有个新特性,那就是移除了JRE,所以为了保证软件能够正常运行,因此JDK和JRE都下载了。这里贴一下JDK和JRE的配置文件内容:JAVA_HOME=/home/jdk-9.0.4JRE_HOME=/home/jre-9.0.4PATH=$

2018-01-23 22:22:31 1640

原创 关于WPF中使用AxWindowsMediaPlayer的一些心得体会

之前项目是WPF的,因为有视频播放的需求,所以自然而然的使用了MediaElement。但是客户的机器实在太垃圾了,还是用的赛扬处理器(真的是无语了),程序运行起来CPU占用立马飙到80%多。 后来换了VLC,但是Nuget上的几个vlc库效果还不如MediaElement,再后来考虑到使用DirectShow,但是却不支持MP4文件(这个需要自己注册编码器,搜索了一下资料,搞了半天实在没有

2018-01-05 10:44:36 1776

原创 CefSharp语言(Locales)配置问题

默认情况下语言是英文,大家可以访问一下微信的网页版进行测试。必须按照如下配置网页才会默认显示中文。网上绝大部分教程都只说了设置Locales属性即可,实际上只配置Locales是不正确,还必须设置AcceptLanguageList属性,同时工程生成的目录下必须包含locale文件夹,里面需要有zh-CN.pak文件。当然这个locale文件夹的路径也可以自行设定。CefSettings setti

2017-07-01 10:37:36 4891

原创 解决Mac下安装nmp的淘宝镜像失败

安装命令如下:npm install -g cnpm --registry=https://registry.npm.taobao.org错误提示信息如下:npm ERR! Darwin 16.6.0npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "cnpm" "--registry=https://r

2017-06-22 02:12:59 14318 2

原创 解决Could not load file or assembly CefSharp.Core.dll的问题

这个问题的中文提示是: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。找不到指定的模块 具体原因是因为CefSharp运行需要Visual C++ Redistributable Packages for Visual Studio 2013这个东西,但是有时候电脑上没有安装这个运行环境,因此我们需要下载并且安装,然后就能成功运行了。下面是对应的下载地址,要区分x

2017-06-15 16:04:51 18087 1

原创 Mac上离线配置gradle的正确姿势

首先我们要新建一个项目(如果项目存在也可以),然后打开项目的时候就基本就一直卡在building这里了。这个时候我们需要强制关掉AndroidStudio。然后打开当前用户目录下的.gradle文件夹(可以直接打开终端,然后在进入当前用户目录,输入open .gradle,如果是windows应该也是在系统盘的用户目录下可以找到),然后一直进入下一级目录,直到我们看到一个gradle3.3-all(

2017-06-04 09:57:26 3102

原创 关于Android资源图片存放位置的问题

首先描述一下场景:为某个Activity设置一张背景图,该背景图存放于res/drawable目录下,其实这是一个很简单的东西,直接在布局文件中为根布局设置一个background即可。 但是最终的结果却让我有点意外,因为图片没有显示出来。查看日志得知是因为我们的图片太大了,导致应用无法加载。 于是恍然大悟,我使用的设备是属于xxhdpi的,理论上我的资源图片应该放在drawable-xxhdp

2017-04-20 04:35:26 4875

原创 【WPF知识积累】MediaElement在windows7上双显示器播放的问题

当系统接入了多个显示器,而我们的Window又位于非主屏幕,可能会出现MediaElement无法正常工作的情况(这个情况在windows7有,windows10已经修复了,windows8和8.1不太清楚)。大概的解决办法有下面几种: 1、使用CPU进行解码计算,代码如下private void Window_Loaded(object sender, RoutedEventArgs e){

2017-02-28 03:13:09 1219

原创 C#中的委托与Java中的接口回调

最近因为业务需求学习起了C#,对于学过Java的人来说,C#其实还是挺好懂的,基本上很多语法都是相通的。今天就谈谈我对C#和Java中不同的地方的理解吧。   说到Java中的接口回调那么就不得不提观察者设计模式,所谓观察者模式就是A(观察者 Observer)和B(被观察者 Observable)两者,当B发生了某种特定的情况,会通知A去某件事情。具体的例子就是当天黑了路灯就会亮,这里的路灯就是

2017-02-03 14:18:01 4454 1

原创 修改Android开机动画问题

Android系统的开机动画修改主要是修改/system/media/文件夹下面的bootanimation.zip文件。   解压该文件后,我们会发现里面有一个文件夹,还有一个名为desc.txt的文件。这个文件内容一般如下:   1920 1080 20   p 0 0 loading   第一行中的1920和1080表示图片的分辨率,前面是宽后面是高,20表示刷新帧率,即每秒20帧

2017-01-16 14:45:15 1624

原创 Tv开发中Actionbar焦点问题

最近一直在做系统的二次打包,主要就是把编译好的系统包重新加入一些apk、配置文件、可执行文件、脚本等,然后重新打包。在这个过程中遇到了很多问题,这里就先记录一个。 上周因为修复了一些bug,于是提交了一版测试。测试反馈的bug中有一个很神奇——系统的图库应用没办法用遥控器操作了,但是鼠标还是可以操控。我们这里用的图库就是Android系统中的Galley2应用。 一开始我百思不得其解,因为我上一

2017-01-04 02:22:01 1334 2

curl7.79.0最新Android版动态库

curl7.79.0最新Android版动态库

2021-09-18

AndroidStudio插件配置文件

解决AS无法搜索插件的问题,具体使用办法参考博客https://blog.csdn.net/w815878564中【解决Mac AndroidStudio搜索不到插件(Plugin)的问题】一文

2019-03-14

AxInterop.WMPLib.dll

在wpf中使用AxWindowsMediaPlayer,另外一个dll引用请见文章http://blog.csdn.net/w815878564/article/details/78978430

2018-01-05

Interop.WMPLib.dll

在wpf中使用AxWindowsMediaPlayer,另外还有一个dll引用请看文章http://blog.csdn.net/w815878564/article/details/78978430

2018-01-05

Visual C++ Redistributable Packages for Visual Studio 2013(x86)

vcredist_x86,针对一些软件 提示无法加载xxx.dll的问题,这里适用于32位的软件

2017-06-24

Visual C++ Redistributable Packages for Visual Studio 2013(x64)

vcredist_x64,某些软件需要安装这个才能正常运行,一般会提示xxx.dll无法加载

2017-06-24

vcredist_2015_x86依赖库

vcredist 主要针对32位操作系统 无法加载dll的问题

2017-06-15

vcredist_2015_x86.exe

vcredist_2015_x86.exe 解决32位操作系统 某些类库无法加载的问题

2017-06-15

WPF 文字跑马灯控件

1、本资源来自http://marqueedriproll.codeplex.com/ 感谢这位哥们的分享 2、本资源不同于其他WPF跑马灯控件,其他跑马灯控件当内容长度大于控件长度就不能继续完整的展示内容了,本控件可以完全显示内容。效果与html的marquee属性一直 3、本控件支持上下左右四个方向的跑马灯

2017-02-09

TFTP工具,用于ftp形式的上传和下载

ftp上传 下载工具

2016-10-09

AndroidStudio代码颜色配色方案(Sublime)

下载解压后,File-Import Setting 将jar包导入即可 更改颜色主题(Setting-Editor-Color&Fonts)

2015-11-08

Android NDK Demo

一个完整的ndk开发例子,仅供初学参考。

2015-11-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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