android
文章平均质量分 51
饭小粒
蓝牙&Android&iOS&EN
展开
-
虚拟机内存管理之内存分配器
如上图所示,各种编程都提供了动态分配内存对象的能力,例如创建浏览器 Dom 对象,创建 Javascript 的内存数组对象( Array Buffer 等),以及面向系统编程的 C / C++ 中的动态分配的内存等。在应用开发者角度看,通过语言或者库提供的动态内存管理(分配,释放)的接口就是实现对象内存的分配和回收,而不需要关心底层的具体实现,例如,所分配对象的实际内存大小,对象在内存中的位置排布(对象地址),可以用于分配的内存区域,对象何时被回收,如何处理多线程情况下的内存分配等等;转载 2023-11-09 22:22:22 · 311 阅读 · 0 评论 -
Mac AndroidStudio 无线调试设备
3)在.bash_profile中输入: export PATH=/.../Library/Android/sdk/platform-tools/:$PATH。3)在.zshrc中输入: export PATH=/.../Library/Android/sdk/platform-tools/:$PATH。原文链接:https://blog.csdn.net/sinat_31177681/article/details/119319434。1)打开终端,输入:open .bash_profile。转载 2022-10-30 18:49:08 · 748 阅读 · 0 评论 -
appium连接真机出现“This adb server‘s $ADB_VENDOR_KEYS is not set”
版权声明:本文为CSDN博主「*一起来找茬*」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/apple198942/article/details/111644589。如果该设备显示为未授权,到手机上的开发人员选项,然后单击“撤销USB调试授权”手机上将弹出弹窗询问您是否同意连接。1.检查连接设备,显示未授权。4.再次检查设备,显示已授权。2.撤销手机上的USB调试。然后重启adb服务器。转载 2022-10-30 18:47:35 · 1699 阅读 · 0 评论 -
苹果笔记本android studio安装教程,MAC下如何安装AndroidStudio
7、接下来显示的是刚才勾选的配置设置,如若无误,点击 finish, 如果需要修改点击 Previous。9、至此,软件安装和初始化完成,显示的软件启动界面如下图所示,从这里可以进行创建项目工程或者打开已有的项目工程等操作。5、选择需要安装的配件,建议勾选以下选项,这些也可以在之后进行安装,推荐可以在配置软件的时候就勾选上。最近在慢慢往Mac上转移阵地,既然要装AS,那我就记录一下,哈哈,做个笔记,方便以后查找。1、打开过程界面如下图所示,若未配置 SDK 目录,会出现找不到 SDK ,选择取消即可。转载 2022-10-30 15:43:25 · 15036 阅读 · 2 评论 -
Android中将项目生成jar包的方法
Steps 1: 打开项目中的app目录下的build.gradle文件,然后将里面的 id ‘com.android.application’ 替换成 id ‘com.android.library’ 然后将defaultConfig中的applicationId "com.example.installapk"注释掉,或者删除。版权声明:本文为CSDN博主「白呐」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。如何将自己写的项目生成jar包的方法。转载 2022-10-28 16:42:11 · 1523 阅读 · 0 评论 -
【Mac android studio】Error:Failed to open zip file. Gradle‘s dependency cache may be corrupt解决方法
我的做法是通过android studio➡️Preferences➡️Gradle找到路径 /Users/***/.gradle,复制该路径回到桌面 command+shift +G搜索找到文件夹删除dists目录下的gradle文件夹,然后直接重启android studio,开发工具会再次帮你下载解压;也可以直接复制下图的路径去浏览器直接下载然后复制到该目录下重启android studio...转载 2021-01-07 10:43:06 · 129 阅读 · 0 评论 -
关于Android mkdirs()返回false
关于Android mkdirs()返回false可以在manifest文件中的标签下加上这个属性:android:requestLegacyExternalStorage=“true”转载 2021-01-05 20:08:11 · 1028 阅读 · 0 评论 -
GATT服务搜索流程(一)
GATT的规范阅读起来还是比较简答, 但是这样的规范在代码上是如何实现的呢?下面就分析一下bluedroid 协议栈关于GATT的代码流程。BLE的设备都是在SMP之后进行ATT的流程的交互。从代码的实现中发现也是在SMP结束之后做回调的执行过程中进行GATT的搜索流程,SMP结束之后的回调函数是bta_dm_ble_smp_cback/******************************************************************************.转载 2020-11-28 16:44:13 · 1202 阅读 · 0 评论 -
Android通过 isTaskRoot() 方法来判断是否重新启动页面
问题描述:在开发过程中,安装完成一个app时,在安装界面直接点击打开。我们进入了app的首页,这时我们按home键返回桌面,再点击应用图标,会发现没有直接进入首页,而是先进入了app的闪屏页,在进入首页。重复这一步一直如此。这时我们按back键返回,发现没有直接退回桌面,而是返回到之前打开的多个首页。但是如果一开始安装完我们不是直接打开,而是在桌面点击应用进入就不会这样了。 android 任务栈流程: 参考:https://developer.android.google.cn/guide/co转载 2020-11-27 11:26:36 · 716 阅读 · 0 评论 -
Android音频播放之SoundPool 详解
SoundPool —— 适合短促且对反应速度比较高的情况(游戏音效或按键声等)下面介绍SoundPool的创建过程:1. 创建一个SoundPool(构造函数)public SoundPool(int maxStream, int streamType, int srcQuality)maxStream —— 同时播放的流的最大数量streamType —— 流的类型,一般为STREAM_MUSIC(具体在AudioManager类中列出)srcQuality —— 采样率转化质量,..转载 2020-11-06 16:32:40 · 8833 阅读 · 0 评论 -
Android官方蓝牙帮助
https://developer.android.com/guide/topics/connectivity/bluetooth.html?hl=zh-cn#TheBasics原创 2020-11-06 11:01:24 · 248 阅读 · 0 评论 -
手把手讲解 Android Hook-Activity的启动流程
前言手把手讲解系列文章,是我写给各位看官,也是写给我自己的。文章可能过分详细,但是这是为了帮助到尽量多的人,毕竟工作5,6年,不能老吸血,也到了回馈开源的时候.这个系列的文章:1、用通俗易懂的讲解方式,讲解一门技术的实用价值2、详细书写源码的追踪,源码截图,绘制类的结构图,尽量详细地解释原理的探索过程3、提供Github 的 可运行的Demo工程,但是我所提供代码,更多是提供思路,抛砖引玉,请酌情cv4、集合整理原理探索过程中的一些坑,或者demo的运行过程中的注意事项5、用gif图,最直转载 2020-10-24 16:19:57 · 891 阅读 · 1 评论 -
Kotlin的数组array和集合list的简单使用以及注意事项
学习到Kotlin的数组和集合,这里做个记录。数组ArrayKotlin中数组也是个容器,提供了不同的类型有:ByteArray, CharArray, ShortArray, IntArray, LongArray, BooleanArray, FloatArray,DoubleArray,一大堆,这里不一一介绍,用法都差不多,只是带类型的数组只能装指定类型。初始化 //初始化一个空的数组,实际上它是大小为0继承arrayOfNulls的数组 var ar转载 2020-10-07 16:20:16 · 7223 阅读 · 1 评论 -
Android Studio无线Wifi调试手机的两种方案
Android Studio无线Wifi调试手机的两种方案 第一种方式 使用adbWireless连接 第二种方式 使用插件Android Wifi ADB连接 总结 第一种方式 使用adbWireless连接使用adbWireless工具,其能够让手机用无线来取代USB连接而使用ADB工具1. 手机需要与电脑在同一局域网内2. 把adbWireless安装到手机上,并开启,上面会显示一个IP地址3. 在Android studio的Terminal里面执行adb con.转载 2020-09-21 20:48:38 · 1033 阅读 · 0 评论 -
手把手教你使用Android APT
Annotation(注解)如果想学习APT(注解处理工具),那么就必须先了解Annotation的基础,对于不了解java注解基础的朋友们,请先学习java注解,再看本文。APTAPT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,使用Annotation进行额外的处理。Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由A转载 2020-09-19 15:52:07 · 835 阅读 · 0 评论 -
androidStudio4.0 Settings->Plugins下载插件,插件列表加载不出来
解决 androidStudio Settings->Plugins下载插件,插件列表加载不出来点击设置,勾选Auto-detect proxy settings,输入网址 https://plugins.jetbrains.com/在进行搜索,如下,可以看到对应的安装列表。转载 2020-09-18 11:11:55 · 1213 阅读 · 3 评论 -
Android NDK详解
https://mlxchange.xyz/2020/08/05/NDK详解/转载 2020-09-10 11:15:59 · 107 阅读 · 0 评论 -
上次没砍我的,这次我又来了。看完这篇还不明白Binder你砍我(一)
概述什么是Binder?Binder是Android程序中实现跨进程通信(IPC)的一种方式。指两个进程之间进行数据交换的过程为什么要跨进程通信?因为有进程隔离,进程隔离指的是,一个进程不能直接操作或者访问另一个进程。也就是进程A不可以直接访问进程B的数据。那么如何进行跨进程通信呢?我们都知道,Android系统的内核是Linux,所以我们首先了解一下Linux上是如何实现的把。Linux上的跨进程通信机制在Linux中有这么几种IPC机制,有管道(pipe)、信号(sinal)、消转载 2020-09-10 10:44:14 · 445 阅读 · 2 评论 -
看完这篇还不明白Handler你砍我!
本篇文章来自Mlx的投稿,和大家分享了Handler相关的绝密内容,相信会对大家有所帮助!同时也感谢作者贡献的精彩文章!Mlx的博客地址:https://mlxchange.xyz// 前言 /Handler可以说小伙伴们用的非常多了,可以说Handler是支撑整个Android系统运行的基础,本质上Android系统都是由事件驱动的。而处理事件的核心就在于Handler。接下来我们就从简单的使用,到源码分析让你彻彻底底明白Handler的本质。不会再让你发出为...转载 2020-09-10 10:40:01 · 233 阅读 · 0 评论 -
那些年,我们一起经历过的 Android 系统性能优化
Android 系统性能优化,最近几年 ,Google 之外,绝对是中国的手机厂商参与得最深最广。不光深挖系统、场景,还要和 Top 应用合作优化,和各种流氓应用勾心斗角。同时 Google 也在不断吸收一些 common 的优化经验,应用到每年的大版本更新中去。接下来简单梳理一下,近几年来各大手机厂商拿出来宣传的性能优化技术。1 华为 - 18 个月不卡顿长时间使用卡顿,成为 Android 手机的通病,各个手机厂商应该都有专项来投入这个问题,华为是首个公开把这个问题展示到了台前,并成了一段时转载 2020-09-10 10:14:39 · 6177 阅读 · 0 评论 -
Android 中的卡顿丢帧原因概述 - 方法论
Android 手机使用中的卡顿问题 , 一般来说手机厂商和 App 开发商都会非常重视 , 所以不管是手机厂商还是 App 开发者 , 都会对卡顿问题非常重视 , 内部一般也会有专门的基础组或者优化组来进行优化 .目前市面上有一些非常棒的第三方性能监控工具 , 比如腾讯的 Matrix ; 手机厂商一般也会有自己的性能监控方案 , 由于可以修改源码和避免权限问题 , 所以手机厂商可以拿到更多的数据 , 分析起来也会更方便一些.说回流畅度 , 其实就是操作过程中的丢帧 , 本来一秒中画面需要更新 6转载 2020-09-10 10:04:36 · 1115 阅读 · 0 评论 -
gradle的手动配置
开发中相信很多人在用as打开github或者其他方式下载的demo时候都经常遇到gradle不一致的情况,会卡在Gradle Building Running要等很长时候甚至几个小时都不动,这是由于你的gradle配置目录中不存在项目中的gradle版本,as会自动下载,但是国内屏蔽了Google,无法登陆下载,会一直卡在Building界面连接进行下载,这时候就需要手动下载对应的版本。1.找到gralde——>gradle-wrapper.properties文件夹,查看: d...转载 2020-09-03 10:18:45 · 383 阅读 · 0 评论 -
android录音并通过百度识别将语音转文字遇到的坑
由于百度语音识别的语音文件格式必须固定且符合:百度语音识别规则:原始 PCM 的录音参数必须符合 16k 采样率、16bit 位深、单声道,支持的格式有:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)。因此,我尝试了3种方式(最终实现可行的方法在最后一个方法中):一、通过 Ffmpeg 将录音文件amr转wav格式在32位android系统没有问题,但是我们定制的android系统是64位,Ffmpeg 的32位so库克参考这里下载(别人编译好的so库):https转载 2020-08-25 22:09:22 · 651 阅读 · 0 评论 -
Android 平台语音通话及回音消除、噪音消除研究(转)
一 Android操作系统由来Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开转载 2020-08-25 21:41:18 · 2156 阅读 · 2 评论 -
Android之蓝牙驱动开发总结
一Bluetooth基本概念3二AndroidBluetooth架构32.1Bluetooth架构图32.2Bluetooth代码层次结构3三Bluetooth协议栈分析43.1蓝牙协议栈43.2Android与蓝牙协议栈的关系6四Bluetooth之HCI层分析64.1HCI层与基带的通信方式64.2包的分析及研究74.3通信过程的研究与分析8五Bluetooth之编程实现85.1HCI层编程85.2L2CAP层编程115...转载 2020-08-23 14:28:38 · 2473 阅读 · 0 评论 -
Android中所涉及的常用设计模式
1、单例模式概念:Ensure a class has only one instance, and provide a global point of access to it.动态确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。优点:由于单例模式在内存中只有一个实例,减少了内存开销。对于那些耗内存的类,只实例化一次,大大提高性能,尤其是移动开发中。 单例模式可以避免对资源的多重占用,例如一个写文件时,由于只有一个实例存在内存中,避免对同一个资源文件的同时写操作。 单例模式转载 2020-08-23 12:46:57 · 254 阅读 · 0 评论 -
Android相机开发那些坑
作者:MagiLu链接:https://zhuanlan.zhihu.com/p/20559606来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:zakiwang出品:QQ空间终端开发团队本文首发于QQ空间终端开发团队的官方公众号,任何形式的转载之前必须与本人联系。最近我负责开发了一个跟Android相机有关的需求,新功能允许用户使用手机摄像头,快速拍摄特定尺寸(1:1或3:4)的照片,并支持在拍摄出的照片上做贴纸相关的操作。由于之前没有..转载 2020-08-08 08:08:56 · 395 阅读 · 0 评论 -
Android LocalService与RemoteService理解
前段时间被别人问到相关的问题,没有回答对,发现自己原来理解的有偏差,最近看了下,写了个小Demo实验了下,现在将其记录下来,以后千万别犯同样的错误就好了。一、LocalService(本地服务)不需要和Activity交互的本地服务:使用startService和stopService。运行时 可以发现第一次startService时,会调用onCreate和onStartCommand,在没有stopService之前,无论点击多少次 startService,都只会调用onStartComm转载 2020-07-30 20:26:03 · 615 阅读 · 0 评论 -
Android总结之Service
1 Service是什么?Service是一个可以在后台执行长时间运行操作而不操作用户界面的应用组件。服务可由其它应用组件启动,而且即使用户切换到其它应用,服务仍将在后台继续运行。此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信(IPC)。例如,服务可以处理网络事物,播放音乐,执行文件I/O或与内容提供程序交互,而所有这一切均可在后台进行。1.1 启动当应用组件(activity)通过调用startService()启动服务时,服务即处于“启动状态”。一旦启动,服务即可在后台无限期转载 2020-07-23 10:31:45 · 229 阅读 · 0 评论 -
Android HAL 层原理分析
Android HAL 简介Android 系统硬件抽象层(Hardware Abstract Layer)运行在用户空间中,它向下屏蔽了硬件驱动的实现细节,向上提供了硬件访问的服务。通过 HAL 层,Android 系统分为两层来支持硬件设备,其中一层实现在用户空间,另外一层实现在内核空间中,它在 Android 系统框架中的位置如下图所示。传统的 Linux 系统则把对硬件的支持和管理全部放在内核空间中,即把对硬件的全部支持都放在硬件驱动模块当中。为什么要添加一个 HAL 层?Andr.转载 2020-07-23 10:25:41 · 1147 阅读 · 0 评论 -
Android HAL层库加载原理
Android HAL层库加载原理Android HAL层的由来:由于市面做移动芯片的厂商很多,大部分厂商考虑到自己硬件的设计架构、安全、专利等方面原因,不愿意公开自己的这方面代码,也出于不同厂商硬件架构不太一样,适配开发难度周期长,GOOGLE在kernel之上加了一个HAL层,只要各个厂商实现Android 所需要的功能接口,可以以库的方式提供不用开源。问题来了,android如何实现针对不同的Hardware Module进行通用性调用的呢?以加载camera HAL层库为例:#def转载 2020-07-23 10:15:18 · 435 阅读 · 0 评论 -
「Android」SurfaceFlinger分析
本篇针对surfaceFlinger模块进行分析,目录如下:1、SurfaceFlinger功能 1.1、BufferQueue原理(native/libs/gui模块) 1.2 layer显示内存分配(native/libs/ui模块) 1.3、surfaceFlinger处理(native/.../surfaceFlinger模块)2、工程代码解析: 2.1、surfaceFlinger启动过程 2.2、surfaceFlinger事务处理3、总结(处理流...转载 2020-07-01 10:50:02 · 3214 阅读 · 0 评论 -
android音频系统(6):AudioService之音频输出通道切换
前言:音频输出的方式有很多种,外放即扬声器(Speaker)、听筒(Telephone Receiver)、有线耳机(WiredHeadset)、蓝牙音箱(Bluetooth A2DP)等,电话免提、插拔耳机、连接断开蓝牙设备等操作系统都会自动切换Audio音频到相应的输出设备上。我们知道,音频输出通道切换有些是系统自动切换的,但是有些自动切换并不是我们想要的,如:音乐App在听歌时,需要对听歌时拔出耳机的操作进行阻止(暂停播放)而不是突然切换到外放,又如通话时插入耳机并按下免提,希望声音既可以从耳机输转载 2020-06-13 19:39:23 · 2529 阅读 · 2 评论 -
博客导航——一站式搜索(所有博客的汇总帖)
博客导航——一站式搜索以后博客肯定会越来越多的,所以这做一个整理,方便各位朋友能快速的锁定自己想要的资源课程巧用第三方快速开发Android App 热门第三方SDK及框架Android StudioGoogle主推-Android开发利器——Android Studio,这可能是最全的AS教程!Android Studio 2.0 Preview 4 的逆袭以及各种神注释Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具Android转载 2020-05-22 13:54:56 · 1229 阅读 · 0 评论 -
Android开发人员不得不收集的代码(持续更新中)
DownloadGradle: 1234 implementation 'com.blankj:utilcode:1.28.0'// if u use AndroidX, use the followingimplementation 'com.blankj:utilcodex:1.28.0' APIs Activit...转载 2020-04-17 10:45:53 · 616 阅读 · 0 评论 -
Android 解压zip文件你知道多少?
对于Android常用的压缩格式ZIP,你了解多少? Android的有两种解压ZIP的方法,你知道吗? ZipFile和ZipInputStream的解压效率,你对比过吗? 带着以上问题,现在就开始ZIP的解压之旅。1. Zip文件结构ZIP文件结构如下图所示,File Entry表示一个文件实体,一个压缩文件中有多个文件实体。文件实体由一个头部和文件数...转载 2020-04-16 11:08:34 · 1437 阅读 · 0 评论 -
android、Java下判断两个String是否相等 、EditText输入是否为空,限定输入数字的实现 总结
str1.equals(str2)来判断,不能用==或者!=来判断,原因:因为String是引用类型的,不是基本数据类型,所以它们的比较是使用地址和值(相当于C中的指针)来比较的,因为它们是不同的对象,有不同的地址,所以str1!=str2永远都是true。而str1==str2永远是false。如果你中想比较它们的数值是否相等就使用str1.equals(str2...转载 2020-04-15 14:34:56 · 331 阅读 · 0 评论 -
ABI (应用程序二进制接口)
每个操作系统都会为运行在该系统下的应用程序提供应用程序二进制接口(Application Binary Interface,ABI)。ABI包含了应用程序在这个系统下运行时必须遵守的编程约定。ABI总是包含一系列的系统调用和使用这些系统调用的方法,以及关于程序可以使用的内存地址和使用机器寄存器的规定。从一个应用程序的角度看,ABI既是系统架构的一部分也是硬件体系结构的重点,因此只要违反二者之一的条...转载 2020-04-13 17:55:56 · 1406 阅读 · 0 评论 -
Android-BlutoothBle,蓝牙中心设备(peripheral)向外围设备(GattServer)连续写入多个Characteristic的注意事项
新写入一个characteristic时,应该等上一个写入characteristic操作结束后,在回调函数里面得到返回状态过后,再能继续写入下一个characteristic新写入一个characteristic时,public static boolean Write_Characteristic_Callback_Success = true; Thread...转载 2019-12-11 10:19:59 · 493 阅读 · 0 评论 -
BMP、GIF、TIFF、PNG、JPG和SVG格式图像的特点
目录1、BMP格式图像2、GIF格式图像3、TIFF格式图像4、PNG格式图像5、JPG格式图像6、SVG格式图像7、总结7.1、有损vs无损7.2、索引色vs直接色7.3、点阵图vs矢量图7.4、总结一张图片可以储存为多种格式,为什么有的几十KB,有的几百MB,有的静止不动,有的是好几个画面循环播放?在项目开发的过程中经常会读取或保存图像文...转载 2019-11-27 10:46:37 · 1313 阅读 · 0 评论