android
文章平均质量分 61
XellossRyan
次元宅
展开
-
使用Gson 2.8.9版本发生的编译期间问题
android旧项目升级Gson版本到2.8.9以后,编译期间出现了以下问题:java.lang.RuntimeException at org.objectweb.asm.ClassVisitor.visitModule(ClassVisitor.java:148) at org.objectweb.asm.ClassReader.readModule(ClassReader.java:731) at org.objectweb.asm.ClassReader.accept(Cl原创 2021-12-30 09:06:55 · 1288 阅读 · 3 评论 -
WebView使用loadUrl和loadData的区别造成的问题
在使用WebView时我们比较熟悉的加载html的两个方法,一个是loadUrl,另一个是loadData,这两个方法的函数签名分别是:public void loadUrl(String url) public void loadData(String data, String mimeType, String encoding) 这两个WebView函数由于加载时loadData方法实现存在一些问题,它无法支持一些特殊的标点符号进行判断处理,其实现和loadUrl差别巨大,因此会有一些很奇怪的问原创 2021-12-26 09:46:53 · 3196 阅读 · 0 评论 -
如何让Kotlin类成员具备动态访问性
问题对于Kotlin的默认的类对象来说,一个数据类访问成员的方法仍然是传统的点运算符来访问成员变量。例如以下类定义:class LegacyUser(){ var name: String? = null var age: Int? = null}或者//数据类data class LegacyUser(var name: String, var age: Int)我们访问时仍然只能按域成员访问方式去访问 val legacyUser = LegacyUser() p原创 2021-12-09 17:36:46 · 724 阅读 · 0 评论 -
Android OpenGL ES 知识总览2——坐标系
坐标变换在3D坐标空间中,用于表示图形的数据一定包含位置信息(x,y,z)(x,y,z)(x,y,z),但是除此之外,还要有一个量用于标定用户视角与被观测物体的距离关系,用户视角由成为摄像机Camera,因此需要增加一个维度取名叫www,那么着色器的坐标gl_Position就会多增加一个量成为一个四维向量(x,y,z,w)(x,y,z,w)(x,y,z,w)。 这套OpenGL的坐标系统被称为归一化设备坐标。既然www分量定义了视角关系,那么它相当于定义了一个距离空间,这个空间要求(x,y,z)(x,y原创 2021-11-09 12:27:35 · 2914 阅读 · 0 评论 -
Android OpenGL ES 知识总览1
OpenGL ES是在Android, iOS等移动平台上使用的3D图形绘制引擎,其本身是一套API标准,khronos组织负责这套API的设计规范,具体实现交由硬件厂商、模拟器厂商与操作系统厂商来完成,只要求符合其API标准的要求,就可以在不同的硬件上使用相同的API来达到平台一致的显示要求。着色器(Shaders)什么是着色器?着色器就是OpenGL用于指定界面绘制元素的一系列属性和方法的一种控制屏幕上的像素的程序,这个程序运行在不同厂商的GPU处理器或者模拟处理程序中,它控制着每个像素的颜色、位原创 2021-11-06 17:22:10 · 2168 阅读 · 0 评论 -
Jetpack支持库CameraX使用入门——相机预览
概览CameraX是一个Jetpack支持库,用来帮助开发者简化相机应用的开发和适配工作,它将一系列旧的Camera和新的Camera2的相机API进行统一适配,将两套设计迥异的相机API进行适配设计,并且作为androidX并作为Jetpack的一部分再发布,用来简化开发者开发相机功能时的大量重复适配的工作。最低可以适配到API Level 21。由于加入到了Jetpack组件当中,它也增加了一部分功能用来绑定到LifecycleOwner等API来适配到生命周期接口的能力,使得开发者无需再重复编写生原创 2021-11-01 22:17:48 · 1610 阅读 · 0 评论 -
为红米2 redmi 2 (wt88047) 编译Lineage 15.1时遇到供应商文件缺失
在Lineage 官网上下载Lineage OS 15.1 源码后,通过breakfast wt88047切换到设备下,下一步使用brunch wt88047命令开始完全构建时出现文件缺失。编译Lineage 15.1时遇到供应商vendor文件缺失ninja: no work to do.[1/2] glob device/*/*/Android.bpninja: no work to do.Environment variable BUILD_NUMBER was modified (763原创 2021-09-22 14:17:29 · 853 阅读 · 0 评论 -
ViewFlow嵌套在ViewPager事件冲突的解决
最近看上了网易新闻的主页模式,于是乎,我就照着做了。其实本质就是ViewPager嵌入多个listview左右滑动,然后在每个ListView顶部加上一个小的ViewPager去自动滚动展示图片。于是乎,我想到了用ViewFlow、但是理想很丰满,现实很骨感。嵌套进来以后就发现,左右滑动的事件处理发生了冲突。无论如何左右滑动,生效的总是最外层的ViewPager,而不是内层的Vie原创 2013-08-15 10:09:45 · 2397 阅读 · 3 评论 -
Android 11/12 前台服务启动限制
Android 12 系统下的应用程序将不会在后台服务状态下启动前台服务。不过有几种情况可以例外,如果不满足例外的情况下,当应用从后台服务要启动一个前台服务,系统就会抛出一个IllegalStateException异常。关于前台服务对于应用在后台启动的服务在android 11或更高的版本中,如果你的应用从后台服务启动了一个前台服务,那么服务会有以下的访问限制:1、除非用户给你的应用允许了ACCESS_BACKGROUND_LOCATION 权限,否则服务不可以访问定位;..翻译 2021-03-08 17:03:21 · 3699 阅读 · 1 评论 -
AndroidStudio 4.1项目升级Gradle 6.5遇到的一个找不到符号VERSION_CODE错误
问题现象:在工作中给项目升级gradle构建版本,执行打包操作时,发现出现所有模块中都出现了找不到符号错误。错误: 找不到符号 return BuildConfig.VERSION_CODE; ^ 符号: 变量 VERSION_CODE 位置: 类 BuildConfig问题背景:这是因为gradle plugin 升级6.5版本以后在build.gradle需要手动指定VersionName, VersionCode原创 2020-12-17 11:21:57 · 2398 阅读 · 2 评论 -
Google新Material风格控件的一个小坑
谷歌新出的控件com.google.android.material.circularreveal.cardview.CircularRevealCardView ,自带Ripple效果非常实用绚丽,但是在使用时,如果作为RecyclerView的条目,就必须作为Item的根View,否则涟漪效果会失效。...原创 2020-05-14 13:15:37 · 968 阅读 · 2 评论 -
Gradle代理设置的一点小问题
在5.x以前的gradle版本中,代理端口的设置是在项目目录下的gradle.properties文件中设置如下内容:systemProp.http.proxyHost=127.0.0.1systemProp.http.proxyPort=8001systemProp.https.proxyHost=127.0.0.1systemProp.https.proxyPort=8001...原创 2020-02-21 11:12:31 · 460 阅读 · 0 评论 -
一个简单的查看NDK错误堆栈方法
ndk-satck 位于NDK目录下。运行方法:$SDK_PATH/adb logcat | $NDK_PATH/ndk-stack -sym 你的工程.so文件目录此方法可以持续在输出流中显示C/C++报错堆栈,要比AS中attach debugger效率高很多,也不用单步调试一点点寻找错误行数。...原创 2019-10-15 14:37:12 · 649 阅读 · 0 评论 -
Android Timer遇到的问题
Android Timer遇到一个奇怪问题,当我调用了一次Timer.cancel()以后,再次schedule会无效,即便new Timer()也一样。原创 2019-06-21 16:15:27 · 572 阅读 · 0 评论 -
Android 上使用OpenCV为图片加入Blur(模糊)效果
- OpenCV:3.4.3当处理图片时我们需要为图片添加模糊玻璃效果于是,我们在搭建好的OpenCV项目中,使用如下代码为内存卡下的10000.jpg添加模糊效果后保存为10001.jpg,并且显示在ImageView上。 //初始化OpenCV OpenCVLoader.initDebug(); //读入图片 Mat ...原创 2018-11-21 15:16:15 · 620 阅读 · 0 评论 -
Android Studio 3.2.1 导入OpenCV 3.4.3搭建记录
OpenCV是一款Intel主导开发的计算机视觉库,凭着C++优良的性能、丰富的算法在码农界深受好评,它的功能往低了说可以通过矩阵的方式(线性算法)对图片进行一些处理,比如颜色、形变等等各种仿射变换,往大了说它可以做机器视觉学习,它自带DNN(深度神经网络)、SVM(支持向量机)、Boost等等机器学习算法,可以做文字、图形等分类和识别等较为复杂的需求,得到了业界广泛好评。由于之前有一点关于图像...原创 2018-11-20 15:53:02 · 1960 阅读 · 0 评论 -
Crosswalk遇到的坑几则
由于兼容性需求,我们在应用内加入了CrossWalk的XWalkView作为我们使用的WebView。现在XWalkView的官方Intel开发人员不再对XWalk进行维护了,但是该WebView仍然非常流行,而且还存在着不少这样那样的问题,以下记录了CrossWalk中的一些坑。 1、与百度地图集成后,so貌似存在加载冲突,会造成应用的FC;2、getScrollX()和getScr...原创 2018-09-28 14:00:25 · 793 阅读 · 0 评论 -
手机客户端上通过自定义协议方式跳转外部链接遇到的问题
http://elevenbeans.github.io/2016/08/18/URL-Scheme-%E5%94%A4%E8%B5%B7%E9%97%AE%E9%A2%98%E8%B8%A9%E5%9D%91/ https://developer.chrome.com/multidevice/android/intents 有空再填原创 2018-08-27 14:56:30 · 382 阅读 · 0 评论 -
AlertDialog使用EditText的坑一则
在AlertDialog中,使用EditText做临时输入,快捷方便。但是点击PositiveButton使Dialog消失不是自己能控制的,所以在Dialog消失时候,键盘无法消失。所以需要通过获取Button重新设置alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener的方式(前提是再Builder的时候,bu...原创 2018-06-20 18:02:43 · 721 阅读 · 0 评论 -
用ViewPager+RadioButton替代Tabhost做滑动页面
以前在网上找到过Tabhost+RadioButton 组合成为五个可切换的页面,类似新浪微博和QQ 4.0.2. 后来开发过程中发现Tabhost 越来越不受待见,纷纷希望找替代品。我看了下,ViewPager可以完美的替代Tabhost,因为除了切换5个页面之外还可以滑动页面,用户体验甚是不错,所以我把网上以前的一个例子改了改,改成ViewPager+Fragment+RadioButtt原创 2013-06-30 17:17:39 · 2070 阅读 · 1 评论 -
如何一句话实例化ArrayList
我愿意创建列表的选项,用来测试东西。我正在做:ArrayList places = new ArrayList();places.add("Buenos Aires");places.add("Córdoba");places.add("La Plata");我重构代码做:ArrayList places = new ArrayLi转载 2013-07-01 16:21:36 · 2924 阅读 · 0 评论 -
ZXing 为Android应用生成二维码
有的应用需要将一段字符串加密为一个二维码,我们可以用一个现成的开源框架来帮我们搞定二维码,这个框架就是Google 自家的Zxing它已经封装好了对一维码、二维码的编码和解码的功能。如何使用Zxing将一个字符串转换为二维码位图呢?我们来看以下代码: static Bitmap encodeAsBitmap(String contents, BarcodeFormat fo转载 2013-07-01 16:39:28 · 1226 阅读 · 0 评论 -
更高效的加载大图片
更高效的加载位图图像能够体现各种的形状和大小。在许多情况下,它们是都会大于一个典型要求的应用程序的用户界面(UI)。例如,显示照片的系统应用程序Gallery使用了你的Android设备的相机,而它通常比屏幕分辨率比你的设备的屏幕密度更高。鉴于你的内存有限,我们可以比较理想的只让内存加载较低分辨率的版本。低分辨率版本应与显示它的UI组件的大小相符合。一个高分辨率的图像不提供任何可显示的翻译 2013-06-30 17:45:10 · 844 阅读 · 3 评论 -
Http协议中最基本的四种提交方式的超轻量级简单实现
import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import org.apache.http.HttpResponse;import org.apache.ht原创 2013-12-05 09:36:57 · 1044 阅读 · 0 评论 -
初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。
前言:今天好歹手痒痒想开始动手学习编写游戏,编写游戏必定少不了游戏框架,于是乎我盯上了cocos2d-x,再于是乎我就下载了cocos2d-x。我下载的是最新版的cocos2d-x-2.2.1版。这个版本跟以前地 版本不一样,主目录下已经不再提供创建android工程目录的sh文件和bat文件,照着以前运行批处理的方法已经不再好用了。本文目的:旨在导入一个cocos2d-x中的原创 2013-12-28 19:53:56 · 1404 阅读 · 0 评论 -
cygwin解决Eclipse不输出控制台和找不到头文件问题
1.7版本和Eclipse的问题Eclipse是一款比较出名的IDE,功能强大,可以用来做C\C++开发。Eclipse开发C\C++,需要用到CDT插件,就可以利用Cygwin开发一些linux移植windows的开发,或者交叉编译(微软的VC编译器不提供此功能)。如今比较火爆的Android NDK开发,如果在windows平台下就必须使用Cygwin。而且CDT插件使用注册表发现Cy转载 2014-04-14 11:55:25 · 1949 阅读 · 0 评论 -
为Android项目搭建GitLab-CI持续构建服务(ANT非Gradle,可不看)
这两天腾出时间来折腾一下Linux系统,甚是欢喜,原创 2014-08-29 15:54:29 · 5292 阅读 · 3 评论 -
Android Studio在使用NDK时出现的莫名其妙的问题
这几天在鼓捣串口通讯和音频压缩,需要用到NDK进行编译。 本来是在Eclipse上开发的,后来觉得Android Studio不错然后就转到Android Studio上了。 当我高兴的把Eclipse中串口通讯的示例项目导入到Android Studio当中,编译一下,出了一个很莫名其妙的问题: 我本以为是我build.gradle中的配置出问题了。我去检查了build.grad原创 2015-04-23 09:55:46 · 1093 阅读 · 0 评论 -
Android Data Binding 数据绑定技术导读
这篇文档会解释如何使用数据绑定库来为应用程序的逻辑和布局编写声明式布局和最小化必需的胶水代码。数据绑定库提供了灵活性和广泛的兼容性——他是一个支持库,因此你可以使用最低到Android 2.1平台(API 级别7以上)上。翻译 2015-06-03 23:17:03 · 2235 阅读 · 0 评论 -
技巧-如何在android项目中将布局文件存放在不同目录中
今天来聊聊关于将Android应用程序的布局文件的存放,因为开发过程中发现有时候在同一个文件夹中存放了太多布局文件会造成很多麻烦。如果你的项目有超过30个布局,想要查找一个布局文件会让很头疼。这个问题的解决方案就是将它们分散在不同的文件夹中,gradle给我们提供了这项便利,可以将布局文件夹映射到多个文件夹当中,比如分成“activity layouts”, “fragment layouts翻译 2015-11-11 21:40:44 · 10608 阅读 · 0 评论 -
ijkplayer设置rtmp秒开
ijkplayer和ffplay在打开rtmp串流视频时,大多数都会遇到5~10秒的延迟,在ffplay播放时,如果加上-fflags nobuffer可以缩短播放的rtmp视频延迟在1s内,而在ijkVideoView中加入IjkMediaPlayer ijkMediaPlayer = null;ijkMediaPlayer = new IjkMediaPlayer();ijkMedia原创 2017-03-24 12:03:08 · 12785 阅读 · 7 评论 -
使用VLC-Android写一个简单的电视直播demo
使用VLC-Android写一个简单的电视直播demo近两年每天各种新的“干货”出来,可以说真的是百花齐放百家争鸣,每天也有各种各样不同的文章在简书和各大平台上崭露头角。而我就比较吃亏了,写文章容易词穷,文字功底一般,对于技术性的文字,也就记录记录流水账,再加上我本来就没有什么技术功底和学术功底,写不出什么干货文来,所以距离上一次写博客文章已经过去很久很久以前的事情了。前一阵子我买了一个电视盒子,所原创 2017-03-15 13:14:34 · 12606 阅读 · 19 评论 -
Android项目升级Gradle构建工具版本时的坑
在Android项目中,Gradle 工具版本从3.3升级到4.4时,除了要更改对应的classpath 'com.android.tools.build:gradle:3.1.1'构建脚本插件的版本以外,如果项目中曾经存在导入的矢量图,那么需要重新加回android.defaultConfig.vectorDrawables.useSupportLibrary = true另外,使用了Annot...原创 2018-05-08 17:38:28 · 627 阅读 · 0 评论 -
Android Apk发布时需要注意的事项
我们在开发Android App时,会签名打包Apk,然后上传到市场。在这个过程中,必然会有一些值得留意的安全性问题来让我们避免自己的App里的关键信息泄露。1、API安全性现在不管是XX云还是XX云,都提供了443端口以及免费证书的签发,即便没有使用他们的证书,也可以使用Let's Encrypt来为我们签发一个域名对应的数字证书,作为TLS加密用证书,因此我们可以方便的升级接口为HTT...原创 2018-05-24 09:55:49 · 390 阅读 · 0 评论 -
[转]八款开源 Android 游戏引擎
八款开源 Android 游戏引擎1、AngleAngle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现,缺陷在于文档不足,而且下载的代码中仅仅包含有少量的示例教程。最低运行环境要求不详。项目地址:http://code.google.com/p/angle/转载 2013-06-30 16:55:23 · 597 阅读 · 0 评论