Android 基础入门
文章平均质量分 58
放大的EZ
本人郑重声明,本博客所编文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。
展开
-
ndk getPlatformVersion error
解决办法:在ndk的路径(比如我的ndk路径为/home/user/Android/sdk/ndk/22.0.7026061)下新建空文件夹。ndk demo工程构建失败,提示Caused by: java.lang.原创 2024-08-08 21:15:00 · 189 阅读 · 0 评论 -
Android 14 独立编译 Setting apk
很多时候如果在apk 目录下 mm 单独编译会出错,我们在setting 目录下是用 mm 会报错。所以应该在 源码主目录 采用。都可以才用这种方式进行编译。原创 2024-06-28 22:00:00 · 343 阅读 · 0 评论 -
android 13+ 编译 SystemUI.apk
源码 根目录:lunch。原创 2024-05-28 23:30:00 · 226 阅读 · 0 评论 -
Android13 Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE
最近把以前的11的代码移植到13上碰到的问题,记录一下:错误提示在使用PendingIntent时,无论是创建或使用的时候flags参数要求必须添加 FLAG_IMMUTABLE或者FLAG_MUTABLE的两个之中其中一个,而且官方还强烈推荐使用FLAG_IMMUTABLE(代码不同,依情况而定官方的推荐)。转载 2024-05-27 22:30:00 · 947 阅读 · 0 评论 -
Android 浅度解析:系统框架层修改,编译,推送相关操作
在Android系统开发过程中,我们经常需要对系统框架层进行修改。本文将详细介绍如何编译和推送这些修改,以及如何进行一些常见的操作。1. Android系统框架层简介Android系统框架层是Android系统的核心层,提供了各种服务和API给上层的应用和模块。它包含Java类、资源文件、native代码和API签名等,这些组件会被打包或链接到一些文件中,如framework.jar、framework-res.apk、libandroid_servers.so和selinux_policy等。转载 2023-12-25 21:45:00 · 309 阅读 · 0 评论 -
android adb 授权
如果android上没有保存这台PC的公钥,则会弹出提示框,让你确认是否允许这台机器进行adb连接,当你点击了允许授权之后,android就会保存了这台PC的adbkey.pub(公钥);adb译为Android设备的桥梁,可以用于快速更新设备中代码,应用或者Android系统升级,在设备上运行shell命令,管理设备或手机模拟器上的端口。adb分为三个部分:PC上的adb client,adb server和手机(也可能是PC上的模拟器)上的adb daemon。这是一个多连接的设计。转载 2023-12-13 23:45:00 · 1126 阅读 · 0 评论 -
Android系统 设置第三方应用为默认Launcher实现和原理分析
系统会根据该Intent,在已安装的应用中查找匹配的Activity,并显示一个选择器让用户选择要启动的launcher应用。当用户在选择器中选择了某个launcher应用,并勾选了“始终”选项时,系统会调用ActivityManagerService中的setHomeActivity方法,将用户选择的launcher组件名保存在系统设置中。本文将从源码的角度,分析Android系统是如何处理launcher应用的启动和切换的,以及如何通过修改源码来实现设置第三方应用为默认launcher的功能。转载 2023-09-19 21:15:00 · 2059 阅读 · 1 评论 -
android去掉 原生锁屏
直接 return true。都改成 none 类型。原创 2023-09-18 23:15:00 · 474 阅读 · 0 评论 -
全网最详细的Android11.0长按power键关机流程分析
Android 原生的关机界面有两种,一种是LegacyGlobalActions中的dialog (第二张图),另一种是SystemUI中的GlobalActionsDialog(第一张图),常规情况下默认是弹出SystemUI中的关机界面,当SystemUI没有正常工作时才会弹出LegacyGlobalActions中的关机界面。power键按下的时候调用的是interceptPowerKeyDown方法。...此处省略部分代码。...此处省略部分代码。...此处省略部分代码。...此处省略部分代码。转载 2023-09-06 23:45:00 · 1306 阅读 · 0 评论 -
adb 发送 广播
adb。原创 2023-08-28 14:31:14 · 290 阅读 · 0 评论 -
Android Provision(开机向导setupwizard程序)
但是在原生的 android 系统中,这个 provision 非常的简单,只有一个空白的 activity,这个主要就是留给 厂商自己定制的(像 google 的 nexus 进行让里你登陆 google 帐号,连接WiFi等等一些功能)。之所以会关注DEVICE_PROVISIONED这个标记,是因为当用户操作完的App 的时候我设置了这个标记,等其他逻辑,导致外部程序进入的时候黑屏,为了排查原因,所以就从这入手了。这个组件只会运行一次,所以我们如果没有格式化/data目录,这个组件就会被禁止。转载 2023-05-05 20:30:00 · 1486 阅读 · 0 评论 -
Android源码 在framework中加入一张图片资源,获取不到资源文件
2.修改framework/base/core/res/res/values/symbols.xml文件,声明该图片资源。此时查看目录/out/target/common/R/com/android/internal/R.java文件,此时会看到该图片资源对应的id生成。1.将图片资源stat_notify_alarm.png拷贝到framework/base/core/res/res/drawable-hdpi下(因为本项目引用的就是hdpi下的资源)转载 2023-05-04 23:15:00 · 270 阅读 · 0 评论 -
android studio 编译出指定 app 名称
在 "build.gradle"中添加如下的代码。找到App工程目录中的"build.//指定文件名的apk。原创 2023-04-12 19:15:00 · 292 阅读 · 0 评论 -
ViewModel 的基本用法
ViewModel 应该算是Jetpack 中最重要的组件之一了。其实Android 平台上之所以会出现注入MVP、MVVM 之类的项目架构,就是因为在传统的开发模式下,Activity 的任务实在是太重了,既要负责逻辑处理,又要控制UI 提示,甚至还得处理网络回调,等等。在一个小项目中这样写或许没有什么问题,但是如果在大型项目中仍然使用这样写法的话,那么这个项目将会变得非常臃肿并且难以维护,因为没有任何架构上的划分。原创 2022-11-04 11:27:34 · 1643 阅读 · 0 评论 -
CoordinatorLayout初探
是Material Design的一个核心布局, 它能起什么作用呢?从名字上看, 它是帮我们协调子View的, 根据我们的定制要求, 帮助我们协调各个子view的布局.转载 2022-10-10 22:00:00 · 195 阅读 · 0 评论 -
Toolbar继续深入
之前我们对Toolbar的使用还是比较基础的, 实际使用中, 开发人员创建了各种不同的导航栏样式, 大大增强了个性化的体现. 我们继续了解toolbar还能做出什么花样(个性化)来.转载 2022-10-10 21:15:00 · 107 阅读 · 0 评论 -
Toolbar的使用
好, Toolbar就讲这么多, 当然功能还有很多, 比如设置subTitle, 增加自定义View, 增加收缩动画等, 在其它笔记中陆续补充.可是, 一般若是主页的话, 我们可不希望出来的是个"后退" 箭头图标, 最好是能代表HOME或者APP LOGO的图标. 我们要做如下更改.菜单里只有三项, 分别是"Backup", "Delete", "Settings", 并分别配置了图标.这个导航按钮有个固定的名称, 叫"android.R.id.home", 我们在菜单选取项上更新代码.转载 2022-10-10 20:00:00 · 917 阅读 · 0 评论 -
AudioTrack的基本使用
只支持AudioFormat.ENCODING_PCM_8BIT(8bit)和AudioFormat.ENCODING_PCM_16BIT(16bit)两种,后者支持所有Android手机。AudioManager.STREAM_SYSTEM_ENFORCED:在某些国家实施的系统声音的音频流。MODE_STREAM,需要按照一定的时间间隔,不断的写入音频数据,理论上它可以应用于任何音频播放的场景。AudioManager.STREAM_VOICE_CALL:用于电话通话的音频流。转载 2022-09-08 20:00:00 · 1213 阅读 · 0 评论 -
git stash clear后,如何找回并恢复代码
找回丢失的satsh记录,只有。按方向键↓可以查看更多更改记录。原创 2022-09-05 23:45:00 · 766 阅读 · 0 评论 -
Android 获取Local时区
【代码】Android 获取Local时区。转载 2022-09-01 21:45:00 · 1313 阅读 · 0 评论 -
UTC和GMT时间
例如,本地 (北京)时间是 0432 (凌晨四点三十二分),那么,UTC就是 0432 - 0800 = -0368,负号意味着是前一天, -0368 + 2400 = 2032,既前一天的晚上八点三十二分。例如,东八区(北京)是 +0800,西五区(纽约)是-0500,加州是西八区,是-0800,美国中部时区是西六区,-0600,美国山地时区是西七区,-0700,太平洋时 区是西八区,-0800,在夏天使用夏时制,成为-0700。那么,UTC = 本地时间(北京时间))- 0800 (2)...转载 2022-09-01 23:00:00 · 3228 阅读 · 0 评论 -
Android8.0双屏显示异常,主屏启动的Activity会显示到副屏上的问题
根据注释来看,关键就是这个moveStackAllowed了,打印log发现出现问题的时候moveStackAllowed 为true,所以会对mTargetStack 进行重新赋值的操作,在重新赋值操作过程中,由于当前topTask所在的stack是副屏的,所以会进入mService.mStackSupervisor.getNextValidLaunchStackLocked查找非-1的displayId对应的ActivityStack来赋值。转载 2022-08-25 23:15:00 · 1324 阅读 · 0 评论 -
Android 双屏异显
说明很多人有双屏异显的需求,之前我们想实现一般有两种方式.:Google自带的Presentation从5.1.1开始RK自己实现了一套双屏异显得机制其实如果用过的人都知道,方式1的局限性太大而方式2的兼容性也不是很好但是从android8.0开始,google加入了新的双屏异显机制,可以直接启动应用到副屏显示,灵活切兼容性很好.转载 2022-08-25 19:15:00 · 1622 阅读 · 1 评论 -
ubuntu sun-java6-jdk 安装
1.从Google code下载jdkhttps://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/autosetup1/jdk-6u20-linux-i586.bin2. 修改权限sudo chmod 777 jdk-6u20-linux-i586.bin3.运行安装./jdk-6u20-linux-i586.bin4.修改环境变量gedit ~/.bashrcexport JAVA_HOME=/usr/li原创 2022-07-06 19:40:31 · 476 阅读 · 0 评论 -
git拉取远程分支到本地分支
1、查看远程分支git branch -r2、拉取远程分支到本地(1)一种方法git fetch origin 远程分支名:本地分支名eg:git fetah origin DEVELOP:DEVELOP(2) 第二种方法git checkout -b 本地分支名 origin/远程分支名eg:git checkout -b develop origin/develop......原创 2022-06-24 18:15:00 · 2390 阅读 · 0 评论 -
git如何将另一个分支的指定commit合并到另一个分支
假设有一个项目存在一个主干分支和若干分支:要将master提交的某个合并到1、项目或者下载指定分支项目(如果有问题,可参考我的Git关于分支常用命令记录,切换分支、下载指定分支)2、在本地新建或切换到v2.0分支,操作如下:注意:操作之前可通过: 查看所有分支(结果如下图)注意:操作之前可通过: 查看所有分支(结果如下图)3、通过 git cherry-pick 00940ac970b9ddab63bff928479668bbfa293aaf 将另一个分支指定commit-id合并到本地分支,00940a转载 2022-06-13 20:30:00 · 3886 阅读 · 0 评论 -
CountDownLatch实现原理及使用
1.CountDownLatch工作原理 CountDownLatch在多线程并发编程中充当一个计时器的功能,并且维护一个count的变量,并且其操作都是原子操作,该类主要通过countDown()和await()两个方法实现功能的,首先通过建立CountDownLatch对象,并且传入参数即为count初始值。如果一个线程调用了await()方法,那么这个线程便进入阻塞状态,并进入阻塞队列。如果一个线程调用了countDown()方法,则会使count-1;当count的值为0时,这时候...转载 2022-03-03 21:15:00 · 3000 阅读 · 0 评论 -
Listview 多个ViewHolder实现
package com.edaixi.adapter;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.RelativeLayout;import android.widget.TextView;import com.edaixi.activity.R;import com.edaixi.dataset.MyAddressD..转载 2022-03-03 22:00:00 · 315 阅读 · 0 评论 -
App 清理后台程序
private void killAppProgress() { try { ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.AppTask> tasks = am.getAppTasks(); if (tasks != null &...原创 2022-02-28 21:15:00 · 461 阅读 · 0 评论 -
HashMap的倒序排序
public class TestShort { public static void main(String[] args) { // 需求:对hashmap的value的值的大小进行逆序排序 // 创建一个HashMap 然后填充数据 HashMap<String, Integer> oldhMap = new HashMap<>(); oldhMap.put("a", 12); oldhMap.put("b", 53); o.转载 2022-02-17 20:45:00 · 1170 阅读 · 0 评论 -
Java 集合之给ArrayList排序
Java 集合之给ArrayList排序ArrayList的排序可以借助Collections工具类的sort(List list)以及重载的sort(List list, Comparator<? super T> c)方法;其中要想使用sort(List lis)方法进行排序集合元素必须实现comparable接口中的compareTo方法;使用重载的sort(List list, Comparator<? super T> c)方法则要传入一个自定义构造器,可以使用匿名内部转载 2022-02-17 22:15:00 · 9198 阅读 · 1 评论 -
Android 设备唯一标识(多种实现方案)
前言项目开发中,多少会遇到这种需求:获得设备唯一标识DeviceId,用于:1.标识一个唯一的设备,做数据精准下发或者数据统计分析;2.账号与设备绑定;3.....分析这类文章,网上有许多资料,例如:使用IMEI、MAC等作为设备标识使用。不过,看过这些文章或者深入调研的同学应该都清楚,这些数据均存在缺陷:有的因为权限无法获取到,有的获取出来是重复的,有的完全获取不到,也就是说不能完美的解决设备唯一的问题。那么,用什么数据才能表示设备唯一呢?方案方案1:UUID + Sh转载 2022-01-18 21:30:00 · 3881 阅读 · 0 评论 -
signapk.jar 签名出错 ExceptionInInitializerError
java -jar signapk.jar platform.pk8 platform.x509.pem test.apk test_sign.apk例如出现如下错误:Exception in thread "main" java.lang.ExceptionInInitializerError at org.conscrypt.OpenSSLBIOInputStream.<init>(OpenSSLBIOInputStream.java:34) at org.c...原创 2021-11-22 19:10:39 · 838 阅读 · 0 评论 -
Android GMS (谷歌移动服务)
GMS全称为GoogleMobile Service,即谷歌移动服务。GMS是Google开发并推动Android的动力,是谷歌程序运行的基础。1.基本介绍GMS提供有GooglePlay、Search、Search by Voice、Gmail、Contact Sync、Calendar Sync、Talk、Maps、Street View、YouTube、Android Market等服务,GMS为安卓上的谷歌公司系列应用提供支持对于安卓来说它是Android设备配置服务的一项。2.转载 2021-10-13 19:30:04 · 5230 阅读 · 1 评论 -
Android小窗口模式,picture-in-picture(PIP画中画)的使用
1.介绍Android8.0的时候推出了画中画模式,可以让Activity缩小显示在其他Activity上方。当初我维护的项目本身自己实现了这个功能,Android加入画中画之后两个功能并行,互相交互的时候出了一大堆问题。现在几乎所有的视频软件都加入了这个功能。使用方法十分简单,但是需要处理好AudioFocus的问题。2.参数介绍在Android 8.0时候,只需要调用Activity的enterPictureInPictureMode();或者enterPictureInPict.转载 2021-10-10 17:37:32 · 5476 阅读 · 4 评论 -
error: inflate: data stream error (incorrect data check)
giterror: inflate: data stream error (incorrect data check)fatal: serious inflate inconsistencyfatal: index-pack failed原创 2021-10-08 19:42:12 · 2993 阅读 · 0 评论 -
RelativeLayout view 设置 为 gone 界面错乱
在使用相对布局是,当我的一个参照控件处于gone状态时另外一个控件如需参照处于gone的那个控件需添加android:layout_alignWithParentIfMissing="true"原创 2021-10-08 19:30:59 · 516 阅读 · 0 评论 -
相对布局 设置 gone 之后界面错乱
在使用相对布局时,A组件参考B 组建的id,当 B 组建 gone 时 A 组件可能错乱,这个时候需要设置 B 组建属性android:layout_alignWithParentIfMissing="true"原创 2021-09-28 18:48:40 · 347 阅读 · 0 评论 -
Java 复制大文件方式(nio2 FileChannel 拷贝文件能力测试)
目前为止,我们已经学习了很多 Java 拷贝文件的方式,除了 FileChannel 提供的方法外,还包括使用 Files.copy() 或使用字节数组的缓冲/非缓冲流。那个才是最好的选择呢?这个问题很难回答,因为答案基于很多因素。本文将目光集中到一个因素,那就是速度,因为拷贝任务 越快将会提高效率,在有些情况下,这是成功的关键。因此,本文将使用一个应用程序来比较下面这些拷贝方式的具体时间:FileChannel 和非直接模式的 ByteBuffer FileChannel 和直接模式的 ByteBu转载 2021-09-22 19:54:32 · 635 阅读 · 0 评论 -
TextView getLinesCount的值为0
有的时候在 某些流程函数中获取 TextView 的 行数获取不到,是因为这个时候,view 还没有得到渲染,所以获取不到数值.我们可以采用 延时获取的方法来解决:TextView mTextView ;代码省略``````mTextView.post(new Runnable() { @Override public void run() { if(mTextView.getLineCount() == 1){ //t...原创 2021-09-15 19:19:25 · 345 阅读 · 0 评论