Android
文章平均质量分 63
Ang_qq_252390816
这个作者很懒,什么都没留下…
展开
-
Android ViewBinding和DataBinding功能作用区别
总结一下:ViewBinding 主要用于更轻松地访问视图,提高代码的可读性和性能。DataBinding 更进一步,不仅可以访问视图,还可以将数据与视图建立绑定关系,实现数据和 UI 的双向同步。你可以根据项目需求和复杂性来选择使用 ViewBinding 或 DataBinding,如果你只需要简化视图绑定,使代码更整洁,并不需要高级的数据绑定功能,那么 ViewBinding 是一个很好的选择。原创 2023-10-14 14:22:22 · 677 阅读 · 0 评论 -
Retrofit com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept
如果Android端发现不了问题,可以把Retrofit接收端的接口返回数据改成ResponseBody对象这样不管接口返回什么样的数据,都可以解析得到,不会报错了,然后可以根据数据生成具体的对象;比如接口报错返回一个Html,而且Retrofit请求接口方法,数据要解析成List格式的数据;2,如果是已在使用的接口,需要确认一下接口返回来的数据是否有变化;1,如果刚开始调试接口,那就是Android端和服务端没有约定好接口返回的数据格式;原创 2022-10-24 18:21:53 · 3735 阅读 · 0 评论 -
使用QFIL升级高通芯片的Android系统
7,回到QFIL软件,Select Programmer项点击Browse...,选择上一步解压好的升级包,找到prog_emmc_firehose_8909_ddr.mbn 即.mbn结尾的文件;10,如果点击Download之后出现升级出现异常:Android板断电,重启Android板设备,与之相连线也拔掉,QFIL软件也重新打开;9,把视线转移到SC806 Android板子,按住FORCE_BOOT(强刷键)按键之后同时在按住POWER键,然后点击QFIL升级工具中的Download。原创 2022-09-28 11:20:00 · 5086 阅读 · 0 评论 -
mmm找不到问题
Android源码编译原创 2021-12-30 19:07:12 · 1020 阅读 · 0 评论 -
Android TextToSpeech TTS中文文本转语音(语音合成)
简介TTS即从文本到语音(TextToSpeech)一,使用第三方提供的SDK或者API,例如:科大讯飞,百度,阿里等;二,使用Android系统自带的API :TextToSpeechTextToSpeech中的API文档(官方):TextToSpeech | Android Developers,记录各个方法,变量,常量详细介绍;三,TextToSpeech的使用如下代码是做了简单封装;public class TTSUtils extends UtterancePro..原创 2021-11-09 20:19:53 · 11340 阅读 · 0 评论 -
Android 配置NCNN环境
NCNN简介ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。Android环境配置以编译运行官方SqueeZenet Demo为例,使用NCNN 所需要的AndroidStu原创 2021-10-25 00:03:27 · 1595 阅读 · 2 评论 -
创建签名文件jks 乱码
乱码问题生成签名文件的时出现乱码:JKS ��Կ��ʹ��ר�ø�ʽ������ʹ�� "keytool -importkeystore -srckeystore ??.jks -destkeystore **.jks -deststoretype pkcs12" Ǩ�Ƶ���ҵ����ʽ PKCS12��;正确提示:Warning:JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore C:\Users\xxxx\Desktop\原创 2021-07-25 23:26:55 · 2472 阅读 · 0 评论 -
ArrayAdapter使用自定义布局
关键代码ArrayAdapter cuisine = new ArrayAdapter(getActivity(), R.layout.listview_cook_cuisine,R.id.tv_cuisine_item, Arrays.asList(getResources().getStringArray(R.array.cook_cuisine_type)));listview.setAdapter(cuisine);layout布局xmlns:android="http://sche原创 2021-07-18 18:22:25 · 817 阅读 · 2 评论 -
如何判断APP在不同Android设备中加载的资源文件是那个限定符文件夹下的
以下以图片资源为例,因为一般涉及到图片适配,所以出现图片显示异常,可以查看图片是加载的那个资源文件夹下的来判断是什么问题;前提是这张图片是放在项目中;public void click(View view) { String name = (String) getText(R.drawable.ui1); String name2 = getResources().getString(R.drawable.ui1); Log.d(TAG, " name:" + name + "原创 2021-07-04 14:25:58 · 1567 阅读 · 1 评论 -
Android Java代码调用Python代码
一,通过CLE实现CLE官网http://www.srplab.com/cn/files/products.html下载1,打开官网下载Android平台对应的download和android.python.x.x.x版本,这两个都要下载;2,download下的文件提供了不同API平台使用的.so库(例如:armeabi下的libstar_java.so,libstar_python.so,libstarcore.so,libstarpy.so,也就是出libpython3.9..原创 2021-06-27 17:34:46 · 6975 阅读 · 14 评论 -
Android 用字符串资源名称获取int型资源id的几种方式
前言有时候我们需要根据资源文件名来获取整型的资源id,比如我有资源名为ui1~ui13的10张图片,想通过图片名称动态加载某张资源图片,这时就需要把图片名称转换成图片资源的id加载图片,具体可以看代码更清晰;点击一下切换下一张图片private int n = 2;public void click(View view) throws IllegalAccessException {if (n > 13) {n = 1;}String imgName = "ui" +原创 2021-06-11 20:45:50 · 2231 阅读 · 4 评论 -
自定义BaseAdapter如何重写getItem和getItemId
在自定义BaseAdapter的时候经常忽略getItem()和getItemId()两个方法,最近在使用Spinner实现下拉框的时候配和BaseAdapter实现自定义布局;但是按常规方法不重写getItem()和getItemId(),也就是默认的写法导致出现了一些问题;所以这里研究了一下BaseAdapter的源码;这两个方法的getItem() 获取与数据集中指定位置关联的数据项getItemId() 获取与列表中指定位置关联的行ID一般自定义BaseAdapter(对BaseAd原创 2021-06-05 17:33:19 · 1037 阅读 · 0 评论 -
Android Spinner实现下拉框几种方式及配合BaseAdapter实现自定义布局
前言本案例以一个Activity中显示XML布局中引入的Spinner控件为基础;一,常规使用这里的常规使用在Xml布局文件中为Spanner提供静态数据;引入Spinner控件的Activity布局文件如下xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"andr原创 2021-06-01 00:34:15 · 4117 阅读 · 12 评论 -
ninja: build stopped: subcommand failed. build/core/ninja.mk:158: recipe for target ninja_wrapper
前言编译Android源码的时候报的错误信息,具体信息如下:[ 0% 6/24270] Ensure Jack server is installed and startedFAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 2>&原创 2021-05-16 22:08:19 · 2654 阅读 · 0 评论 -
监听App安装、卸载的系统广播
关于监听Android中Apk的卸载安装的广播主要分两种来讲,主要分为Android8.0之前的和Android8.0之后的版本,主要是还是因为Android8.0性特性引起的;第一种:Android 8.0之前的老系统版本,直接注册静态广播接受者即可实现;新建广播接受者PackageInstalledReceiver:public class PackageInstalledReceiver extends BroadcastReceiver { private static原创 2021-05-14 20:22:59 · 4418 阅读 · 15 评论 -
如何查看Android可执行的Linux命令
前言有时候通过adb shell进入Linux,去执行一些命令Linux的命令时,有些无法执行,被Android系统阉割掉了这些命令,所以遇到这种无法运行或者找不到情况,需要查看一下这台Android设备都有哪些命令可用或者说可执行;不同的Android设备可用的命令不一定相同;正文具体怎么查找呢?具体操作步骤如下:1,adb shell 进入Linux内核,这样就可以执行Linux部分命令;2,执行cd system/bin,进入system/bin目录,因为Android系统二进原创 2021-05-09 20:51:18 · 619 阅读 · 0 评论 -
DataBinding — Jetpack套件之一
简介DataBinding 是实现视图和数据双向绑定的工具,是Jectpack套件中的一个库;使用DataBinding可以省略重复的代码,例如findViewById()、setText()、setOnClickListener()等等;启用DataBinding如果在项目中要使用DataBinding,需要在module下的build.gradle中配置android { // ... dataBinding { enabled = true }原创 2021-04-17 22:35:12 · 245 阅读 · 2 评论 -
TabLayout tab点击事件几种实现方式
一,简介TabLayout是Android的Design库中的控件,常用于导航栏的实现;常用组合一般TabLayout结合ViewPager+Fragment的使用实现滑动的标签(头部导航栏或者标签栏)选择器。这篇不讲具体使用,主要讲如何单独监听每个tab的点击事件;二,单独监听每个tab的点击事件目前亲测的有两种:2.1,单独使用TabLayout,代码中动态设置TabLayout的tab,然后为每个Tab单独设置点击事件;xml布局<?xml version="1.0" en原创 2021-03-14 18:56:32 · 5524 阅读 · 0 评论 -
Android 多种限定符
Android限定符Android 项目给res目录中的子目录加上“-限定符”,可以给不同设备提供不同的资源以及布局。屏幕限定符宽高度限定符(Android3.2之后引入)最小宽度限定符 :sw<N>dp例如:sw600dp, sw720dp屏幕可用宽度 :w<N>dp例如:w720p,w1024p屏幕可用高度:h<N>dp例如:h720dp,h1024dp屏幕特性限定符(Android3.2之前引入)这个一般做屏幕适配用.原创 2021-01-31 18:02:09 · 2347 阅读 · 4 评论 -
Android 集成Xposed框架
前言Xposed(框架)Xposed框架(Xposed Framework)是一套开源的、在Android高权限模式下运行的系统框架服务,可以在不修改APK文件的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块或插件。XopsedInstall是管理和安装Xposed框架及Xposed模块或者插件的应用工具(apk);注意:要区分Xposed和XposedInstall的概念;Xposed及XposedInstallhttps://github.com原创 2020-12-25 20:58:49 · 4191 阅读 · 2 评论 -
Android MQTT实现消息推送【Paho】
简介MQTT:全拼是Message Queuing Telemetry Transport,即:消息队列遥测传输协议;MQTT是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议族上,由IBM在1999年发布。官方文档MQTT官网:http://mqtt.org/MQTT介绍:http://www.ibm.comPaho Android客户端页面:https://www.eclipse.org/paho/clients/andr原创 2020-12-09 20:35:53 · 3392 阅读 · 0 评论 -
Android 代码模拟物理按键的几种方式
一,通过AccessibilityService实现简介AccessibilityService其实是一个Servic,使其子类;设计AccessibilityService的初衷在于帮助残障用户使用android设备和应用,在后台运行,可以监听用户界面的一些状态转换,例如页面切换、焦点改变、通知、Toast,自动安装APP等模拟操作(你能做的他都能),辅助用户操作、发音(本意是这样的)等,并在触发AccessibilityEvents时由系统接收回调。后来被开发者另辟蹊径,用于一些插件开发,比如微原创 2020-11-19 21:03:51 · 6701 阅读 · 6 评论 -
StackOverflowError(栈溢出)和OutOfMemoryError(内存溢出)及MemoryLeak(内存泄漏)
虚拟机栈和本地方法栈都会出现StackOverflowError和OutofMemoryError,虚拟机栈、堆、方法区都有可能发生OutofMemoryError;MemoryLeak不会抛异常,不属于Java异常(不是Throwable的子类),虚拟机栈和本地方法栈都是线程私有数据区;堆和方法区是线程间共享数据区;StackOverflowError栈溢出每一个 JVM 线程都拥有一个私有的 JVM 线程栈,用于存放当前线程的 JVM 栈帧(包括被调用函数的参数、局部变量和返回地址等)。原创 2020-11-09 09:34:29 · 1604 阅读 · 0 评论 -
App静默安装(升级)和卸载
安装或升级普通安装或升级 调用系统API,通过Intent启动com.android.packageinstaller(PackageInstaller.apk)系统app进行安装或升级;需要用户同意,并且有前台界面;查看PackageInstaller在系统的存放位置:adb shell pm list packages -f com.android.packageinstaller...原创 2019-12-08 21:05:22 · 5181 阅读 · 1 评论 -
Java和Android commons-codec使用及NoSuchMethodError问题
简介Commons codec,是Apache开源组织提供的用来处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64,URL,Soundx等等。不仅是编码,也可用于解码。常用类及功能1、Base64编码和解码 2、Hex编码和解码 3、MD5加密(MD5是不可逆算法,只能加密) 4、SHA加密 5、Metaphone和Soundex 六、URLCodec源码地址https://commons.apache.org/proper/commons-codec/dow..原创 2020-09-24 20:08:27 · 1217 阅读 · 0 评论 -
Android Jetpack Navigation组件使用,跳转,传参,action,回退,动态加载等
简介Navigation是Jetpack组件库的一部分,于2018年推出;主要用于Fragment的管理,及之间的跳转等,使单Activity架构更简单;使用条件AndroidStudio版本需3.2及以上版本module下的build.gradle添加依赖,根据自己项目的语言选择性添加依赖;dependencies { def nav_version = "2.3.0" // Java language implementation implementation "an原创 2020-09-20 23:06:52 · 5960 阅读 · 0 评论 -
Android SQLite数据库的创建及两种方式实现增删改查
SQLite也是使用SQL语句,操作数据库的;也是关系型数据库的一种;特点:运算速度快,占用资源少;创建SQLiteOpenHelperAndroid使用SQLite数据库,就必须继承SQLiteOpenHelper,而且必须实现三个方法,这三个方法缺一不可,是固定的形式;一个是构造函数(四个参数的构造),onCreate,onUpgrade;public class DBHelper extends SQLiteOpenHelper { public DBHelper(@Nul原创 2020-09-25 22:15:25 · 5512 阅读 · 0 评论 -
Android WebView清除缓存,总有一个方法适合你
缓存介绍缓存分为:页面缓存和数据缓存页面缓存: 指加载一个网页时的html、JS、CSS等页面或者资源数据。数据缓存 : 数据缓存分为AppCache和DOM Storage两种。一般清除指的是数据缓存;注意:以下清理缓存的方法,没有区分是那种缓存;清除数据库缓存context.deleteDatabase("webview.db");context.deleteDatabase("webviewCache.db");清楚历史webView.clearHistor原创 2020-05-31 21:25:52 · 14717 阅读 · 0 评论 -
Android中Theme主题和Style样式使用介绍总结
一,Theme主题1.1,Theme主题作用范围Theme主要是针对应用级别的或者说窗体级别,可以设置应用主题(应用换肤效果)或者Activity的主题;主题是不能应用在某一个单独的View中;1.2,Theme主题的定义在AS中res/values/style.xml中定义,例如新建项目AS自动创建的Theme,是系统提供;<!-- Base application ...原创 2020-04-06 21:30:09 · 17776 阅读 · 0 评论 -
Android API版本对应Android系统版本及内核版本和代号
Android简介:Android 移动操作系统 的版本历史 始于2007年11月5日公开发布的Android Beta。第一个商业版本Android 1.0于2008年9月23日发布。Android由Google和Open Handset不断开发Alliance(OHA),并且自初始版本以来已经对其基本操作系统进行了多次更新。正文:Api Level 系统版本 代号 ...原创 2020-04-06 18:20:16 · 6651 阅读 · 2 评论 -
Android 手机存储及路径
Android手机存储分类分为:内部存储和外部存储如何区分内部存储和外部存储:可以从物理和逻辑区分从物理的角度区分,内部存储就是手机自带存储空间,外部存储就是外部接入的存储空间例如SD卡从逻辑意义上区分,data,system 目录就是手机的内部存储,而 mnt 或者 storage目录下的sdcard0指向的sdcard目录就是外部存储。如果是手机自带的外部存储被称为机身外部存储...原创 2019-11-28 00:00:03 · 33466 阅读 · 0 评论 -
Android系统目录结构及常用命令
Android目录结构注意和Android源代码目录结构区分;Android目录结构说的是Android手机中的系统目录结构例如:荣耀P8手机的系统目录结构data data:安装的应用的内部存储所在位置 system:packages.list,packages.xml(除了系统定义的权限之外,还可能有第三方应用自定义的权限,注意和etc下的platf...原创 2019-11-24 23:02:31 · 3572 阅读 · 1 评论 -
AndroidManifest 所有uses-feature
一,语法:<uses-feature android:name="string" //例如:android.hardware.bluetooth android:required=["true"|"false"] android:glEsVersion="integer"/><uses-feature>是声...原创 2019-05-18 15:15:01 · 1636 阅读 · 0 评论 -
android板子几种调试方式
简介Android板子一般都是裸板,也有加了工业外壳的,一般都是有root权限;主要通过串口控制硬件的比较多(例如:智能售货机,礼品机等)调试方式一,通过常规的手机数据线(micro usb,或者Type-C)连接到Android板,使用adb调试; 1.1,也可以把设备通过WiFi连接到和PC同一个局域网内,通过adb调试;二,PC端的SecureCRT软件工具通过...原创 2018-11-01 17:40:57 · 6925 阅读 · 0 评论 -
android CPU主流架构和对应的ABI类型
一,ABI简介不同的Android 手机使用不同的CPU,而不同的CPU 支持不同的指令集。CPU 与指令集的每种组合都有专属的应用二进制接口,即ABI。ABI 可以非常精确地定义应用的机器代码在运行时如何与系统交互。但必须为app要使用的每个CPU 架构指定ABI。典型的ABI 包含以下信息:机器代码应使用的CPU 指令集。运行时内存存储和加载的字节顺序。可执行二进制文件(例如程...原创 2019-09-10 23:40:41 · 5691 阅读 · 0 评论 -
android 开机自启APP及启动失败
方法:监听开机广播,在BroadcastReceiver中自启APP;具体实现:1,在项目的清单文件AndroidManifest中配置receiver标签,在intent-filter标签中配置要接受的action标签,开机广播action的name属性值为android.intent.action.BOOT_COMPLETED;//接收开机广播<receiver...原创 2019-01-16 11:43:34 · 4281 阅读 · 0 评论 -
WebView屏蔽长按出现的复制 分享 全选等ActionMode按钮
问题:WebView中点击长按。出现ActionMode的UI(有复制、分享、全选、搜索按钮),具体如下图:解决办法:消费掉WebView的长按事件webview.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(Vie...原创 2019-01-19 18:25:10 · 5235 阅读 · 0 评论 -
AndroidStudio中引入framework.jar以及出现的异常
摘要 物联网项目(控制版是Android系统)中要是用IPackageInstallObserver、 IPackageDeleteObserver这两个接口实现静默升级;由于这两个接口系统对外隐藏了API;所以无法使用,需要板子厂家在系统源码中编译出framework.jar;1,把framework.jar 复制到Androidstudio项目目录的libs文件夹下;鼠标点击右键,选择...原创 2019-01-08 18:08:27 · 5507 阅读 · 2 评论 -
EventBus 接收端收不到事件
一,简单使用1.在build.gradle(Module:app )引入EventBus//引入Eventbusimplementation 'org.greenrobot:eventbus:3.1.1'2.在需要接受EventBus事件的Activity或者其他组件中注册和解除注册(以Activity为例) //注册 @Override protect...原创 2018-11-13 20:31:45 · 14396 阅读 · 1 评论 -
Glide4 设置默认图片和错误图片,即设置占位图
一,设置占位图: RequestOptions options = new RequestOptions() .placeholder(R.drawable.img_default)//图片加载出来前,显示的图片 .fallback( R.drawable.img_blank) //url为空的时候,显示的图片 ...原创 2018-11-10 18:01:55 · 15447 阅读 · 0 评论