![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
安卓开发
「已注销」
这个作者很懒,什么都没留下…
展开
-
记一次匪夷所思的AndroidStudio 报 Unable to detect adb version 错误的解决过程
起因:新电脑。准备装一个安卓开发环境进行开发。已经轻车熟路了。一切安装妥当。但是打开AndroidStudio时,创建项目,编辑代码完全没有问题,想连接手机调试时,发现设备列表没有手机,只显示了Loading Devices 的字样。EventLog 不停显示Unable to detect adb version 的字样。经过:网上搜索了半天,总共有几种说法:1 adb端口占用,查出占用的进程,杀掉开启adb2 platfrom-tools的adb.exe替换成 旧版本的3 安装其他版本原创 2021-05-23 19:03:31 · 1414 阅读 · 3 评论 -
如何轻松理解Android中的Surface概念
安卓开发中,涉及多媒体尤其是视频,经常会接触到一个概念Surface那么如何理解他呢。最简单的理解就是其实就是一块内存区域仅此而已。如果通过字面理解,好像是一个平面,但这个平面在哪里呢?写代码经常有这个感觉,Surface传来传去,生成销毁,甚至MediaRecorder进行内容录制的时候也能创建Surface ,Jni中也能看到surface的引用。但奇怪的是,经常在界面上却没有任何看得见的区域,说这个区域就是一个Surface。有人就会晕了,我咋看不见什么Surface啊!!!关键在这里,S原创 2021-01-22 19:29:55 · 1533 阅读 · 0 评论 -
安卓调用系统相机拍照 使用FileProvider.getUriForFile() 获取URI踩坑记录
1 配置文件中的 name path authority必须与代码中匹配 否则URI不会获取成功2 path以及文件必须判断是否存在否则要创建目录以及文件。不创建的话URI可以获取到,但是拍照返回后resultCode会为0导致不能拿到图片。...原创 2020-10-27 19:05:56 · 2839 阅读 · 0 评论 -
有限状态机机制介绍及在Android中应用的实例
上来可能有疑问什么是状态机?能干什么?第一次听说状态机 是从游戏开发技术中得来的。在游戏开发中,可以使用状态机控制npc的行为,控制角色在 站立,追踪敌人,攻击敌人,逃跑等状态进行切换。每一个状态都会执行该状态进行时执行的一系列操作。简而言之,就是控制对象状态的切换。用图示来表示一下这是一个游戏demo,注意敌人的各种行为敌人没有发现玩家时,呆立不动,这时,敌人可以说是处于 “空闲”...原创 2020-04-04 21:53:50 · 637 阅读 · 0 评论 -
与程序员相关的 android apk包安装时提示 “应用未安装” 的原因
情景:机器上已经安装了一个版本如果调用系统的安装流程,进行apk包的重新安装,即,安装apk是通过系统弹出如下弹窗安装apk。如果出现提示 “应用未安装”如图:莫慌,不一定是安装包损坏。用adb install命令进行安装,会提示这个错误可知,安装包的版本打包时比之前客户安装的版本还要低。那么,哪里设置这个版本信息呢在build.gradle文件中有如下配置android...原创 2020-01-19 10:43:03 · 4199 阅读 · 0 评论 -
架构感悟2
要清楚知道哪些代码要写在框架层哪些代码要写在业务层,需要写在业务层的大胆写在业务层并不是追求全部写在底层。原创 2019-12-13 11:46:45 · 112 阅读 · 0 评论 -
架构感悟
架构时,需要将代码分层三层,底层是基础的服务,比如硬件调用的抽象接口中间层是业务相关的地层调用,是实现了抽象接口的具体实现类,顶层是业务代码,调用中间层的实现的接口方法进行业务处理...原创 2019-12-03 16:57:08 · 131 阅读 · 0 评论 -
安卓 使用了databinding,打包开启混淆,需要额外处理吗
最近项目打包时开启了混淆,项目使用了databinding,担心相关的代码会被混淆影响。因为布局文件绑定了许多实体类,以及viewModel的引用。使用databinding可以安全地开启混淆。因为编译后,布局文件的类引用会被替换成tag标签。...原创 2019-04-10 16:40:51 · 2874 阅读 · 3 评论 -
ORMLite createOrUpdate 失败 无法保存记录的原因
Class class com.ygsoft.otbox.entity.sign.VisitorSignFeatureInfo does not have an id field因为数据库实体类没有id 这个字段原创 2019-06-19 10:44:10 · 680 阅读 · 0 评论 -
导入别人的Flutter工程后,Android项目中的java文件带有红色J标志,代码编辑时没有自动提示的解决方案
刚接触Flutter,github上下载了一个完整的Flutter项目来研究。例如以下的一个项目https://codeload.github.com/lijinshanmx/flutter_gank/zip/master在AS中找到工程目录打开,由于Flutter版本不同等原因,编译报错,根据提示配置就好就行,就不说了。最终配置好后,发现在Android视图下,看不到java代码,类似下...原创 2019-07-04 13:32:17 · 4978 阅读 · 5 评论 -
Android WorkManager使用的坑
使用流程1 应用启动时,网络请求获取用户信息2 获取成功,调用WorkerManager的enqueue传入自定义的Wroker启动任务3 在任务的doWrok中调用用户信息类中的方法进行操作出现的问题:当设备重启后,闪退,报空指针异常。异常位置是在doWrok()方法体中。通过打log打印执行时间发现,设备重启时,doWrok就会执行,在获取用户信息之前导致userInfo为空...原创 2019-07-01 10:11:56 · 3882 阅读 · 1 评论 -
各历史版本NDK下载地址
https://developer.android.google.cn/ndk/downloads/older_releases.html原创 2019-08-14 00:53:36 · 909 阅读 · 0 评论 -
windows 编译 x264 报错 No working C compiler found 处理方法
编译过程就不说了,网上好多都是可以的。注意两点1 如果出现如题的错误,很可能是编译脚本前几行配置的NDK 路径 和 工具链路径不对比如我的是这样的NDK=D:/ndk/android-ndk-r15cPLATFORM=$NDK/platforms/android-19/arch-armTOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9...原创 2019-08-20 14:35:53 · 5345 阅读 · 0 评论 -
databinding 结合RecyclerView 适配器带来的坑 不显示数据
有一个Recyclerview item布局的显示使用了databindingitem布局类似这样<?xml version="1.0" encoding="utf-8"?><layout> <data> <variable name="name" type="String...原创 2019-09-04 10:18:32 · 1652 阅读 · 0 评论 -
Android SounPool 播放声音音量大小不稳定的问题
今天使用SoundPool,已经设置了定值,发现声音时大时小。后面发现如下解决方法:初始化时,使用STREAM_MUSIC这个参数来初始化。SoundPool sp = new SoundPool(1,AudioManager.STREAM_MUSIC,0);即第二个参数选择AudioManager.STREAM_MUSIC来初始化。不会造成上述情况。...原创 2019-02-02 11:56:40 · 1567 阅读 · 0 评论 -
安卓 ImageView使用 drawable下资源 闪退的解决方法
最近开发时,使用了最简单的Imageview,想将背景(或者src属性)设置为drawable下的某个资源。 然而在一台安卓4.4的机器上运行时闪退,报错 android.view.InflateException: Binary XML file line #0: Error inflating class ImageView奇了怪了,这么简单的布局都能报错。费了好大劲,有的说版本兼容性的问题(原创 2017-11-30 10:43:01 · 4092 阅读 · 0 评论 -
Andorid 动态权限获取注意事项
结论: 申请动态权限时,仍需要在Manifests.xml文件下声明静态权限。今天app功能需要调取摄像机。写了请求权限的代码如下 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GR原创 2018-01-16 11:14:18 · 368 阅读 · 0 评论 -
安卓布局 Binary XML file line #0 神秘报错深坑
今天在写一个简单的不能再简单的页面布局,运行总是报错。开始以为用的哪个控件声明有问题。找了良久。并没有结果。一毛钱难倒富豪。后来发现,布局文件的当做分割线来用的View元素,写成了view(小写)<view android:id="@+id/line" app:layout_constraintTop_toBottomOf="@id/tv_skill1" a原创 2018-01-10 16:27:17 · 7079 阅读 · 0 评论 -
AndroidStudio lambda表达式 展开
新版AS 支持lambda表示。用的最多的是设置监听时,使用匿名内部类,可以表示成lambda。btn.setOnClickListener( new View.OnClickListene(){ @override onClick(View v){ };});可以表示成btn.setOnClickListener(view -&gt;{});但...原创 2018-05-22 14:52:19 · 2134 阅读 · 0 评论 -
Java OOP
1 对于接口(Interface)的理解初入java世界的时候,看到 interface 就眼烦,感觉只有里面只有方法体的这个文件有啥用啊,打开看,发现看了了等于白看。研究了javaSDK源码,AndroidSDK源码后,现在对它有了直观的理解。 认为最重要的功能是,它说明了一种 “能力”。例如Runnable这个接口,命名就直观地表现了实现了它的类是具有 能放到线程中执行的这个能力...原创 2018-07-08 14:42:45 · 159 阅读 · 0 评论 -
安卓小部件(App Widget) "加载小部件时出现问题" 的原因
今天做了个小部件,模拟器打开,添加到桌面时,无法显示。 后来看了下谷歌文档,小部件根布局支持类型有限。当时外层用的ConstraintLayout 所以无法加载。小部件的布局文件支持如下布局: FrameLayout LinearLayout RelativeLayout GridLayout以及如下控件 AnalogClock Button Chronometer...原创 2018-07-17 14:18:27 · 5826 阅读 · 1 评论 -
Android view笔记
1 View 的事件分发机制–TouchEvent从顶层传递到底层: 顶层指的是ViewGroup(LinearLayout之类),底层指的是各种需要点击的控件(button,textview之类)。但viewGroup中的child数组-数组中元素是同层的,高标号的是最子层(视觉上,布局文件上顺序)的view,也就是说底层的是ViewGroup,顶层的是控件。viewgroup没有o...原创 2018-07-06 10:14:22 · 763 阅读 · 0 评论 -
Android基础笔记
一 Activity启动模式: 1 默认情况下Activity都会进入返回栈。 2 返回栈的顺序是永远不会变的。 3 返回栈和任务(Task)是两个不同的东西。 4 一个任务是多个Activity的集合(可理解为set 无序)。 5 返回栈是某个任务的Activity的返回顺序组成的栈。 6 启动模式为singleTask的Activity启动时,如果不在任务的返回栈的顶部,则 返回...原创 2018-07-06 10:14:50 · 159 阅读 · 0 评论 -
AndroidStudio使用预编译FFmpeg库结合ndk开发视频项目踩坑记录
现状: 1 已有预编译好的libffmpeg.so和ffmpeg头文件。 2 libffmpeg.so对应armeabi的abi。 3 已有对ffmpeg方法调用的C++代码。需求 在AndroidStudio上集成进上述代码实现jni功能。项目结构: C源码在cpp目录。include下是ffmpeg的头文件,以及功能代码的头文件。剩下的是实现功能的C++代码。...原创 2018-08-07 13:06:00 · 888 阅读 · 0 评论 -
Android朝花夕拾-介绍Bimap
这篇文章来介绍下安卓中操作图片的Api: BitmapBitmap的本质:位图,即用一些位存储图片数据的一种数据类型。首先,我们用画笔画了一个48*48的图片,保存成bmp格式。这里windows画笔只有四种位图格式可选,我们选24位位图。查看这个文件的属性,发现大小为 6966 byte。...原创 2018-10-07 19:15:38 · 276 阅读 · 0 评论 -
关于Android8.0 静态注册广播 行为变更的说明。
Andorid 8.0 对广播的使用做了变更。当广播接收器使用静态注册方式使用时,除了一些例外,这个接收器接收不到隐式广播。 注意这个“隐式”是重点。看了网上几篇文章,对这个变更理解有误。错误的理解是:8.0后,广播接收器使用静态注册,是无法使用的。实时并非如此。先看一个例子:首先,定义一个简单的广播接收器:public class MyReceiver extends Broadc...原创 2018-10-24 12:33:11 · 3019 阅读 · 1 评论 -
Android 调试 ADB 找不到设备,设备不显示,设备管理器ADBInterface 显示黄色感叹号终极处理方法
Android 调试 ADB 找不到设备,设备不显示,设备管理器ADBInterface 显示黄色感叹号终极处理方法最近公司新机器插真机调试,每一台手机都无法识别,设备管理器显示ADBInterface黄色感叹号。有些手机自带驱动,装上就好,有些设备找不到驱动。最后发现一个终极解决方法,下载一个360手机助手,然后插上手机,就会自动下载驱动。下载完删掉360手机助手就行了。卸磨杀驴...原创 2018-11-16 15:39:12 · 10423 阅读 · 8 评论 -
Android Service,AlarmManager组合实现定时任务踩的坑
做项目时遇到一个场景:app需要定时访问后台,感知获取登录用户有没有最新的消息。我采用了定义一个Service,在onStartCommand()方法中请求后台获取最新消息,接着创建一个AlarmManager来延时发送广播,再定义一个广播接收器,接收到一个广播后,接收器触发startService( ),这时service的onStartCommand再次被触发...代码如下:..原创 2017-08-28 11:37:15 · 3879 阅读 · 0 评论