- 博客(205)
- 资源 (10)
- 收藏
- 关注
原创 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
3448
原创 录音时分离左右声道的数据
平台录音默认为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
1504
原创 如何打印被加密的PDF文件
背景:被加密的PDF文件,即使知道密码,也无法打印。(打印按钮被置灰)1.前提:得知道加密密码2.通过网址https://www.sodapdf.com/unlock-pdf/,可生成unlocked文件。3.转换后的文件可打印。
2022-01-21 19:58:42
4805
原创 UnderRun和OverRun
UnderRunpcm播放的场景,alsa中snd_pcm_write()返回–EPIPE,表示alsa取不到足够的数据;AudioTrack 写入数据的速度跟不上 AudioFlinger 读取数据的速度,使得 AudioFlinger 不能及时获取到预期的数据量,反映到现实的后果就是声音断续;这种情况的根本原因大多是应用程序不能及时写入数据或者缓冲区分配过小,AudioTrack 本身并没有错;AudioFlinger 针对这点做了容错处理:当发现 underrun 时,先陷入短时间的睡眠,不急着读
2021-12-18 14:50:37
2221
原创 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
458
原创 关于虚拟屏使用的权限问题
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
3411
原创 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
1271
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
4178
原创 Json判断Value是否为空或者含有某个指定的键值
void CTunerServer::set_mute(svcServiceRequest *req){ const Json::Value ¶m = 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
4147
原创 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
960
原创 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
2887
1
原创 Android输入法弹出时界面被挤压的问题
android:windowSoftInputModeActivity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。该属性的设置会影响两点内容:1.当 Activity 成为用户注意的焦点时,软键盘的状态为隐藏还是可见。2.对 Activity 主窗口所做的调整 — 是否将其尺寸调小,为软键盘腾出空间;或当软键盘遮盖部分窗口时,是否平移其内容以使当前焦点可见。值描述“stateUnspecified”不指定软键盘的状态(隐藏还是可见)。系统会选择合适的状态,或依赖主题中的设置
2020-12-30 11:26:58
2985
原创 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
863
原创 使用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
7364
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
943
1
原创 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
4492
原创 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
351
原创 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
285
原创 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
853
原创 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
682
原创 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
12119
2
原创 添加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
1229
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
919
原创 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
409
原创 线程池的封装和使用(二)
《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
371
原创 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
1558
原创 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
2655
2
原创 Android P系统广播使用规范
Android O系统之后,Android系统对于广播的使用进行了限制,目的是避免广播滥用造成系统资源短缺,内存抖动和耗电等问题。总之,大量的广播使用不仅耗电,还会影响系统性能。关于大量发送广播为啥会耗电,大量app注册了静态广播(Manifest注册),当系统发送一个广播时,会唤醒多个app,需要启动app去接收广播,但是没有足够的内存让所有的app进行在缓存中处理,即内存有限,启动一个app后又kill掉另一个app进程。系统会在各个app进程之间跳动。Android P的限制:1.警告信息:
2020-06-15 10:48:14
1137
原创 mk文件中配置lib arm64 文件夹
使用 android:sharedUserId="android.uid.system"后,有时候需要配置lib arm64 文件夹。$(shell mkdir -p (PRODUCTOUT)/system/app/(PRODUCT_OUT)/system/app/(PRODUCTOUT)/system/app/(LOCAL_PACKAGE_NAME)/lib/arm64)例如://...include $(BUILD_PREBUILT)include $(CLEAR_VARS)LOCAL_
2020-06-12 18:24:08
1416
原创 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
4257
原创 Android录音功能实现
实现录音功能:public class MainActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R...
2020-06-11 20:20:01
1517
原创 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
3305
原创 使用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
2741
原创 获取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
2924
原创 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
5611
原创 Android P的音频架构(三)音频焦点逻辑
一、申请音频焦点的简单用法private AudioManager mAudioManager;private AudioAttributes mNavAudioAttrib;mAudioManager = (AudioManager) mContext.getSystemService( Context.AUDIO_SERVICE );mNavAudioAttrib = new Au...
2020-04-23 19:34:29
1809
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人