- 博客(37)
- 资源 (7)
- 收藏
- 关注
原创 线上调试方法(Android)
昨天有个项目出现了和硬件驱动参数相关的的问题,需要查看一些参数信息,驱动没有提供命令行获取的接口,应用这端的打印比少,我原本想着提供一个加了日志的包来查看,但是万一更新之后不能复现岂不是事大了。正好这个驱动我们已经封装了jni接口出来,我们只需要反射获取下这个类,然后就可以通过这些方法拿到全部的参数。// 获取应用的上下文 Context asrContext = this.createPackageContext("com.xxx.xxx", CONT
2022-04-22 11:57:04
2247
原创 AudioRecord一个设备只创建一个线程
不要太相信方法名,尤其是那种看起来很简单的方法名。在很多博客下面都已经讲过AudioRecord的创建流程,从android_media_AudioRecord.cpp--->AudioRecord--->AudidPolicyService--->AudioPolicyManager--->AudioFlinger其中过程就不细讲,其中最关键的方法就是getInputForAttr()前面的调用不提,最终会调用到AudioPolicyManager.cpp的getInp
2022-04-14 15:12:33
761
原创 AudioPolicyService的类图和native的典型binder通信方式
AudioPolicyService:native binder:
2022-03-22 17:03:44
249
原创 客户端调用bindService怎么让服务端的binder回调过来的?
使用的是plantUML生成的,脚本如下:@startumlautonumbertitle bindService之拿到服务端的binderApp绑定服务 -> ContextImp: bindService// 服务端的binder对象最终回调到onServiceConnected中ContextImp -> ContextImp: bindServiceCommonContextImp -> LoadedApk:getServiceDispatcher():I...
2022-03-03 11:20:32
875
原创 MediaSession和MediaSessionService的交互流程梳理
黄色的部分是外部暴露的接口,我们一般使用MediaSessionManager的createSession方法得到一个MediaSession,随后我们可以使用MediaSession的setActive和release方法。所以这个流程图的看法是从黄色块开始,随着箭头往里面看。...
2022-02-24 16:49:13
2694
原创 母牛生小牛问题
问题:设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛?我看网上有两种解答:1 使用面向对象的方式添加到list中,最后统计list的长度2 使用f(n) = f(n-1) + f(n-3)第一种的大家伙很厉害,但是我是用C语言,不适合第二种网站上的解答要么是直接丢一个公式,要么是用表格把数据列出来找规律。我想要从逻辑上理一下这个公式,所以用这个博客记录一下。前三年,第一头母牛都还没长大,所以都是1f(1)=1f(2)=1f(3)=1
2021-12-06 14:03:25
2375
原创 Program type already present: com.x.x
最近调整项目架构的时候报了这个问题,原因是引用的包冲突了:A moudle引用了tts.jarB moudle引用了tts.jar,同时引用了A moudle解决方法:删除B moudle的tts.jar,然后把A引用tts的implementation改为api,然后把implementationA的地方也改成api,就可以实现没有编译错误,且没有引用重复...
2021-09-02 18:07:17
230
原创 Activity实现系统Dialog(系统级的悬浮窗)
1 创建一个style <style name="customDialog" parent="Theme.AppCompat.Light.Dialog"> <item name="windowNoTitle">true</item> <!--背景透明--> <item name="android:windowIsTranslucent">true</item> <
2021-07-23 16:14:09
2501
原创 自定义日志记录系统 UWP
自定义日志系统 UWP背景代码总结背景之前做了一个UWP的软件,和驱动要进行RPC通信。为了记录用户的操作以及方便定位是驱动的问题还是UWP的问题。我原本的单纯的使用写文件功能容易出现文件占用然后日志记录不全的问题,后面想了一下多线程的消费者生产者模式,有点类似这种模式写的日志,在0.1s写N多的情况下,没有漏记,没有崩溃,下面是代码代码public class WriteThread { static Queue<string> logStrQue = new Q
2020-07-20 09:57:25
388
原创 winform显示器适配(解决字体模糊,界面错乱,多屏适配)
最近做的一个软件,内部测试的时候有人把显示器放大了300%,导致界面空间重叠错乱了,之前在双屏幕运行的时候也有出现字体模糊的问题,就一起解决了。步骤如下:1. (我所有控件都包含到一个panel里面)将这个form设置缩放为取消缩放(或者像素缩放),并且子控件要么别设置,要么请一定将缩放模式和窗口的缩放模式相同:this.AutoScaleMode = AutoScaleMode.None;this.AutoScaleMode = AutoScaleMode.Dpi;2 设置字的单位是.
2020-05-29 15:36:08
2390
原创 记录一些w常用的命令(Windows cmd, linux, adb)
常用的bat命令背景windows普通bat命令字符串查找字符串截取其他简单命令附上我这次的卸载脚本,有删除自身文件夹,删除注册表,删除服务,卸载dll等ADB命令Linux命令背景最近这段时间工作中用了一些之前接触很少的Windows命令,所以写一个博客记录一下,有windows的纯bat命令,另外附加一点adb命令。windows普通bat命令字符串查找这个地方是直接借用一个网友的一...
2020-03-19 11:41:03
236
原创 记录一次大量数据导致页面ANR的解决(Greendao,RxJava)
记录一次大量数据导致页面ANR的解决问题开始解决办法问题开始最开始测试的时候只有几十条数据,无所谓。到了昨天测得时候导入了2000条,这两千条要下拉搜索,也可以输入搜索。界面差不多这样在主界面获取了这个下拉数据保存之后,再进入页面用Greendao取出去,甚至实时搜索。在滑动下拉的时候出现了数据不全,多输几次就卡死的情况。解决办法解决问题的时候,我在想,数据显示不全是什么原因。(找原...
2019-08-01 11:11:48
1005
原创 sublime Text在Windows环境下安装ctags插件
怕后续忘掉了,所以做个笔记下次安装。步骤如下:https://github.com/SublimeText/CTags 这个地址去clone插件,放到Sublime Text\Data\Packages下在网上找ctags.exe文件,配置环境变量第一步完成之后,首选项–>插件设置—>ctags—>把鼠标默认的那个文件复制一遍设置到鼠标用户那个文件里,然后在use...
2019-06-26 10:04:54
310
原创 技巧记录(个人笔记)
switch-case中的case用变量的时候,要给这个变量加上final,AS的提示不会告诉要用final修饰。对象引用,在某些情况下,建议复写实体类的clone方法,将浅复制改为深复制。(在香远中遇见)...
2019-06-24 10:11:33
140
原创 重构的经历
年初入职了一家公司,公司原本Android开发只有一个人,我去了算两个。刚开始,他给我介绍了一种目录结构,和后台用业务,模块分类类似,接触之后觉得太方便了,分享记录一下:包名模块包名MVP{View,Presenter}(接口类)ActivityPresenter重构原因这种愉悦的感觉并没有维持很久,当我和这位同事共同开发一个项目的时候,我进入项目的时候,他已经做了一段时间了(也许...
2019-06-17 15:02:15
144
原创 关于项目中的NFC使用的流程
关于项目中的NFC使用的流程第一次做NFC,主要是做一个记录。初始化的时候是这样:nfcUtils = new NfcUtils(this,getApplicationContext());------------------------------------------------------ /** * 构造函数,用于初始化nfc */ public N...
2019-03-09 14:15:32
1666
原创 赛码网股神算法解析
好久没做这种题目,有点忘了做的格式,然后就去看了下答案,结果有的是直接公式,我都不知道公式怎么算的。我个人用N的时间复杂度AC了,成就感还是有的。分析:这个题是有周期性的,每个周期也是定增加的,采用循环(第一天的股价已定,从第2天的时候开始循环),判断这一天是该增加还是该减少,然后得到第N天的股价,具体的操作步骤如下: 1. 股价初始价格为1,所以money初始化为1 2. 计算每个周...
2018-04-23 23:43:18
499
原创 sql索引原理及应用
我们都知道,I/O读取是很耗时间的。如果我们读更少的磁盘可以节省时间。关系数据库表中数据是按链表或是顺序结果进行存储的,如果我们把数据库每一行数据作一个数据块,我们要查找某个用户名为“XXX”的用户详细信息,要读取全部的块来查找。
2017-08-02 15:15:22
1036
原创 关于视图动画我的Bug(待解决)
1.用setAnimation(Animation)之后,在另外一个View,Start另外一个Animation会导致两个动画同时在两个View中播放。2.将一个Animation加到另外一个AnimationSet,第一次播放的时候,会导致AnimationSet和某个Animation一起在两个View中播放。大概是GIF文件那样。
2016-06-24 10:10:32
277
原创 Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE
今天下午打开Android studio,提示有更新,我表示觉得很不想更新(这习惯似乎不好,哈哈),然后我就点了Ignore……,到后面我新建Project之后是酱紫的:16:04:46 Gradle sync failed: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVER
2016-06-20 22:41:53
890
原创 手机号码,正则表达式的校验
移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188,178 联通:130、131、132、152、155、156、185、186,176 电信:133、153、180、189、177(1349卫通)
2016-04-16 09:08:03
580
原创 spring mvc + mybatis 整合框架
首先放进去一些包:下面还有几个包是用来使用json的,就可以直接返回字符串在网页上,如果不导入直接访问方法的话,会返回一个字符串名的jsp文件目录如下:接下来就是几个配置文件applicationContext-dao.xml<beans xmlns="http://www.springframework.org/schema/bea
2016-04-05 09:01:45
1580
1
原创 关于xml类型的背景文件的编写
现在我只会用shape来写,把要写的效果放中间,然后选择标签慢慢加入solid:背景颜色:例如:stroke:边框颜色:例如:padding:设置边距:例如:corners:设置圆角:例如:,android:topLeftRadius=""gradient:设置渐变,当solid也在时,谁在后谁起作用,angle用来设置渐变的方向:例如:
2016-03-02 20:30:26
399
原创 关于Git的学习
去年其实就已经在偶尔用下Git,但也没怎么放心上,今年因为一些原因越来越觉得Git很必要,特意学习下。首先是安装,以及命令行的使用:小猪总结好得我自己已经不知道说什么,引用下 小猪总结的
2016-02-19 10:43:22
290
原创 关于8位颜色的一两点理解
8位颜色值,前两位是指透明度,后6位是指颜色值,比如 ff000000 表示完全不透明的颜色值ff的10进制的值是255,后面是黑色,则前面这个颜色是指完全不透明的黑色下面是一些例子:半透明的黑色:7f 00000030%透明的黑色:4d 000000半透明的白色:30%透明的白色:4d ffffff
2016-01-23 15:51:05
2073
原创 工作总结
1.上周完成了音乐APP的界面优化2.网络下载音乐3.上上周帮同学完成了数学建模的代码,上周周一周二继续优化。4.改了项目的一两个bug。
2016-01-11 09:45:59
299
原创 录制音频和在手机系统中获取音频
这里有两种获取音频的方式:1.录音保存获取音频点击开始录音按钮之后的开始录音,设置录音的状态,已经设置stop按钮停止录音按钮可以点击 /* **************************************************************** * * 开始录音 */ private void startAudio() { // 创建录
2015-12-21 16:13:28
3164
2
原创 重启adb的命令行
首先进入目录时,先直接输盘符,不要每次都忘了然后 cd di(目录) 操作如下d:cd D:\Android\64\adt-bundle-windows-x86_64-20140624\sdk\platform-tools再输入杀死adb的命令adb kill-server然后再输入开启adb的命令:adb start-server出现successful就
2015-10-05 09:26:07
17757
原创 android 设置主页面的方式
<activity android:name=".MainActivity" android:label="@string/app_name" ><!-- package="com.example.myview" 尽量写成全部的目录,免得因为路径的原因导致出错 -->
2015-09-30 20:23:15
3220
原创 自定义控件
关于如何自定义一个控件,首先配置attr文件,在res-->value目录下 这是Java文件,继承自View类,paint一个控件,设置字,或者其他package com.example.myview;import android.content.Context;import android.content.r
2015-09-29 21:45:43
501
转载 设置没有标题的两种方式
1、java编码实现: requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);2、xml编码实现a
2015-09-28 10:18:06
380
react demo改造的五子棋.zip
2019-07-05
sql语句转为java的StringBuilder
2017-03-13
紧急医疗救护站设置问题 最短路径 覆盖城镇
2016-01-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人