Android Studio界面详解

发布时间:2022-11-24 ANDROID STUDIO ANDROID IDE
       安装完Android studio之后,首先引入眼帘的就是Android studio界面,Android studio界面有很多的状态栏比如:菜单栏、工具栏、导航栏等等,每个状态栏里面又有很多的设置,我们就来说说初级阶段所需要了解的。 1、菜单栏的File按钮 在编辑器中创建/打开项目有以下几点:      1、直接在file-> New project即可      2、从GitHub/csdn上面下载到桌面,点击file->Import project       3、...

gitolit 搭建Android仓库(四)

发布时间:2022-11-24 ANDROID LINUX GIT MANIFESTS REPO 服务器
gitolite – 代码仓库管理 前三文 gitolite 代码仓库构建,分支管理和仓库分配已经讲清楚。如何屏蔽已经搭建完成的代码仓?某天发现其它更好用托管方式,如何删除 gitolite? 提示:此文章屏蔽某些代码仓,以及删除 gitolite。 Gitolite 托管清除 a) gitolite 镜像仓变更 b) gitolite 镜像仓删除 c) gitolite 卸载 1. gitolite 镜像仓变更 Gerrit 管理源码托管服务器难免发生故障,必要时需要数据迁移到另外一台服务器。...

【Android】 使用 MediaPlayer 播放声音

发布时间:2022-11-24 JAVA ANDROID学习笔记 ANDROID 开发语言
前言: 使用MediaPlayer调用raw文件夹里面的声音。 1.创建MediaPlayer MediaPlayer mediaPlayer = = MediaPlayer.create(this, R.raw.ring); 因为是用这种 MediaPlayer.create 方式创建的,所以不需要调用 prepare 方法。 需要播放声音时: mediaPlayer.start(); 当需要重复播放声音时: //设置循环播放mediaPlayer.setOnCompletionListener(new...

安卓12免root解决卡触控问题

发布时间:2022-11-24 ANDROID
效果图 实际操作 版本号 进入开发者模式  打开usb调试 usb安全设置 不打开usb调试安全设置将无效!!!!   使用代码解决卡触控问题: 其实是不信任触摸事件罢了,属于安卓12的一种保护机制,没啥作用,还不能开小窗,鸡肋的很的保护作用!!! adb shelladb shell settings put global block_untrusted_touches 0  ...

Android 系统签名

发布时间:2022-11-24 ANDROID ANDROID开发
查看签名信息的几种方法 一、查看apk签名信息的两种方式 1.通过.Apk文件的 CERT.RSA查看 将.apk文件 重命名为 .rar ,然后解压 -> 解压后的文件目录:META-INF/CERT.RSA 命令行中使用 keytool -printcert -file **/cert.rsa  查看签名信息 2.直接使用keytool 查看apk签名信息 命令行中使用 keytool -printcert -jarfile **.apk  查看签名信息 二、查看签名文件的信息 命令行使用 ke...

Android 深入理解View.post()获取宽高、Window加载View原理

背景:如何在onCreate()中获取View的宽高? 在某些场景下,需要我们在Activity的onCreate()中获取View的宽高,如果直接通过getMeasuredHeight()、getMeasuredWidth()去获取,得到的值都是0: 2022-11-14 16:56:42.604 E/TTT: onCreate: width->0, height->0 为什么是这样呢?因为onCreate()回调执行时,View还没有经过onMeasure()、onLayout()、...

Android12窗口模糊(二)在WindowManager的addView方法添加的视图中实现高斯模糊效果

发布时间:2022-11-24 开发语言 JAVA ANDROID FRAMEWORK
前言 在 Android 12 中,提供了一些用于实现窗口模糊处理效果(例如背景模糊处理和模糊处理后方屏幕)的公共 API。窗口模糊处理或跨窗口模糊处理用于模糊处理给定窗口后方的屏幕。 有两种窗口模糊处理方式,可用于实现不同的视觉效果: 背景模糊处理(Background blur):可用于创建具有模糊背景的窗口,创造出磨砂玻璃效果,模糊区域是窗口。 模糊处理后方屏幕(Blur behind):可用于模糊处理(对话框)窗口后方的整个屏幕,创造出景深效果,模糊区域是整个屏幕。 这两种效果可以单独使用,...

