自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(203)
  • 资源 (10)
  • 收藏
  • 关注

原创 QNX修改目录权限

qnx文件权限

2022-04-01 10:31:45 1566

原创 NFS报错问题解决

将服务器B(10.75.50.120)的目录挂载到服务器A上。sudo mount -t nfs 10.75.50.120:/opt/share/gaojing/snapdragon-auto-gen3-hqx-1-2-1_hlos_dev_qnx /home/gaojing/workspace/qnx_nfs/报错:mount.nfs: access denied by server while mounting 10.75.50.120:/opt/share/gaojing检查权限: su

2022-03-31 20:06:52 2730

原创 录音时分离左右声道的数据

平台录音默认为8通道数据,保存到文件中取左右声道数据。/*** 当mic=1时,取左声道数据* 当mic=2时,取右声道数据***/ private byte[] splitStereoPcm(byte[] data) { int monoLength = data.length / 16; byte[] pcmData = new byte[monoLength*2]; for (int i = 0; i < monoLength;

2022-02-16 15:09:15 1148

原创 I2S简介

I2S

2022-01-24 10:46:20 2453

原创 如何打印被加密的PDF文件

背景:被加密的PDF文件,即使知道密码,也无法打印。(打印按钮被置灰)1.前提:得知道加密密码2.通过网址https://www.sodapdf.com/unlock-pdf/,可生成unlocked文件。3.转换后的文件可打印。

2022-01-21 19:58:42 3616

原创 UnderRun和OverRun

UnderRunpcm播放的场景,alsa中snd_pcm_write()返回–EPIPE,表示alsa取不到足够的数据;AudioTrack 写入数据的速度跟不上 AudioFlinger 读取数据的速度,使得 AudioFlinger 不能及时获取到预期的数据量,反映到现实的后果就是声音断续;这种情况的根本原因大多是应用程序不能及时写入数据或者缓冲区分配过小,AudioTrack 本身并没有错;AudioFlinger 针对这点做了容错处理:当发现 underrun 时,先陷入短时间的睡眠,不急着读

2021-12-18 14:50:37 1472

原创 wav文件解析

参考资料:https://www.cnblogs.com/guojun-junguo/p/10129548.htmlhttp://www.topherlee.com/software/pcm-tut-wavformat.htmlhttp://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Samples.htmlhttps://datatracker.ietf.org/doc/html/draft-ema-vpim-wav-00.txthttp

2021-08-31 15:27:50 333

原创 关于虚拟屏使用的权限问题

Android P系统支持虚拟屏显示,在虚拟屏中显示应用的画面。但是相应的,在虚拟屏中去显示应用画面涉及到跨进程和权限的问题。参考资料:https://source.android.com/devices/tech/display/multi_display/activity-launch1·将页面现在在虚拟屏中的方法Activity 启动行为由应用 AndroidManifest.xml 文件中的启动模式、Intent 标志以及调用方提供的 ActivityOptions 定义。使用 Activi

2021-06-07 17:18:35 2586

原创 Android AudioService安全音量设置逻辑

问题点描述:还原出厂设置后,第一次启动安卓系统会自动降音量设成10,导致开机时音量不一致问题。原因:安全音量逻辑将音量设置为10安全音量配置和音量值\frameworks\base\core\res\res\values\config.xml <!-- Safe headphone volume index. When music stream volume is below this index the SPL on headphone output is compliant

2021-06-07 15:25:25 1047 1

原创 快速统计SVN代码提交行数

使用java工具:satasvn.jar工具下载地址:https://sourceforge.net/projects/statsvn/前提条件:1.java环境2.svn安装时勾选了“命令行功能”并安装。关于第二个前提条件,一般用户在安装svn软件时,并没有勾选“命令行功能”,所以无法使用svn命令。这种情况下,可以在控制面板–程序–程序和功能–TortoiseSVN 1.11.1.28492(64 bit)中右键选择更改,并继续安装,安装过程中选上“命令行功能”,如下图所示:使用方法:

2021-05-15 16:58:29 3540

原创 Json判断Value是否为空或者含有某个指定的键值

void CTunerServer::set_mute(svcServiceRequest *req){ const Json::Value &param = req->getParam(); int rv = 0; bool muteStatus = GET_JSON_VAL_UINT(param, "status"); //是否含有键值"status" if( !param.isMember("status") ){ DINFOP("se

2021-05-04 18:52:04 3600

原创 C++不同类型变量运算规则总结

不同类型变量运算规则。1.无符号和有符号int类型之间运算规则规则1:带符号数与不带符号数向运算,带符号数将优先转成不带符号数。#include <stdint.h>#include <stdio.h>int main(void){ uint32_t cnt; int16_t level; float result; result = a / b; printf("a / b = %f\r\n", result); re

2021-04-15 15:47:53 826

原创 C++多继承下不同基类的同名函数使用记录

在C++中,同时继承两个基类,但是两个基类中存在同名的函数。导致调用基类同名函数时造成了冲突,编译报错。解决方法需要明确指定使用的是那个基类的函数。代码示例:class A: public svcServer<A>, public svcClient<A>{ A(); ~A();}class svcServer{public: void connect(); void disconnect();}class svcClient{public: vo

2021-04-15 14:38:43 2393 1

原创 Android输入法弹出时界面被挤压的问题

android:windowSoftInputModeActivity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。该属性的设置会影响两点内容:1.当 Activity 成为用户注意的焦点时,软键盘的状态为隐藏还是可见。2.对 Activity 主窗口所做的调整 — 是否将其尺寸调小,为软键盘腾出空间;或当软键盘遮盖部分窗口时,是否平移其内容以使当前焦点可见。值描述“stateUnspecified”不指定软键盘的状态(隐藏还是可见)。系统会选择合适的状态,或依赖主题中的设置

2020-12-30 11:26:58 2382

原创 Android P中判断网卡接口是否存在

参考文章:https://docs.oracle.com/cd/E19620-01/805-4041/6j3r8iu2l/index.htmlhttps://www.gnu.org/software/libc/manual/html_node/Communication-Styles.html#define NET_NAME "vnet0"int check_nic() { struct ifreq ifr; int skfd = socket(AF_INET, SOCK_D

2020-12-18 15:42:53 689

原创 使用repo和git上传代码的两种方式

repo1、确认本地分支//查看当前目录下的本地分支repo branch2、如果没有本地分支,需要新建本地分支//给当前目录新建一个名字叫做sunxiaolin_bt的本地分支repo start sunxiaolin_bt //给所有目录新建一个名字叫做sunxiaolin_bt的本地分支 repo start sunxiaolin_bt --all3、修改代码提交后,上传代码 //上传代码到远程分支 repo uploadgit1、确认本地分支//查看当前的本地分

2020-12-17 16:41:45 5222 1

原创 ip命令和ip-wrapper-1.0用法

参考资料:https://ss64.com/bash/ip.html1、ip命令用法 ip link show vnet0 显示网卡vnet0网络接口配置信息 ip link show 显示所有网卡网络接口配置信息 ip link show up 只显示激活状态(running)下的网络接口信息。同命令(ip link ls up)2、Android中ip-wrapper-1.0的用法ip-wrapper-1.0的功能同ip命令功能。安卓将网络堆栈工具(ip、iptables、ip

2020-12-16 11:14:24 727

原创 ifconfig网络配置信息解析

ifconfig命令:查看激活状态的网络接口情况。wlan0 Link encap:Ethernet HWaddr 2c:4c:c6:b4:11:d3 Driver bcmsdh_sdmmc inet addr:10.75.100.69 Bcast:10.75.100.255 Mask:255.255.255.0 inet6 addr: fe80::2e4c:c6ff:feb4:11d3/64 Scope: Link UP BR

2020-12-16 11:00:08 2956

原创 Android P系统服务接口调用原理

1、调用系统服务方式通过以下方式获取StorageManager的实例对象,通过StorageManager调用系统存储服务。StorageManager是系统存储服务的接口。getVolumes()可返回系统上可用卷的集合,例如USB设备。StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);List<VolumeInfo> volInfoL

2020-12-04 16:21:08 264

原创 Android P注册系统服务

以HsaeAudioManager为例,底层服务提供API给应用层使用.1、定义AIDL接口\vendor\hsae\frameworks\base\core\java\com\hsae\audio\IHsaeAudioManager.aidl// IHsaeAudioManager.aidlpackage com.hsae.audio;// Declare any non-default types here with import statementsimport com.hsae.aud

2020-12-03 20:25:24 207

原创 Android P给tombstone,crash,anr添加序列号和CPU信息

1、system\core\logcat\logcatd.rcadd:on property:persist.vendor.logcpu.enable=true start logcpuon property:persist.vendor.logcpu.enable=false stop logcpu setprop persist.vendor.logcpu.enable ""on property:persist.vendor.logcpu.once.enable=t

2020-12-02 11:23:49 618

原创 Android P系统启动时间优化

1、services/core/java/com/android/server/policy/PhoneWindowManager.java @Override public boolean canDismissBootAnimation() { /*synchronized (mLock) { return mKeyguardDrawComplete; }*/ return true; }2、service

2020-12-01 17:59:53 561

原创 Android adb命令设置和获取系统音量

1、查看audio的全部信息(各音频流音量,焦点,策略等) dumpsys audio2、设置音量并且显示音量UI //stream 3表示多媒体,10表示音量值 media volume --show --stream 3 --set 103、音量调大调小 media volume --stream 3 --adj raise media volume --stream 0 --adj lower media volume --show --stream 3 --adj raise

2020-09-28 10:25:45 10055 1

原创 添加Selinux权限

遇到一个selinux权限报错问题。报错信息如下:2037-12-25 00:36:12.244 2362-2362/? E/SELinux: avc: denied { find } for service=media.metrics pid=3713 uid=1002 scontext=u:r:bluetooth:s0 tcontext=u:object_r:mediametrics_service:s0 tclass=service_manager permissive=0发现system/

2020-08-26 19:41:04 1058 2

原创 监听CPU和内存占用率脚本

监听cpu占用率和内存使用率,监听GPU占用率。内存占用率打印保存在文件cpumem中CPU占用率打印保存在文件cputop中GOU占用率打印保存在文件gputop中set PATH=%cd%;%PATH%;@echo offadb root::adb remountset startstr = "**********************"set endstr = "**********************"set date = "datetime:":starte

2020-08-01 14:45:34 819

原创 Android反射的简单使用

通过反射方法调用DemoData中的私有方法。DemoData.javapublic class DemoData { private int id; private String name; private String title; private int getId() { return id; } private void setId(int id) { this.id = id; } priv

2020-07-13 11:11:12 333

原创 线程池的封装和使用(二)

《Android线程池简介和基本应用》PriorityThreadFactory.javaimport java.util.concurrent.ThreadFactory;class PriorityThreadFactory implements ThreadFactory { private final int mThreadPriority; public PriorityThreadFactory(int threadPriority) { mThread

2020-07-01 19:29:51 312

原创 Android P按键静音流程

今天跟了一下Android系统按键静音的流程,Android实现了在系统层面静音。输出给底层的音量为0db。按键使用注入按键方式实现,静音按键值:public static final int KEYCODE_VOLUME_MUTE = 164;注入方式:KeyEvent k = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_VOLUME_MUTE);InputManager.getInstance().injectInputEve

2020-06-23 15:33:08 1317

原创 Android P签名机制和系统权限

系统中签名Key:mediaplatformsharedtestkey签名Key存放的路径为build\target\product\security:media.pk8和media.x509.pemplatform.pk8和platform.x509.pemshared.pk8和shared.x509.pemtestkey.pk8和testkey.x509.pem该目录下的verity*文件:verity.pk8,用于签署boot.img和system.img的私钥ver

2020-06-15 15:40:59 2445 2

原创 Android P系统广播使用规范

Android O系统之后,Android系统对于广播的使用进行了限制,目的是避免广播滥用造成系统资源短缺,内存抖动和耗电等问题。总之,大量的广播使用不仅耗电,还会影响系统性能。关于大量发送广播为啥会耗电,大量app注册了静态广播(Manifest注册),当系统发送一个广播时,会唤醒多个app,需要启动app去接收广播,但是没有足够的内存让所有的app进行在缓存中处理,即内存有限,启动一个app后又kill掉另一个app进程。系统会在各个app进程之间跳动。Android P的限制:1.警告信息:

2020-06-15 10:48:14 983

原创 mk文件中配置lib arm64 文件夹

使用 android:sharedUserId="android.uid.system"后,有时候需要配置lib arm64 文件夹。$(shell mkdir -p (PRODUCTOUT)/system/app/(PRODUCT_OUT)/system/app/(PRODUCTO​UT)/system/app/(LOCAL_PACKAGE_NAME)/lib/arm64)例如://...include $(BUILD_PREBUILT)include $(CLEAR_VARS)LOCAL_

2020-06-12 18:24:08 1262

原创 NXP蓝牙电话ECNR算法简介

ECNR,Echo Cancellation and Noise Reduction,回音消除和降噪回声,来自于多个扬声器的回声,会让蓝牙通话能以理解。噪声,来自内部和外部的噪音让蓝牙通话很难理解和让人听懂。噪声主要来源:空调风扇噪音,车胎产生的道路噪音,发动机噪音,窗户的风声,乘客的噪音,排气声。回声产生的原因:远端手机端在讲话时,下行声音经过蓝牙模块输入给DSP(ADC_IN or Async I2S0,1,2_IN通路可以用于蓝牙模块输入给DSP),DSP将下行声音再输出给扬声器(DAC01

2020-06-11 20:33:53 3192

原创 Android录音功能实现

实现录音功能:public class MainActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R...

2020-06-11 20:20:01 1453

原创 I2C和SPI简介

I2CI2C,Inter-Integrated Circuit,内部集成电路I2C总线由数据线SDA和时钟信号SCL构成串行总线。适用于简单性和低成本比速度更为重要的外围设备,其传输速率并不高。I2C线序:SDA(串行数据线),I2C总线的数据信号线;SCL(串行时钟线),时钟信号线。VCC,电压,典型电压为+5V或+3.3VGND,接地传送速率标准模式:100Kbps快速模式:400Kbps高速模式:3.4MbpsI2C工作原理I2C总线在传送数据过程中共有三种类型信号,

2020-06-10 16:18:36 3042

原创 使用Android Parcelable code generator自动生成Parcelable代码

在使用Parcelable对数据进行序列化时,有一些代码是固定的,可以使用插件来自动生成。在Android Studio–>Settings–>Plugins,搜索Parcelable,安装Android Parcelable code generator插件。安装完成后,重启Android Studio;编写java文件,实现Parcelable接口;右键–>Generate–>Parcelable,或者直接 Alt + Insert,Parcelable,就可以直接生成P

2020-05-21 16:12:46 2170

原创 获取U盘路径和读取U盘文件

1.只有系统应用才有权限读写U盘文件2.使用StorageVolume,通过反射的方式获取U盘的绝对路径,系统应用不需要反射//AudioDatabase.java//数据库操作/**A helper class that manages all operations relating to the database. This class should notbe accessed directly. Instead, {@link AudioStorage} interfaces d

2020-05-21 16:02:13 2695

原创 Android Java InputStream和File相互转化

读取一个文件的数据流。 File file = new File(path); InputStream is = new FileInputStream(path); FileOutputStream fos = new FileOutputStream(databaseFilename); byte[] buffer = new byte[8192]; int count = 0;

2020-05-13 20:49:16 5175

原创 Android P的音频架构(三)音频焦点逻辑

一、申请音频焦点的简单用法private AudioManager mAudioManager;private AudioAttributes mNavAudioAttrib;mAudioManager = (AudioManager) mContext.getSystemService( Context.AUDIO_SERVICE );mNavAudioAttrib = new Au...

2020-04-23 19:34:29 1717

原创 利用源生Launcher开发定制Home

1.将所有的com.android.launcher3修改为com.demo.launcherlinux环境下可以批量修改,命令如下:sed -i “s/com.android.launcher3/com.demo.launcher/g” grep com.android.launcher3 -rl /Launcher32.新建Android Studio工程,新建library,将Laun...

2020-04-14 16:41:43 579

原创 Linux sed命令批量替换字符串

命令如下:sed -i "s/oldStr/newStr/g" `grep oldStr -rl Folder`注意 grep的字段有个字符 : `如果漏掉这个字符会报错。含义:在文件夹Folder中,搜索所有文件的oldStr,并替换成newStr...

2020-04-08 11:31:08 282

wav文件转char数组和简易播放.7z

播放依赖库,主要测试wav文件解析

2021-09-07

AudioTrack.java

使用AudioTrack进行播放时,将音频数据保存下来,保存为pcm格式,可以用于分析音频文件是否有问题。

2020-03-19

MarkMark图片编辑.7z

一个用于处理图片的小工具,主要用于图片处理和编辑,包括测量,颜色,文字等基本功能。 用于UI中一些简单的图片处理,用起来很方便。

2019-09-23

framebuffer_test.c

打开/dev/graphics/fb0设备,绘制图形显示。在android系统中编译。测试正常。

2019-09-10

自定义View的流程和步骤.pdf

android开发,自定义View实现,安卓开发中动画效果要做的好,必须掌握自定义View的开发。 总结自定义View的原理,和实现流程。

2019-09-01

MVC与MVP与MVVM.pdf

Android开发,MVC MVP和MVVM设计模式实现,以及他们的优缺点总结。

2019-09-01

Andorid For OpenCV的环境搭建.pdf

OpenCV 是一个基于 BSD 许可(开源)发行的跨平台计算机视觉库,可用于做图片,视频处理

2019-09-01

Android基于Glide的二次封装.pdf

Glide 轻量级 实现图片应用 用 Glide 完成一个完整的图片加载功能 图片缓存功能

2019-09-01

关于安卓设计中的一些优化问题

设计更好的安卓程序;让你的程序更加流畅;安卓程序设计中的一些基本原则问题。

2018-06-19

基于dbus的QT进程间通信机制的实现与优化

Qdebus

2016-10-11

空空如也

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

TA关注的人

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