android
文章平均质量分 63
android_cai_niao
我是一名Android开发工程师,但我的技术好菜,好希望有人出一些容易看得懂的菜鸟教程。
展开
-
判断是否连接了wifi(坑、坑、坑)
如上方法,当wifi是连接的情况下,它就像是个粘性广播,一调用register函数就会立马收到回调,但是如果wifi是未连接的情况下,调用register函数时不会收到回调,所以这点不是很好,感觉像是Android官方Bug,你推荐我们用这种方式,但是当wifi未连接时,调用register函数确实收不到回调通知。所以,如果要监听wifi连接、断开的事件,可以使用这个注册回调的方式,如果要主动获取,则还是使用前一种方式,或者使用判断是否有ip的方式。是 sim卡的,并不是 wifi的。原创 2024-07-19 19:06:34 · 307 阅读 · 0 评论 -
Android音频焦点
在某些情况下,多个音频流可以同时播放,但只有一个是用户真正会听的(专注于),而另一个在后台播放。一个例子是,在播放音乐时,会播报行车路线,而音乐的音量会降低(又称为闪避)。函数的作用:当一个应用程序请求音频焦点时,系统会通知其他正在播放音频的应用程序让出音频焦点。根据请求的类型和当前的音频焦点状态,其他应用程序可能会降低音量、暂停播放或完全停止播放音频。注:上面音频焦点API使用的是新出的API,在API 26才出的,也有过时的API可用,但是不推荐。,此时播放器应该暂停,通话结束后,调用。原创 2024-05-29 17:02:28 · 588 阅读 · 1 评论 -
Android11热点启动和关闭
Android官方关于在的类中有一套系统 API 可以控制热点的开和关,代码如下:对于和stopSoftAp这些API都被@SystemApi注解所标注,所以我们无法直接调用,只能通过反射来调用,而且这些API需要一个权限,这个权限需要系统签名的应用才可以使用,权限如下:builder忘记哪个API是30才出的了,所以做了一个版本上的判断,Android R为Android 11版本。对于启动热点,可用中的,或者中,其中,的只负责启动或关闭热点,对于热点名称密码等的一些配置要用的函数。原创 2024-05-23 09:04:54 · 1759 阅读 · 0 评论 -
Android内存不足的监测
是 Android 中的一个接口,用于接收内存相关的回调。它主要用于检测应用的内存使用情况,并在系统内存不足时释放不必要的资源。实现这个接口可以帮助应用在内存紧张时更好地管理资源。接口,应用可以在不同的内存紧张级别下做出响应,释放不必要的资源,从而改善应用的性能和用户体验。以下是一个 Kotlin 示例代码,展示如何在。原创 2024-05-14 17:39:32 · 502 阅读 · 0 评论 -
一个长期后台运行的服务
这个权限在Android 9.0的时候才出的,所以,如果目标版本低于9.0版本的话,可以不用声明前台服务权限,而且前台服务在很早的版本就已经有了,但那时不需要权限的。原创 2024-05-14 17:09:09 · 279 阅读 · 0 评论 -
Android App开机启动
【代码】Android App开机启动。原创 2024-05-11 15:55:57 · 1079 阅读 · 0 评论 -
音频播放&录音&回声消除
如果录到的声音即听不清自己话说也听不清播放的声音,则你再把这个声音做回声消除,肯定也消不好,因为原始音频就已经很差了,回声消除肯定也无法把音频变清晰的!音乐类型的声音大小范围为0 ~ 15,而通话类型为1 ~ 7,所以音乐类型的声音大小在调整时可以比较细腻,过渡比较平滑,比如从小最按到最大需要按15次音量加,而通话类型的话,从最小按到最大只需要按6次,所以它的过渡是没这么平滑的,所以相当的音量值,它们代表的声音大小是不一样的,这也是为什么通话类型的音量大小1比音乐类型大小1的声音要大声的原因。原创 2024-04-26 16:47:51 · 1199 阅读 · 0 评论 -
Cannot access ‘androidx.activity.FullyDrawnReporterOwner‘
本来原来一直都好好的,不知道哪天起新建的就报错了,经过排查,发现把。原创 2024-04-15 10:53:06 · 630 阅读 · 0 评论 -
信号值解读
是一种表示功率的单位,用于测量无线传输网络中信号的强度,它表示以毫瓦为基准的功率值的对数比。请注意,这些值是一般性的指导,实际的信号强度受到许多因素的影响,包括但不限于距离基站的远近、障碍物的阻挡、信号干扰等。-60 dBm 表示非常强的信号,-120 dBm 表示非常弱的信号。但是需要注意的是,这些值的具体范围和意义可能会因为不同的通信技术、设备和环境而有所不同,因此在实际应用中,需要根据具体的情况进行解释和判断。-50 dBm 表示非常强的信号,-100 dBm 表示非常弱的信号。的值越大,信号越好。原创 2024-04-12 16:16:09 · 1584 阅读 · 0 评论 -
手机重启手app没了
是一个在 Android 设备上执行的命令,它用于将文件系统中的缓冲数据写入到磁盘中。在 Android 中,文件系统通常使用缓冲机制来提高性能,但是这也意味着数据不会立即写入到磁盘上,而是在系统认为合适的时候进行写入。发现公司有些Android球机设备,安装了一些app,重启后app没了,还有公司的一些Android手机,原来是没问题的,不知道哪天起,只要重启,新安装的软件就会没了,很神奇。后来发现,在安装app后可以执行。命令可以强制将所有缓冲数据立即写入磁盘,以确保数据的持久性和一致性。原创 2024-04-12 09:38:14 · 788 阅读 · 0 评论 -
GPS坐标转换为百度地图坐标并显示到百度地图上
坐标转百度地图的坐标,它还有其它的坐标系转换,比如腾讯地图坐标转百度地图坐标,百度地图坐标转腾讯地图坐标等。输入的格式为,先输入经度,然后是英文的逗号,然后是纬度。如上图,有示例请示url,需要注意的是,对于。参数,我们要填2,表示。原创 2024-04-03 16:11:33 · 1745 阅读 · 0 评论 -
应用图标不更新
在公司采购的一台手机上发现应用图标修改之后有问题。如上图,除了桌面上的图标,其它地方看到的图标都是显示的第一次安装时的图标,我尝试卸载了重装,问题依旧,重启手机再装,问题依旧,然后我把手机恢复出厂设置再装,问题解决!所以是手机的Bug,坑爹!如上图,这个是桌面图标,已经是更新了的,没问题。原创 2024-03-20 15:11:15 · 240 阅读 · 0 评论 -
Android弹出通知
来电话时,它默认是使用这个对应的频道来发送通知的,然后判断如果这个频道被用户关闭了的话再用来电通知的那个频道来发消息,而且有提到,如果用户关闭了服务通知频道,然后再打开的话,则这个频道原先是。为不同的使用场景创建不同的频道是个比较好的做法,以方便用户有更细的选择,比如,我觉得电话比较重要,我就可以打开 “Linphone 来电通知” 这个渠道中的悬浮窗权限,其它频道的全都关闭。我发现微信的3个频道中,有两个频道的 “悬浮通知权限” 是开的,有一个是关闭的,这是什么API控制的呢?了,这也是一个细节点。原创 2024-03-18 18:17:56 · 2100 阅读 · 0 评论 -
测试WebView的文件上传
但是这个方式呢,就只能是从文件管理器中选择,不会使用设备实时捕获的,而且多选也是没有的,只有单选。创建的文件选择器效果不是很理想,所以要想实现比较好的文件选择效果的话需要自己去实现了,但是比较麻烦,所以可以使用一些第三方的库,比如。不过公司项目没有要求那么细,我也就懒得去找更好的实现,将就着用吧。这里加了一段js,用于把选择的图片展示出来。标签中的属性来测试Android上的文件选择效果。就表示多选,不需要赋值,不写这个就是单选,而且也是没有多选的,不管你是否设置了。经测试好像也一样,只要写了它,则。原创 2024-03-11 16:37:23 · 584 阅读 · 0 评论 -
修改Android打包apk的名字和目录
我们公司的apk在上传到公司服务器时,除了上传apk外,还需要填写apk的相关信息,比如包名、版本号这些,同时它也允许通过上传一个配置文件来指定这些信息,像这结信息上每次打包每次要修改也是挺烦人的,都说Gradle可以完成自动化的事情,于是让Gradle帮我生成一个不就行了吗,实现这个很简单,在之前的复制重命令任务中添加生成配置文件的。这样,我就完成了以公司要求的名字去命名apk,同时我使用文件夹名称来保留了apk的版本信息。的脚本语言了,那肯定是要追随官方的脚本啊,于是想把上面的配置翻译成。原创 2024-03-07 16:24:30 · 2984 阅读 · 1 评论 -
Android开发相关工具有哪些
官方推荐的 Android 开发集成开发环境(IDE),提供了丰富的功能和工具,如代码编辑器、调试器、布局编辑器等。:Facebook 开发的 Android 调试工具,提供了丰富的调试功能和实用的工具,如数据库查看器、网络监控器等。:第三方的 Android 模拟器,提供了更快速和更强大的模拟体验,适用于开发和测试应用程序。:用于网络调试和抓包分析的代理工具,可以捕获和分析 Android 应用程序的网络请求和响应。:Android 调试桥,用于与 Android 设备通信并执行各种调试和测试操作。原创 2024-03-06 11:22:20 · 462 阅读 · 0 评论 -
Android全屏黑边解决方案
在Android12以上的手机,设置全屏后屏幕底部有黑边或者白边,有的屏幕顶部有黑边。这里把主题应用到了application,则所有的界面都会全屏,也可单独把主题设置到需要全屏的Activity上。原创 2024-02-28 09:24:17 · 1484 阅读 · 0 评论 -
查看Android中正在运行的程序包名
要想知道正在运行程序是什么,可以先把程序退出,然后在Logcat中过滤消息包含displayed。原创 2024-02-26 10:58:58 · 438 阅读 · 0 评论 -
使用HiveMQ实现Android MQTT
即有提供MQTT的服务器端,也有提供客户端,而且官方都给他跳转了,那我就用它的库来实现吧!使用了之后才发现,这个库是真的好用啊,封装的非常好,代码写起来特别简洁,响应式编程,支持异步,可以使用Java自带的,也可以使用RxJava或Reactor,HiveMQ的断线自动重连做的也比较好。,这是Eclipse的一个Android MQTT客户端实现库,但是我发现这个库在运行到高版本的手机上时报错了,这个库也是N年没有更新的了,所以找了新的库。官网的时候,发现关于MQTT的很多介绍是链接到了。原创 2024-02-23 17:46:39 · 1607 阅读 · 1 评论 -
监听sim卡的插入与拨出
所以,这种方式适合判断单卡的设备是否插入了sim卡,如果是双卡设备,你就无法判断是否插入了双卡,因为当你注册的时候它只接收一条卡的广播信息,此时你拨卡再插卡的时候才会收到两张卡的广播信息。这是一个粘性广播,一注册就会立马收到广播,返回的结果中SLOT_INDEX为1,索引是从0开始的,说明这是返回的卡2的信息。,但它是系统API,我们无法直接调用,所以只能直接使用它的值。两张卡已经插入的情况下,此时再注册广播只会收到卡2的一条广播,ss为。可以看到,收到的是卡2的信息。就是无卡,其它状态就是有卡。原创 2024-01-24 15:25:45 · 1369 阅读 · 0 评论 -
动态权限有哪些
定位权限:相机权限:存储权限:电话权限:联系人权限:短信权限:日历权限:传感器权限:另外,找到一个官方分组的,说分了9组,文章是在Material Design中的:https://m2.material.io/design/platform-guidance/android-permissions.html另外看到一篇国外的文章,系统有API查询某一个权限它属于哪一个组,或者查询它在这个组中的所有权限有哪些:https://yggr.medium.com/exploring-android-12-perm原创 2024-01-23 18:02:57 · 464 阅读 · 0 评论 -
恶心的小米无法获取READ_PHONE_STATE权限
小米手机上获取READ_PHONE_STATE权限原创 2024-01-23 10:50:50 · 1081 阅读 · 0 评论 -
用logcat命令来查看日志
其它的等有时间再来完善,现在好忙!原创 2023-12-21 17:58:16 · 532 阅读 · 0 评论 -
Android获取Wifi网关
公司有这样一个应用场景:有一台球机设备,是Android系统的,它不像手机,它没有触摸屏幕,所以我们对球机的操作很不方便,于是我们搞这样一个设置:点击球机电源键5次分享出一个热点,然后我们用手机连接上这个热点,这样手机和球机就有了连接,我们想通过手机来修改球机的设置,这需要在球机上运行一个Web服务器,以便提供一些API接口来让手机访问,访问不同的API修改不同的设置。如上代码可以获取到连接的wifi的路由ip地址,它和wifi的网关是一样的,通过该ip地址,手机就能访问到球机。原创 2023-12-11 17:40:06 · 538 阅读 · 0 评论 -
通过adb命令查看当前界面的Activity
从上图可以看到当前正在运行app的进程名称和当前显示的Activity完整路径类名。1、先进入shell。原创 2023-12-01 15:55:22 · 861 阅读 · 0 评论 -
获取Android签名文件的MD5和SHA1指纹
如上图,我们有两个变体,一个是debug版本,一个是release版本,两个变体都用了相同的签名文件,正常情况下debug版本要用debug的签名,release版本要用release的签名,应该分开的,但是因为我的应用需要使用系统签名,所以就算是debug版本也需要系统签名,不能使用Android Studio自带的那个默认的debug签名,否则应用中需要系统签名的Api就调用不了,一调用就会崩掉,所以可以配置成都用同一个签名配置即可。原创 2023-10-24 16:49:44 · 364 阅读 · 0 评论 -
ViewConfiguration
包含 UI 中用于超时、大小和距离的标准常量的方法。原创 2023-10-07 17:34:01 · 121 阅读 · 0 评论 -
没有BuildConfig
刚刚发现,新创建的一个Android项目,成功运行到手机上了,然后在代码中想使用一下这个类,发现没有,按以前的经验,项目刚创建时是不存在的,但是一但成功运行到手机上后就肯定是已经自动生成了的,但是这次是真没有这个类,如果在代码中不理会报错直接使用,运行将会失败,会提示找不到这个类。几经周折,发现是在(简称AGP 8.0)版本的时候发生了改变,运行AGP 8.0需要JDK 17,这里我们顺便把AGP 8.0的其他功能也一起记录一下,这里只记录了其中一部分主要功能,完整的还请查看官网。原创 2023-07-04 10:09:26 · 1973 阅读 · 0 评论 -
android复制与粘贴
这时可以看到两个位置都显示出复制的内容了,且都是明文显示。在我的小米11 pro (Android 13)上运行时,无论输入法有无显示,点 “copy” 按钮时均无复制提示,相同的是,如果输入法显示时在输入法上也会显示出复制的内容,且无论是否设置为密文都是明文显示的。按钮会复制第一个输入框中的文本,点击。界面中有两个输入框,点击。原创 2023-06-29 09:00:11 · 1189 阅读 · 0 评论 -
Android模拟器无法启动
在Android 13版本上,关于“复制”有了新的变化,但是我在我的小米手机(也是Android 13版本的)上测试没有看到对应的变化,所以想运行一个Android 13的模拟器来测试看看,结果死活运行不起来,一直卡在开机画面: “Pixel is starting…我安装发现安装不上,卸载也说卸载失败,我以为是bios里面的那个虚拟的什么开关没打开,但是检查bios已经是打开了的。如上图,那个进度条也是不动的了,就一直卡住,等多久都没用,如果此时我调整模拟器窗口大小的话,则模拟器会变黑屏。原创 2023-06-28 17:21:04 · 1401 阅读 · 0 评论 -
Sending non-protected broadcast
这样就看不见那该死的红色异常了。目录下,而且我也无法修改系统源码。看似就没法解决这个报红色异常的问题了。但是也没有解决我的问题,我这个应用为了升级方便,没有把app往到。其实简单点,不要那么完美了,眼不见为净,在日志过滤器中过滤即可(可以看到,把不需要的过滤掉,系统应用(清单文件添加了。原创 2023-05-30 17:08:21 · 1547 阅读 · 0 评论 -
NIO之ByteBuffer
前言ByteBuffer,顾名思义,它表示字节缓冲区。一般我们在代码中使用字节的时候一般用字节数组,即byte[],但是使byte[]的方式效率不高,而使用ByteBuffer的方式来操作数组效率是比较高的,具体描述可以查看jdk文档声明,可以查看ByteBuffer类,以及它的父类Buffer的文档声明,可以详细的了解它们的功能,它们是nio包下面的,nio就是native io,所以效率是比较高的。ByteBuffer除了效率高之外,也提供了一些比较好用的方法,比如writeInt、getInt、pu原创 2023-04-28 11:38:34 · 1066 阅读 · 0 评论 -
Android 11 中的权限更新
Android 11 使用户能够为位置、麦克风和摄像头指定更精细的权限。此外,系统会重置针对 Android 11 或更高版本的未使用应用程序的权限,如果应用程序使用系统警报窗口或读取与电话号码相关的信息,则可能需要更新它们声明的权限。原创 2023-02-20 15:57:29 · 1266 阅读 · 0 评论 -
常用权限汇总
【代码】常用权限汇总。原创 2023-02-17 09:14:56 · 2131 阅读 · 0 评论 -
Android Studio新版本Logcat使用
官网:,注:一定要选择英文版查看,不要使用中文版。也可以点击Logcat的右上角的问号图标跳转到一个网页说明,如下:实际跳转到的网址为:https://developer.android.com/studio/preview/features?utm_source=android-studio-2022-1-1&utm_medium=studio-assistant-preview#logcat新版的Logcat确实比旧版的好用,感觉学起来吧!原创 2022-12-07 10:26:07 · 502 阅读 · 0 评论 -
关于NDK
在目前ndk的最新版本中有4个,用搜索结果如下:可以看到,大小最小的有4M多。对于库,官方介绍在此,摘取一些片段如下:接下来我们来验证一下最后一句话:使用Android Studio的向导创建一个,自动创建的文件如下:然后运行到模拟器,然后执行:构建 > Analyze Apk…,然后选择我们的进行分析,如下:如上图所示,产生的大小为114.5KB。这里我们看不到,这是因为构建工具默认使用进行编译的,也就是说会把用到的中的相关内容编译到中,注意,只是编译用到的相关内容而已,这也是为什么只有114.原创 2022-12-06 16:34:20 · 2493 阅读 · 0 评论 -
Android Studio 中文插件
是由修改而来的,所以的中文插件也适用于,如果装上中文插件有问题,则可卸载中文插件,据我个人经验,用了这么多个版本的中文插件了,还没出过问题。的版本更新时,中文插件就会失效,需要到官网下载对应版本的中文插件。比如,我们查看的版本如下:可以看到版本为,这个版本与的版本是对应的,一般来说的最新版本会是的旧版本,因为是先出的,然后公司或者公司才为开发相应的版本,这个开发可是要花好多时间的,所以的最新版本无法与的最新版本保持一致。插件官网:https://plugins.jetbrains.com/,打开插件官网,原创 2022-12-05 17:10:40 · 9463 阅读 · 3 评论 -
android8.0中的bug
上即可解决问题,不需要禁用焦点。的文件夹,并产生一个一样的布局文件,只是在。原创 2022-12-02 17:29:36 · 446 阅读 · 0 评论 -
查询运行在顶部的app包名及类名
所以我们在过虑信息时不能以自己程序的进程进行过滤,使用。,只能显示公司的app和一些必要的系统自带app,自定义。中打印出当前正在显示的app的包名以及类名,注,这是由。说明了当前正在显示的应用,当前显示的应用包名为。注:这里的类名必须要使用完整路径的类名。比如公司要我做一个自定义。,这是一个相对路径的类名,完整路径为。,这个界面启动的时间为:253ms。还会显示其它信息,还可以使用。有了这些信息,我们就可以使用。原创 2022-12-02 10:02:18 · 2263 阅读 · 0 评论 -
Android Studio代码检查Bug
IDE中识别Kotlin语言写的父类子类时,无法识别,有Bug。原创 2022-10-18 17:04:44 · 854 阅读 · 0 评论