安卓课后习题及答案(无编程题)

发布时间:2022-11-24 ANDROID
考试大部分来自课后习题,祝大家期中取得好成绩,稍微整理了一下   💛第1章  Android基础入门 一、填空题 1.Dalvik虚拟机中的Dx工具会把部分class文件转换成______文件 2.如果希望在XML布局文件中调用颜色资源文件,可以使用____调用 3.Android程序入口的Activity是在______文件中注册的 4.Android中查看应用程序日志的工具是___ 二、判断题 1.Dalvik虚拟机是Google公司设计的用于Android平台的虚拟机() 2.Android应用程序...

使用resolveApp调用providerApp数据库

发布时间:2022-11-24 JAVA ANDROID 数据库
一、设计目标 创建一个provider,然后在另一个app中使用resolver调用这个provider。 二、设计流程 1.新建一个resovler项目 (1)在MainActivity的布局文件里进行简单的布局 (2)在MainActivity中添加如下代码,进行Provider的调用 public class MainActivity extends AppCompatActivity { private Button button; @Override protected ...

Android App开发网络通信中使用okhttp下载和上传图片、文件讲解及实战(超详细实现用户注册信息上传 附源码)

发布时间:2022-11-24 HTTP ANDROID OKHTTP ANDROID APP XML JAVA
需要源码请点赞关注收藏后评论区留言并且私信~~~ 一、使用okhttp下载图片 okhttp不但简化了HTTP接口的调用过程,连下载文件都变得简单了,对于一般的文件下载,按照常规的GET方式调用流程,只要重写回调方法onResponse,在该方法中通过应答对象的body方法即可获得应答的数据包对象,调用数据包对象的string方法即可得到文本形式的字符串,下面以下载网络图片为例,位图工具BitmapFactory刚好提供了decodeStream方法,允许直接从输入流中解码获取位图对象 效果如下 点...

如何判断 Activity 上有弹窗

发布时间:2022-11-24 系统内容 ANDROID 组件
今天来看个需求,如何判断 Activity 上面是否有弹窗,当然,简单的方式肯定有,例如在 Dialog  show 的时候记录一下,但这种方式不够优雅,我们需要一款更通用的判断方式。 Android 目前的弹窗有如下几种: 1. 普通的应用窗口,如 Dialog。 2. 附加与普通窗口的子窗口,如 PopWindow。 3. 系统窗口,如 WindowManager type 在 FIRST_SYSTEM_WINDOW 与 LAST_SYSTEM_WINDOW 之间。 通过图来简单来了解下 W...

ART深入浅出6--了解Dex文件格式(3)

发布时间:2022-11-24 ANDROID加固 ANDROID
本文基于Android 7.1,不过因为从BSP拿到的版本略有区别,所以本文提到的源码未必与读者找到的源码完全一致。本文在提供源码片断时,将按照 <源码相对android工程的路径>:<行号> <类名> <函数名> 的方式,如果行号对不上,请参考类名和函数名来找到对应的源码。 本节介绍Dex Code的格式。DexCode是Dex虚拟机的核心。 CodeItem CodeItem结构的内容 Method的内容都放在CodeItem结构中,它的定义是这样的 a...

【Android】使用SoundPool进行音频播放

发布时间:2022-11-24 JAVA ANDROID学习笔记 ANDROID 音视频
SoundPool介绍 SoundPool一般用来 播放密集,急促而又短暂的音效,常用在游戏、铃声,还可以用到信息、聊天信息提示音等。 SoundPool对象可以看作是一个可以从APK中导入资源 或者从文件系统中载入文件的样本集合。它利用MediaPlayer服务为音频解码为一个原始16位 PCM流。这个特性使得应用程序可以进行流压缩,而无须忍受在播放音频时解压所带来的CPU 负载和延时。 1.音效添加 在【res】文件夹的【raw】文件夹(没有这个文件夹的创建一个)中添加一段音效,格式为wav格式,命名...

浅析Android开发——RxJava原理

RxJava是什么? 响应式编程框架,响应式编程是一种通过异步和数据流来构建事务关系的编程模型。能够由事件来驱动事务RxJava利用响应式编程的优点,可以实现: ①可以通过一系列链式调用,规范代码②能够通过subscribeOn和observeOn两个方法实现线程切换,通过Map,FlatMap等操作符实现中间事件的转换。③与Retrofit框架配合使用较多 原理 RxJava: 基于 一种扩展的观察者模式RxJava的扩展观察者模式中有4个角色: 角色作用被观察者(Observable)产生事件观察者(...

ShareSDK for Flutter

发布时间:2022-11-24 产品动态 ANDROID FLUTTER IOS
前言 这是一个基于ShareSDK功能的扩展的Flutter插件。使用此插件能够帮助您在使用Flutter开发应用时,快速地实现社会化功能,例如第三方授权登录,获取用户信息以及社交平台的分享等功能。 Demo例子:https://github.com/MobClub/ShareSDK-For-Flutter 开始集成 引入插件 sharesdk_plugin | Flutter Package 在pubspec.yaml文件中加入下面依赖 dependencies: mobcommonlib: sha...

android studio Gradle错误The specified Gradle distribution ‘https://services.gradle.org/distributions/

发布时间:2022-11-24 ANDROID STUDIO ANDROID GRADLE
报错 :The specified Gradle distribution ‘https://services.gradle.org/distributions/gradle-7.0.4-bin.zip’ d 原因是在官网https://services.gradle.org/distributions/找不到gradle-7.0.4-bin.zip,我原本自己去手动下载结果发现找不到。 解决方法:修改wrapper文件夹下的gradle-wrapper.properties 把distributionU...

Android Studio的gradle-3.3-all.zip下载和使用方法

发布时间:2022-11-24 ANDROID STUDIO ANDROID GRADLE
Android Studio的gradle-3.3-all.zip下载和使用方法: 1、下载: 地址: 2、使用方法: 2.1 修改项目目录\gradle\wrapper下的gradle-wrapper.properties文件中的distributionUrl:https://services.gradle.org/distributions/gradle-3.3-all.zip。 2.2 将该gradle-3.3-all.zip文件复制到一下位置C:\Users\你的用户名...

新手入门必备的Flutter技术解析与实战手册

发布时间:2022-11-24 ANDROID FLUTTER
Flutter 是 Google 推出的一套开源跨平台UI框架,可以快速地在Android、iOS和Web平台上构建高质量的原生用户界面。 Flutter 优点众多:可以保存并重载;可以将空间集合、动画库及架构组合起来,设计更加丰富和灵活的界面;可以借助渲染引擎及高性能本地代码运行,以达到跨平台设备的高质量用户体验… 总结一下就是——利用Flutter构建的应用在运行效率上会和原生应用差不多,甚至更好。最重要的一点是,Flutter是完全免费、开源的。如今,Flutter在世界范围内的使用率越来越高,得到...

移动开发-contentprovider进行数据获取

发布时间:2022-11-24 JAVA ANDROID
目录 设计目标 功能说明  代码解析  Myresolver MainActivity  AndroidManifest.xml ContentProvider  MyDBhelper  MyDAO  MyContentProvider  实验结果  实验总结 gitee的代码仓库的地址  设计目标 contentprovider是安卓四大组件之一,请使用其方法类进行数据获取; 建一个provider,然后在另一个app中使用resolver调用这个provider。 实现数据获取并得到正确结...

DPE实践|千亿大厂 Netflix(网飞)的“开发人员生产力工程”实践之路

活动介绍 如果不收集和分析开发人员的行为和软件生产工具的数据,你就无法促进开发人员生产力工程。同时你还需要正确的工具来理解所有这些数据,并使其具有可操作性。 在本期开发人员生产力工程直播中,我们将与来自Netflix生产力工程团队的Danny Thomas进行交流。我们将探讨Netflix为提高工程师的生产力而设置的生产力工程组织结构、KPI、使用的工具以及开发人员体验的“登月计划”。这一切都是为了实现业务的最终目的:为了更快地将更高质量的内容运送给用户。 回看时间 2022年11月24日-12月6...

如何转Android车载工程师?这份《Android车载操作系统开发指南》为你助力

发布时间:2022-11-24 ANDROID车载 ANDROID 车载
**如果说上一代见证了汽车的工业化生产,我们这一代便见证了汽车的智能化发展。**科技的加持下,汽车各方面硬件都在不断升级,其中变化最显著便是车载。 大液晶屏上分布着时间显示、天气情况、音乐播放器、开发板硬件部分等基础设置和许多的娱乐功能。但新的问题又来了,有人会说车机内无网络,还得连手机热点,导航或者放音乐还好,谁会在车里看视频,那多费流量呢。 但现在车机可以通过sdcard卡离线下载安装,直接标配3G与移动公司、第三方应用公司合作推广套餐服务,方便快捷还省流。 可以说,如今的Android车载已经将手机...

【Android性能优化】一些你需要知道的布局优化技巧

布局是一个App非常关键的一部分,布局性能的好坏可直接影响到用户的体验;试想下如果一个RecyclerView滑动时异常卡顿,那用户估计也没有心情去住下滑了,可能就直接强制杀掉App了去,然后回过头去应用商店给个差评 “卡的不要不要的” 虽然现在手机内存、CPU等各项性能都上来了看起来很强,实际上还是卡的不行,所以我们还是要多学习下这方面的知识 布局优化 减少布局层级 ● 布局层级越高越复杂消耗性能就越大,所以在设计布局时尽量缩小布局层级数 viewgroup性能 ● 常用的像LinearLayo...

Android 关闭全部Activity

发布时间:2022-11-24 ANDROID KOTLIN
在App中依此打开 A→B→C→D 四个Activity,在D Activity finish的同时finish掉其他的全部Activity 不建议使用system(0) 解决方法: 在D中使用以下代码: val intent_finish_all = Intent() intent_finish_all.setClass(this,A::class.java) .setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP) startActivity(...

Lifecycle 生命周期组件的那些事

发布时间:2022-11-24 ANDROID JETPACK 开发语言 JAVA 面试
引言 在2022的今天,AndroidX 普遍的情况下,JetPack Lifecycle 也早已经成为了开发中的基础设施,小到 View(扩展库) ,大到 Activity,都隐藏着它的身影,而了解 Lifecycle 也正是理解 JetPack 组件系列库生命感知设计的基础。 本篇定位中级,将从背景到源码实现,从而理解其背后的设计思想。 导航 看完本篇,你将会搞清以下问题: Lifecycle 的前世今生;Lifecycle 可以干什么;Lifecycle 源码解析; 背景 在开始前,我们先聊聊...

Android Q Wifi开启流程

发布时间:2022-11-24 WEBVIEW ANDROID FRAMEWORK ANDROID STUDIO
最近在处理一些wifi问题,所以梳理wifi的启动流程有助于快速定位wifi问题的根源。此篇是根据Android 10的源码来分析的,Android 11及以上略微有点不同,但大差不差。 wifi打开方式有两种,一是从Settings里面打开,二是从通知栏的快捷方式快速开启,两者的入口分别位于 packages\apps\Settings\src\com\android\settings\wifi\WifiEnabler.java @Override public boolean onSwitc...

iTOP3568开发板Android 摄像头测试程序

发布时间:2022-11-24 ANDROID RK3568开发板
本章节配套资料在网盘资料“iTOP-3568 开发板\02_【iTOP-RK3568 开发板】开发资料\ \07_Android应用开发配套资料\04-Android APP源码及测试\01_USB摄像头和ov5695摄像头测 试例程”目录下。 我们使用 adb 工具安装提供的 APP,然后开发板连接 usb 摄像头,打开测试 APP,如下图所示: 然后开发板连接 OV5695 摄像头,打开测试 APP,如下图所示:   我们也可以连接两路摄像头,通过循环箭头切换前摄像头和后摄像头。如下图所示: ...

关于Monkey稳定性测试,这是我看到最详细的文章

通过随机点击屏幕一段时间,看看app会不会崩溃,能不能维持正常运行,这就是稳定性测试。 01 Monkey是什么 Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行测试,检测程序多久的时间会发生异常。和MonkeyRunner几乎是完全不同的,MonkeyRunner相当于是搞自动化测试的了 官方介绍: https://developer.android.com/studio/test/monkey.htm...

如何利用Airtest做一些简单的装包小任务

1. 前言 很多同学对于Airtest都有一些刻板的印象,觉得Airtest只能截图,然后进行一些简单的点点点操作。 但实际上,抛开Airtest的图像识别点击功能,Airtest还能帮助我们连接设备,然后完成一些别的小任务,比如装包、打开应用、检查应用等等(不需要截图、也不需要生成报告)。 2. 利用Airtest完成装包任务的脚本示例 示例为一个非常简单的纯.py脚本例子,只连接设备,然后安装并打开指定应用即可,log都不需要保存(可以看到auto_setup里面logdir=False): # -*...

ADB调试Android设备

发布时间:2022-11-24 ANDROID 开发工具 ADB
前言         ADB的全称是 Android Debug Bridge,安卓调试桥的意思,PC端使用ADB工具包就可以对你的安卓设备进行管理、调试了,比如说,设备间上传和下载文件、应用软件的安装和卸载、抓取日志信息等。         使用adb工具包需要去熟悉 adb 指令,如果熟悉linux常用指令的,基本很快就能上手。 1. ADB工具包 1.1 adb工具包下载 打开网页,搜索“abd工具包”,随便找个地址就可以下载到(windows下安装); 工具包里主要包含的文件如下图1: ...

【android中hal层如何获取属性】

发布时间:2022-11-24 ANDROID LINUX ADB
property_get int property_get(const char *key, char *value, const char *default_value); 使用此函数获取安卓属性,demo如下: char prop[100] = {0};if(property_get(persist.sys.mylog, prop, 0) >= 0){ if(prop[0] == '0'){ do_something(); } else { do_something(); }} 解释下,...

MAUI 签名的使用

发布时间:2022-11-24 ANDROID
在MAUI开发一个APP再RK3288上运行, Android的时候 ,APK编译出来了 但是安装失败。 后来在真机上看到 提示"安装APK,提示“该安装包未包含任何证书" 这样就考虑给他弄个证书. 参考: 在 VS2022 中创建一个经过签名并可发布的.NET MAUI 安卓应用_哔哩哔哩_bilibili MAUI发布APK初体验_文件_项目_配置 (sohu.com) 我是在visual studio视图里边 打开 终端: 输入 :  keytool -genkey -v -kystore key....

JNI和NDK在android里的使用

发布时间:2022-11-24 笔记 ANDROID 最高笔记 ANDROID STUDIO GRADLE
JNI的介绍: JNI的定义:Java Native Interface 也就是Java本地的接口。它的作用就是使Java与本地的其他语言(C C++)交互。 需要注意的两点:(1)JNI是 Java 调用 Native 语言的一种特性。(2)JNI 是属于 Java 的,与 Android 无直接关系 为什么要有 JNI 背景:实际使用中,Java 需要与 本地代码 进行交互 问题:因为 Java 具备跨平台的特点,所以Java 与 本地代码交互的能力非常弱 解决方案: 采用 JNI特性 增强 Java...

Android -- 每日一问:怎么理解 Activity 的生命周期?

发布时间:2022-11-24 每日一问 ANDROID -- 每日一问 ANDROID
典型回答 如果一个 Activity 在用户可见时才处理某个广播,不可见时注销掉,那么应该在哪两个生命周期的回调方法去注册和注销 BroadcastReceiver 呢? Activity 的可见生命周期发生在 onStart调用与 onStop调用之间。在这段时间,用户可以在屏幕上看到 Activity 并与其交互。我们可以在 onStart中注册一个BroadcastReceiver 以监控影响 UI 的变化,并在用户无法再看到您显示的内容时在 onStop 中将其取消注册。 如果有一些...

Android OpenGL ES 3.0 PBO像素缓冲区对象

发布时间:2022-11-24 ANDROID OPENGL ES 3.0 PBO像素数据读取
1.什么是PBO OpenGL PBO(Pixel Buffer Object),被称为像素缓冲区对象,主要被用于异步像素传输操作。PBO 仅用于执行像素传输,不连接到纹理,且与 FBO (帧缓冲区对象)无关。 OpenGL PBO(像素缓冲区对象) 类似于 VBO(顶点缓冲区对象),PBO 开辟的也是 GPU 缓存,而存储的是图像数据。 PBO 绑定相关的 Target 标签有 2 个: GL_PIXEL_UNPACK_BUFFER:将PBO绑定到这个上边,glTexImage2D和glTexSubI...

Android App安全监测隐私权限工具及自测

发布时间:2022-11-24 ANDROID APP隐私合规自测工具
1、参考文章【Android App】安全监测隐私权限工具及自测 图文详解_飞雪金灵的博客-CSDN博客_app权限检测工具 2、修改上文使用到的命令,即不在控制台输出日志,将日志输出到文件中 python camille.py com.taobao.taobao -t 3 改成 python camille.py com.taobao.taobao -t 3 -ns -f demo.xls   3、测试完成后,按ctrl+c,即可在camille目录下看到demo.xls文件 ...

推特证明求职的尽头是被裁?Android工程师们小心了

前言: 马斯克在Twitter的一系列操作在2022年的今天仍然具有戏剧性,一句话概括就是:大批量裁员,这一数量达到近50%,同时在内部信里要求员工“全力以赴,不然就辞职走人”,一股996的风潮正吹进了Twitter大楼。 不少网友调侃道,Twitter把中国企业的这套学得明明白白。 不过,裁员这个问题是当前国内外企业都在经历的,著名外企亚马逊、微软、谷歌等今年都有裁员的情况发生,这在国内也是时常发生的一件事。 不少初入社会的应届毕业生都在担心这个情况,那为什么会被裁呢? 大厂在产品售卖上不会跟你...

vivo s15真机调试 解析软件包时出现问题

发布时间:2022-11-24 ANDROID STUDIO ANDROID
我用的 vivo s15,Android Studio 报错内容: 11/24 18:34:45: Launching ‘app’ on vivo V2203A. Installation did not succeed. The application could not be installed: INSTALL_FAILED_ABORTED Installation failed due to: ‘null’ Retry 18:34 Failed to commit install session ...

adb连接手机命令

发布时间:2022-11-24 ANDROID ADB
adb forward --remove-all adb tcpip 5555 提示 restarting in TCP mode port: 5555 ==========xxxxxx adb connect 192.168.3.221 后 提示 connected to 192.168.3.221:5555 ==========xxxxxx 连上了 adb shell ps |grep “golden” adb shell dumpsys meminfo 9593 adb shell dumpsys ...

Android View 绘制流程之DecorView与ViewRootImpl

一、从setContentView说起 一般的,我们会在Activity的onCreate()方法中写下这一行代码: setContentView(R.layout.main); 显然这是为Activity设置的一个我们定义好的main.xml布局,我们跟踪一下源码,看看这个方法是怎么做的: public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(layoutResID); //调用g...

Jetpack Compose 使用SwipeRefresh整体布局下拉刷新

发布时间:2022-11-24 ANDROID
SwipeRefresh的简单使用 //ViewModel状态控制class RefreshViewModel : ViewModel(){ var isRefresh = mutableStateOf(false) fun refresh(){ //将isRefresh置为true,表示当前正在刷新 isRefresh = true //在ViewModel中开启一个协程,自身停止刷新,模拟刷新 viewModelScope.launc...

【Android】网络状态判断

发布时间:2022-11-24 网络 ANDROID学习笔记 ANDROID JAVA
现在手机APP基本上都需要联网,需要进行网络判断,一般有以下几个需求: 1.判断网络是否连接: /** * 判断网络是否连接 */public static boolean isConnected(Context context) { ConnectivityManager manager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (manager != n...

Jetpack 之 LiveData 实现事件总线

发布时间:2022-11-24 ANDROID JETPACK
事件总线相信大家很多时候都会用到,那大家常用的也就是常青树 EventBus,以及 RxJava 流行起来的后起之秀 RxBus。它们的使用方式都差不多,思想也都是基于观察者模式,正好 LiveData 的核心思想也是观察者模式,因此我们完全可以使用 LiveData 来实现一个事件总线,如果项目使用 Jetpack 套件的话,可以减少库的依赖,并且如果使用 LiveData 的话,还可以将注销操作交给系统处理,在避免内存泄露方面又可以省心了。 一、基本实现 我们需要实现不同界面之间通信的话,必然是需要使...

Android性能优化方法论

发布时间:2022-11-24 ANDROID进阶专栏 性能优化 ANDROID JAVA
作为一名开发,性能优化是永远绕不过去的话题,在日常的开发中,我们可肯定都会接触过。Android 的性能优化其实是非常成熟的了,成熟的套路,成熟的方法论,成熟的开源框架等等。 对于接触性能优化经验较少的开发者来说,可能很少有机会能去总结或者学到这些成熟的套路,方法论,或者框架。所以作为一位多年长期做性能优化的开发者,在这篇文章中对性能优化的方法论做一些总结,以供大家借鉴。 性能优化的本质 首先,我先介绍一下性能优化的本质。我对其本质的认知是这样的:性能优化的本质是合理且充分的使用硬件资源,让程序的表现更...

Android10 AudioRecord简单解析

发布时间:2022-11-24 ANDROID
AudioRecord简介: 音频子系统,从音频输入设备录制音频PCM数据供应用层使用 业务场景:蓝牙语音遥控器,带麦克风的摄像头,耳机等。应用拿到音频PCM数据可以直接播放(比如常见的录音apk,录音达人) 或者对语音进行解析(语音转文字,语音助手应用) 本文是对国科平台android10进行梳理,其它版本SDK可能有所差异,但总体框架是类似的 涉及源码路径: AudioRecord.java(frameworks/base/media/java/android/media/AudioRecord.ja...

Esp8266与android app的UDP通讯

发布时间:2022-11-24 网络 ANDROID C++ 单片机 UDP ESP8266
Esp8266 #include <ESP8266WiFi.h>#include <WiFiUdp.h>const char *ssid = dsx_zj; //网络名称const char *password = dsxbs725; //网络密码WiFiUDP Udp;unsigned int udpPort = 8081; // 本地端口号const int rec_data_len = 128;char incomingPacket[rec_data_len]; ...

移动开发技术三

发布时间:2022-11-24 JAVA ANDROID 开发语言 安卓
一、设计目标 1、contentprovider是安卓四大组件之一,请使用其方法类进行数据获取; 2、请自建一个provider,然后在另一个app中使用resolver调用这个provider。 3、本次作业请启用新项目,理论上需要两个APP进行实验。 二、功能说明 在app0中,可以进行数据存储,并对其进行增删改查操作;在app1中,可以查询到app0中的数据,两个app之间实现数据共享。 三、代码解析 本次作业涉及到App间的数据共享,因此建立两个app,app0作为数据的提供...

Android如何使用so库

发布时间:2022-11-24 笔记 ANDROID 最高笔记 ANDROID STUDIO JAVA
一、前言 Android中有时候为了效率以及平台开发库的支持,难免会用到NDK开发,那么都会产生一个so文件,通过native方法进行调用,开发和调用步骤很简单,这里就不多说了,本文主要来介绍,我们在使用so的时候总是会出现一些常见的问题,而现在插件化开发也很普遍了,有时候插件中也会包含一些so文件,需要加载,这时候也会出现一些问题。本文就来详细总结一下这些问题出现的原因,以及解决方法,主要还是通过源码来分析。 二、涉及到的源码类 因为本文主要通过分析源码来分析so使用的知识点和问题总结,所以涉及到了很多...

python-uiautomator运行shell命令

发布时间:2022-11-24 ANDROID ADB PYTHON
一、不需要root时 1.os.system() #ls /mnt/文件,不需要root d=conn_device()ex_out = os.popen('adb shell ls -l /mnt/')out = ex_out.readlines()print(out) 2. d.shell() #ls /mnt/文件,不需要root d=conn_device()#列表写shell命令out,exit_code = d.shell([ls,'-l','/mnt/'],timeout=60)prin...

Android Jetpack之ViewModel的使用及源码分析

ViewModel 类是一种业务逻辑或屏幕级状态容器。它用于将状态公开给界面,以及封装相关的业务逻辑。 它的主要优点是,它可以缓存状态,并可在配置更改后持久保留相应状态。这意味着在 activity 之间导航时或进行配置更改后(例如旋转屏幕时),界面将无需重新提取数据。 现在,常用的项目架构,在MVP向MVVM转变。相对于MVP中的P(presenter),MVVM中的ViewModel有哪些优势呢。 ViewModel的优势 可以持久的保留界面状态(比如,屏幕旋转)提供了对业务逻辑的访问权限() 我们先...