- 博客(34)
- 收藏
- 关注
原创 Android:导入module报错Android resource linking failed
今日将A工程(调试无问题)生成module导入B工程时报错,如下:Android resource linking failedOutput: W/ResourceType(16200): For resource 0x0101053d, entry index(1341) is beyond type entryCount(1329)W/ResourceType(16200): For resource 0x0101053e, entry index(1342) is beyond type
2021-05-25 13:53:24
1681
3
原创 Window弹窗区域内外同时响应触摸事件的方法
需求如下:触摸Dialog弹窗以外的区域,本Dialog消失且不影响弹出以外的view控件响应触摸事件。实现方法:需要添加window的相应flag,并利用onTouchEvent回调执行Dialog的消失机制。实现代码://设置window属性(本例在onCreate函数中设置) //当对话框存在时亮屏,隐藏后系统重新计时设置屏保显示时间 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
2020-12-09 21:13:26
2259
4
原创 使用AudioTrack播放wav文件
近期使用AudioTrack播放wav文件的时候出现开头爆音的现象,分析后得知wav文件有个44或46字节的头数据,在使用AudioTrack播放写入数据时要把这个头数据去掉即可。源码实例如下: private static final int STREAM_TYPE = AudioManager.STREAM_MUSIC;//音频流类型 private static final int SAMPLERATE_HZ = 16000;//采样率 private static final...
2020-08-10 18:44:39
1234
原创 Android:Gradle5.4.1以上版本不能在AIDL中使用中文注释
最近在移植项目时遇到编译aidl文件报错,苦寻网络无果,最终排查出是由于aidl文件中使用了中文注释导致此类问题。报错形式如下: 新AS使用了Gradle5.4.1的版本,测试了5.6.4的Gradle也有同样的问题。个人经验,仅供参考,希望能帮到你。...
2020-06-02 10:05:08
971
2
原创 java.net.SocketException: setsockopt failed: ENODEV (No such device)
【异常背景】设备刚开机时进行了UDP组播相关的初始化工作。【原因分析】初始化socket时设备未连接路由导致组播地址没有add进路由。【解决办法】检测网络连接正常后再进行UDP初始化工作。...
2020-05-28 20:18:05
1986
原创 Linux:软链接动态库, ln -s命令
软链接又叫符号链接,可以将其视为文件的别名,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。软链接的目的是我们需要在不同的目录用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录放上该文件,然后在其它的 目录下链接(link)它就可以,不必重复的占用磁盘空间。 命令格式:ln -s [源文件或目录] [目标文件或目录] 命令解释:ln --- Linux命令 ...
2020-05-20 13:07:20
8784
原创 Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk
最近在使用NDK编译JNI接口时报错:D:\Android\Sdk\ndk-bundle\build\ndk-build.cmdD:/Android/Sdk/ndk-bundle/build//../build/core/add-application.mk:88: *** Android NDK: Aborting... . Stop.Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version an
2020-05-19 14:37:25
2115
原创 Android:使用NDK编译so调用时java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String
问题背景:使用NDK将c++源码编译成java可调用的jni接口(符合java ABI的.so动态库)后,调用c++实现的相应方法时报错,意思是未找到该方法。原因:使用javah将对应的java类生成.h文件后,为了简化文件名我对.h文件进行了修改,修改后直接复制.h文件生成.cpp文件并在该cpp文件中实现对应方法。但我复制完后未将对javah生成的.h文件的重定义检查删除,导致实现的cpp方法无效(因为实现的不是更改后的.h方法,而是javah实现的.h方法)。举个例子:1.对JniUtil
2020-05-18 15:00:08
1506
原创 Git:git clone时报错remote: HTTP Basic: Access denied fatal: Authentication failed for
原因:重置了密码或拉取代码时输错密码导致操作失败,但再次登录时未再弹出重新输入密码界面。解决方案:在git控制台输入以下命令,然后git clone 时在弹出的界面正确输入账户名和密码即可。git config --system --unset credential.helpergit config --global credential.helper store ...
2020-05-15 13:54:21
4211
原创 Android:获取屏幕(实际和可用)分辨率
通常,获取到的屏幕分辨率有两种需求,一种是屏幕的实际分辨率,另一种是受顶部或底部的虚拟导航栏占用产生的应用实际可用分辨率(相比实际分辨率减小了占用部分)。接下来代码示例下两种需求的获取方法:一、获取屏幕实际分辨率WindowManager windowManager = getWindow().getWindowManager();Point point = new Point();...
2020-05-06 17:03:28
11448
原创 VisualStudio:打开后卡顿
最近由于项目需要,我又重新拿起了VS进行C++编程,但是新装上VS后,时隔一段时间再次使用时,每次打开后都会马上卡上好几个小时才能正常操作。。。网上查了查,大家的建议不是修复就是重新安装,但我不想卸载重新安装(怕卸载不干净),而使用修复的办法依然不能用。 后来我发现,卡顿几个小时能使用时出现的第一个弹窗是番茄助手(Visual Assist)的过期界面。。。至此,隐约感觉是VA过...
2020-05-02 18:43:40
2402
原创 Android:收不到应用卸载、替换、安装等广播
最近做项目时需要监听应用的卸载、安装等广播,但一开始使用动态监听方式不能收到广播通知。最后查询相关资料发现,在监听此类动作前需要添加"package"对Intent数据方案进行匹配。 使用方法如下:IntentFilter filter_app = new IntentFilter();filter_app.addDataScheme("package");filter...
2020-05-02 18:30:32
4035
3
原创 Java:慎用Runtime.getRuntime().exec
根据Java JDK的解释,Runtime类封装了该应用程序运行时的环境,而通过getRuntime()方法,可获得当前程序与运行环境关联的对象,通过的对象则可利用Runtime封装的方法利用底层环境对当前程序进行操作。例如Runtime中的exec()方法,就可以实现应用程序调用Linux脚本语言进行相关操作。 例如,使用此方法删除某文件:Runtime.getRunti...
2020-05-02 18:17:02
2654
原创 Android:使用MediaPlayer 播放音频及android.media.MediaPlayer._setDataSource(Native Method)异常解决方法
使用MediaPlayer播放本地音频时报错:04-22 14:46:59.852 2996 3110 E AndroidRuntime: java.lang.IllegalStateException04-22 14:46:59.852 2996 3110 E AndroidRuntime: at android.media.MediaPlayer._setData...
2020-04-22 17:26:29
4182
原创 Android:使用getPackageManager.getLaunchIntentForPackage(packageName)获得intent启动Launcher应用
大家都知道,隐式启动应用时需要初始化Intent,除了通过Intent的构造函数,还可以使用如下方式: try { Intent intent = mContext.getPackageManager().getLaunchIntentForPackage(packagename); ...
2020-04-22 11:53:28
5569
1
原创 Android:根据指定Intent获取满足条件的Activity(AndroidManifest.xml)属性
有时我们想查询具有某action、category的Activity属性,可以使用PackageManager通过指定的Intent获得ResolveInfo,然后再通过ResolveInfo获得想要的对应信息。举个例子: 假设我想获得当前系统所有桌面应用的包名,则可以通过符合桌面应用的属性进行检索,代码示例如下: private List<String&g...
2020-04-22 11:10:33
1749
原创 Android:Glide加载图片及监听(包含禁用缓存方法)
利用Glide加载图片网络上有其他很多详细介绍,在这里简单说一下两个Glide版本不同加载过程及异常监听的写法。对于bitmap图片文件修正处理方法在我的另一篇博客有提到https://blog.youkuaiyun.com/Arise_Yang/article/details/105099573一、glide-3.7.0.jar 包 在gradle中添加glide-3.7.0.jar的依赖...
2020-04-17 13:49:12
2107
原创 Android:getIntent()方法注意
getIntent()方法在Activity中使用,获得启动当前活动时的Intent内容。 但使用的时候要注意,如果想每次启动Activity时使用此方法获得通过Intent传输的数据,要注意使用的启动模式。因为此时获得的Intent数据是在初始创建Activity时的赋值,如果使用standard启动模式则没有什么问题,但如果使用的是singleTask、singleTop等模...
2020-04-13 11:59:14
11956
3
原创 Android:去除系统自带标题栏
针对如何去除系统自带标题栏问题,现发现可通过代码动态实现或属性文件设置两种方式。一、代码实现 方法1:在初始化Activity时,在onCreate()内添加布局文件(setContentView(R.layout.main))前添加如下代码: requestWindowFeature(Window.FEATURE_NO_TITLE);(若继承自AppCompat...
2020-03-27 11:46:19
406
原创 Android:使用LayoutParams动态加载单个或多个控件
关于LayoutParams: LayoutParams相当于一个Layout的信息报,它保存了一个View的布局参数,比如高、宽、边距等信息。 使用getLayoutParams()方法可以获得控件的LayoutParams信息,例如:(1)获得ImageView控件的LayoutParams信息: ImageView imageView = new Ima...
2020-03-25 19:02:33
1178
原创 Android:解决TextView不能使文本两侧自动对齐的问题
问题背景: Android 自带的TextView由于标点符号、中英文等情况,导致文本行尾部有空格。解决方案: 先求出TextView的总宽度(假设为A)并读取文本,然后开始对需要展示的每行文本依次循环重绘。循环过程中,通过获得每行可展示文本文字的宽度总和(假设为B),然后计算出A-B之后的剩余空间,最后将剩余空间平均填补到每行各文字间隔中(数量为每行文字总数-1)。(...
2020-03-24 10:13:21
1121
原创 Java:捕获异常时printStackTrace()、toString()、getMessage()、getCause等方法的区别
今日有同事和我交流Java异常捕获时几种信息输出方法的区别,其实我感觉对于这种Java SDK中封装的方法,想弄明白最好的办法就是先看源码(解释都很详细到位),然后再自己写个测试用例看效果。不过既然今天有被问到,就一块写个博客简单供遇到此疑问的其他小伙伴分享下个人所知。首先贴一下测试代码,很简单,就是造了个空指针异常:输出信息如下:I/speech_MainActivit...
2020-03-21 16:06:25
2463
原创 Android:通过Service起Dialog发生android.view.WindowManager$BadTokenException异常
在制作一个置于所有应用前台悬浮Dialog是,我是通过service启动的自定义Dialog,但运行时报如下异常:AndroidRuntime: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an applicationAndroidRuntim...
2020-03-20 16:15:21
636
原创 Android:自定义Dialog尺寸失效问题解决经验
最近做项目时,当我把从一个1280*800分辨率的A平板上做好Demo后移植到另一个同样分辨率的B平板上时,UI(一个自定义的Dialog)尺寸和位置未生效,但在A平板上正常显示。 由于在A上的Dialog尺寸在布局文件中定义,我一开始以为是布局文件未生效,然后想着试试能不能通过用代码动态设定布局大小来解决这一问题,于是我尝试在Dialog创建时加入如下代码(但并没起作用。。。)...
2020-03-19 13:59:27
2762
原创 Android:项目引入module导致Duplicate class....或Program type already present okhttp3 OkUrlFactory
异常背景:为实现项目模块化设计,今天我在主项目中将我现在的某一模块以module形式导入,但导入后编译过程中出现异常,具体过程如下。1.首先报了类资源重复的问题,此问题是由于我的module中依赖的jar包(fastjson-1.2.54.jar)与主项目中依赖的类似jar包(或其他jar包中有引用类似jar包)。Duplicate class com.alibaba.fastjso...
2020-03-18 16:38:38
4379
1
原创 搭建AIDL时报错Process 'command 'D:\Android\Sdk\build-tools\29.0.0\aidl.exe'' finished with non-zero exit
编译时报错:ERROR: Process 'command 'D:\Android\Sdk\build-tools\29.0.0\aidl.exe'' finished with non-zero exit value -1073741819目前发现两种原因导致:1.sdk中的aidl.exe不兼容导致解决方式:可尝试使用最新buildToolsVersion,或切换本地其他版本试试。...
2019-09-12 15:40:22
5003
4
原创 TortoiseSVN:创建和使用本地仓管理代码|超简单
在学校的时候用过SVN建本地仓对实验室部分代码实现共享,几年过去了现在再用这个功能有些遗忘。。百度了下,感觉大家说的都好复杂啊,,,(不过也十分感谢能把经验分享出来的小伙伴)。接下来则是我的创建经验,很简单。。。前提:已安装SVN(https://tortoisesvn.net/downloads.html)且已有工程项目(即使没有,现建个空项目就可以。。),这里展示用的项目名为GetMa...
2019-08-14 11:04:50
1614
原创 Android:Log日志AS使用及Linux输出
Android Studio中对应如下几种Log方法:(1)Log.v(TAG,"打印那些最为琐碎的,意义最小的日志信息。对应级别verbose,是Android 日志里面级别最低的一种。");(2)Log.d(TAG,"打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比 verbose 高一级。");(3)Log.i(TAG,"打印一些比较重要的...
2019-08-12 17:17:09
895
转载 Android:进程、线程、环境变量相关函数
一、线程相关:(1)获取消耗的时间android.os.Process.getElapsedCpuTime();(2)获取该线程的IDandroid.os.Process.myTid();(3)获取指定ID的线程的优先级getThreadPriority(int tid);(4)设置当前线程的优先级setThreadPriority(int priority);(5)设置指...
2019-08-10 14:51:12
449
原创 Java:文件流read()、write()方法,数组大小含义
byte[] buffer = new byte[1024];int n = 0;while ((n = input.read(buffer)) != -1){ output.write(buffer,0,n);}解释下这段代码: 定义的buffer数组用来缓存通过input读入的数据,因此定义的buffer大小只是决定了一次传入缓存的字节数量(注意:是wh...
2019-08-08 12:21:01
2668
原创 Java:对象之间不能直接用“=”赋值
若已存在具有数据的对象A,现想通过A让对象B也获得同样的存储内容,不可以直接使用“=”进行赋值。两对象之间使用“=”是将引用所指地址进行赋值,而不是内存块的内容。比如两个集合之间的赋值:List list1 = new ArrayList();List list2 = new ArrayList();String url1 = "1";String url2 = "2";l...
2019-07-29 15:49:24
3068
原创 AndroidStudio3.4+ 导入旧版本moudle出现各种问题,禁用androidx
本人新入职校招生一枚,刚接触Android不久,昨天在用新版的AS3.4.1导入源码的时候出现各种问题(比如1.org.gradle.api.tasks.TaskExecutionException;2.appComponentFactory 错误;3.android.support.v4.app.NotificationCompat导入错误;4.类路径错误等等),和一位老员工一块...
2019-07-24 14:25:43
1040
原创 C++: Meshlab1.3.3源码+VS2010+QT4.8.4编译说明
为了学习其中的某些算法,在老师指导下最近编译了Meshlab的源码。为了实验室以后的师弟师妹们能顺利编译,老师让我写了个简要的《Meshlab源码编译说明》(不过这里面大部分内容也是整理的网友分享的经验),现在在这里也分享给大家,希望对遇到同样问题的朋友能有所帮助,共同提高。(注:相关内容版权归原始作者所有。) 目录 1软件环境 2编译过程 2.1修改文件 2.2编译 3注意事项 4 ...
2018-05-07 21:23:25
1556
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人