
Android精华教程
guodashen007
向阳编程工作室
展开
-
安卓权限检测
【代码】安卓权限检测。原创 2024-09-25 09:07:24 · 169 阅读 · 0 评论 -
安卓重启adb
重启adb原创 2023-02-15 17:56:19 · 463 阅读 · 0 评论 -
OKhttp上传图片视频
OKhttp上传图片视频原创 2022-08-18 21:51:08 · 533 阅读 · 0 评论 -
Tesseract4Android
Tesseract4Android文字提取原创 2022-08-13 23:08:47 · 1074 阅读 · 0 评论 -
安卓副屏开发Presentation
通过源码可得知 public class Presentation extends Dialog,Presentation继承于dialog,依托于Activity存在新建一个Presentationpublic class DifferentDislay extends Presentation { public static CameraPreview cameraView2; private Context mContext; private Activity mA原创 2022-04-27 10:30:33 · 1058 阅读 · 0 评论 -
安卓通过反射找Activity
try { Class activity = getClassLoader().loadClass("com.huax.basemodel.MainActivity"); Intent intent = new Intent(this, activity); startActivity(intent); } catch (ClassNotFoundException e) { .原创 2021-12-31 14:10:53 · 1927 阅读 · 2 评论 -
adb 返回上一页
打开系统设置界面adb shell am start -n com.android.settings/.Settings返回上一个界面adb shellinput keyevent BACK原创 2021-12-27 17:02:40 · 3431 阅读 · 0 评论 -
安卓姓名脱敏
姓名脱敏原创 2021-12-24 16:26:43 · 1608 阅读 · 0 评论 -
安卓利用fat-aar打包含有第三方aar的model
fat-aar.gradle是什么?在做android应用程序开发时,我们一般都会构建多个模块,来达到解耦的目的,但是有的需求是需要我们提供一个依赖库给外部使用,这时候就遇到一个问题:多个module确实达到了解耦的目的,同时也意味着对外提供依赖库时要提供多个aar,一个依赖module对应一个aar。fat-aar 的功能简单来说就是让你能够合并和插入各种依赖到一个aar中。项目地址:https://github.com/adwiv/android-fat-aar导入方式:// 配置fa原创 2021-12-22 16:55:02 · 3691 阅读 · 0 评论 -
mergeDebugJavaResource解决办法
mergeDebugJavaResource意思就是jar包冲突,建议Adding a packagingOptions,5 files found with path 'META-INF/INDEX.LIST' from inputspackagingOptions { exclude 'META-INF/INDEX.LIST' ex...原创 2021-12-15 10:42:50 · 4247 阅读 · 0 评论 -
Android检测网络状态&监听网络变化
网络状态改变、用户信息改变(帐户的钱),第一时间就要想到用观察者模式来实现广播接收者,简单地把网络的变化通过接口抛出去package com.qkt.face.et.receiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.原创 2021-12-14 11:06:33 · 15267 阅读 · 3 评论 -
Android TV 遥控器切换主副屏
private final List<CameraPreviewHolder> cameraPreviewHolderList = new ArrayList<>(2);cameraPreviewHolderList.get(1).toSecondary();//用较小尺寸创造副屏public boolean onKeyDown(int keyCode, KeyEvent event) { AppLogger.e("keyCode=" + keyCode +.原创 2021-11-05 15:36:21 · 1847 阅读 · 0 评论 -
byte转Bitmap
public static Bitmap byteToBitmap(byte[] imgByte) { InputStream input = null; Bitmap bitmap = null; BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 1; input = new ByteArrayInputSt.原创 2021-11-05 15:28:02 · 2534 阅读 · 0 评论 -
Android修改整个APP字体
1下载ttf字体到assets下2Application的oncreate()通过反射方法中修改APP默认字体 @Override public void onCreate() { super.onCreate(); replaceSystemDefaultFont(this); } public void replaceSystemDefaultFont(Context context) { //這里我们..原创 2021-10-28 16:38:34 · 2111 阅读 · 0 评论 -
Gson解析
// 使用new方法Gson gson = new Gson(); // toJson 将bean对象转换为json字符串String jsonStr = gson.toJson(user, User.class); // fromJson 将json字符串转为bean对象Student user= gson.fromJson(jsonStr, User.class); // 序列化ListString jsonStr2 = gson.toJson(list); // 反序列化成L.原创 2021-10-21 15:15:38 · 106 阅读 · 0 评论 -
EventBus原理
1、在register的时候,Eventbus类通过反射的方式,获取注册对象的所有带有@Subscribe注解的接收方法,不能是static和非public的,同时数据参数只有一个, 然后放到一个列表中。(如果在类中找不到接收方法,将会报异常)2、发消息的地方,post方法,通过PostingThreadState 进行消息的分发,分发消息就是查找列表中是否有符合参数要求的对象,然后通过反射的消息,invoke调用对应对象的方法。3、在postToSubscription方法中,会区分事件的类型..原创 2021-09-14 14:30:44 · 319 阅读 · 0 评论 -
安卓Room数据库的使用
创建实体类加入依赖implementation "android.arch.persistence.room:runtime:1.0.0"annotationProcessor "android.arch.persistence.room:compiler:1.0.0"创建实体类@Entitypublic class Word { // 实体类 @PrimaryKey(autoGenerate = true) // 设置主键,并且自动生长 private int i.原创 2021-08-07 11:37:17 · 305 阅读 · 0 评论 -
安卓策略模式
public interface FuGuiDoorInterface { /** * 获取门状态 * @param type 门号 * @return 门状态 */ String getDoorState(String type);}public class FuGuiManager { /** * iot门的实例接口 */ private FuGuiDoorInterface mFuGuiDoorI.原创 2021-07-19 15:01:35 · 164 阅读 · 0 评论 -
Rxjava编写安卓倒计时
//验证码倒计时 private void initRxTimer() { final int count = 60; //倒计时时间 Observable mObservable = Observable.interval(0, 1, TimeUnit.SECONDS)//设置0延迟,每隔一秒发送一条数据 .take(count + 1)//设置循环次数 .subscribeOn(Scheduler..原创 2021-04-30 16:14:40 · 262 阅读 · 1 评论 -
edittext遮挡键盘
配置文件添加:windowSoftInputMode=”adjustResize”但是如果设置了沉浸式标题,还需要在布局文件的根节点上加上即可android:fitsSystemWindows=”true”原创 2021-03-30 18:23:44 · 122 阅读 · 0 评论 -
观察者模式实现Activity与Fragment之间通信
Activity中定义被观察的数据: private class ClearShopCarObservable extends Observable { public void postMessage(Object eventtype) { setChanged(); notifyObservers(eventtype); } }private ClearShopCarObservable clearShop.原创 2021-03-01 11:55:23 · 172 阅读 · 0 评论 -
单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。1,饿汉模式public class Single { //构造方法私有 private Single(){}; private static Single instance =new Single(); //对外提供唯一访问 public static Single getInstance(){ return instance; }}这种方法在类加载时初始化,类原创 2021-02-18 14:56:30 · 160 阅读 · 2 评论 -
Android Jetpack架构组件(一)带你了解Android Jetpack
前言Android已经发展了11年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了MVP和MVVM相关的官方例子,效果很一般,而且覆盖面只是在架构上,Goole I/...转载 2021-02-19 10:12:23 · 551 阅读 · 0 评论 -
安卓禁止录屏和截屏
我们在看一些精彩图片或直播的时候,有时候想要截个屏或者录屏,但是会提示无法抓取屏幕截图,录像也是黑的,那是怎么做到的呢,其实很简单一行代码:getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);...原创 2021-02-18 11:17:21 · 2392 阅读 · 3 评论 -
开启定位权限还是定位失败
1.除了要开启定位权限,还要开启定位服务,也就是手机设置里面的位置信息,安卓9以前都是默认开启的,安卓10以后放到桌面下拉框了,如果位置信息没有开启,也是没办法定位的2.1判断手机定位服务是否开启 /** * 判断定位服务是否开启 * * @param context 上下文 * @return true:开启;false:未开启 */ public static boolean isLocationEnable...原创 2021-02-18 11:11:27 · 8578 阅读 · 0 评论 -
Gradle依赖之‘五种依赖配置’
目前gradle支持的依赖配置有五种,分别是implementation,api,compileOnly,runtimeOnly和annotationProcessor。常用的依赖配置是implementation, api和compileOnly。第一种:implementation会将指定的依赖添加到编译路径,并且会将该依赖打包到输出,如apk中,但是这个依赖在编译时不能暴露给其他模块,例如依赖此模块的其他模块。这种方式指定的依赖在编译时只能在当前模块中访问。当前项目中有两个模块app和de原创 2021-01-21 15:51:17 · 2798 阅读 · 0 评论 -
Kotlin 的?和!!
Kotlin有针对Java的NullPointerException管理,kotlin开发中也会有很多?和!!出现? 表示当前对象可以为空,即可以= null !! 表示当前对象不为空的情况下执行原创 2021-01-15 18:32:09 · 120 阅读 · 0 评论 -
安卓滚动标题置顶
效果就是这样,原理很简单如图,其实页面上有两个相同布局的标题,吸顶标题默认隐藏,然后监听ScrollView滚动的高度Y,当滚动的高度Y大于内容1的高度,吸顶标题显示,反之,隐藏吸顶标题。这样从视觉效果上看,标题具有吸顶效果。<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:la..原创 2021-01-15 18:29:53 · 290 阅读 · 0 评论 -
NestedScrollView嵌套LinearLayout布局不能撑满全屏的问题
当ScrollView里的元素想填满ScrollView时,使用"fill_parent"或者"match_parent"是不管用的,必需为ScrollView设置:android:fillViewport="true"。当ScrollView没有fillViewport=“true”时, 里面的元素(比如LinearLayout)会按照wrap_content来计算(不论它是否设了"fill_parent"或者"match_parent"),而如果LinearLayout的元素设置了f...原创 2021-01-09 09:16:45 · 1434 阅读 · 0 评论 -
Android自定义捕获全局异常
package com.scott.crash; import java.io.File;import java.io.FileOutputStream;import java.io.PrintWriter;import java.io.StringWriter;import java.io.Writer;import java.lang.Thread.UncaughtExceptionHandler;import java.lang.reflect.Field;import java..原创 2021-01-03 17:31:50 · 552 阅读 · 0 评论 -
Android bitmap与Base64的转换
使用json通讯时需要将图片资源转为字符串/* * bitmap转base64 * */ private static String bitmapToBase64(Bitmap bitmap) { String result = null; ByteArrayOutputStream baos = null; try { if (bitmap != null) { bao原创 2020-12-01 15:22:11 · 1594 阅读 · 2 评论 -
SocKet通信写简单聊天程序
实现流程:服务端package com.jzj.socket;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.InetAddress;import java.net.Socket;/** * Socket收发器 通过Socket发送数据,并使用新线程监听Socket接收到的数据 * * @author ...原创 2020-05-28 15:28:36 · 2165 阅读 · 0 评论 -
Android柱状图
先来看效果MPAndroidChart在github上地址:https://github.com/PhilJay/MPAndroidChart1. 依赖:Project 的build.gradle文件中添加Project 的build.gradle文件中添加 allprojects { repositories { maven { url '...原创 2020-05-07 16:16:27 · 4107 阅读 · 2 评论 -
Android 使用手机NFC的读取NFC标签数据
nfc过滤标签的设置1 在Manifest添加权限:在xml里添加nfc的使用权限 1 <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.NFC" />这...原创 2020-04-28 18:20:49 · 12025 阅读 · 3 评论 -
retrofit
@Headers({"Content-type:application/json;charset=UTF-8"}) @POST("sys/login") Observable<BaseObjectBean<LoginBean>> sysLogin(@Body UserBean userBean); /** * 用户登录 ...原创 2020-04-13 09:33:51 · 281 阅读 · 0 评论 -
安卓拦截返回按钮
@Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK ) { //do something. return true; } else { ...原创 2020-04-02 11:32:47 · 454 阅读 · 0 评论 -
AndroidAutoSize 今日头条屏幕适配方案终极版
AndroidAutoSize屏幕适配框架AndroidAutoSize是根据今日头条屏幕适配方案优化的。配置第三方远程依赖<!--私有依赖-->implementation 'me.jessyan:autosize:1.1.2'<!--共有依赖-->api 'me.jessyan:autosize:1.1.2'使用以及功能介绍Andro...原创 2020-03-30 18:41:00 · 2726 阅读 · 2 评论 -
Activity跳转时的生命周期
2020-03-29 10:48:11.748 8812-8812/? I/ActivityA: onCreate called.2020-03-29 10:48:11.758 8812-8812/? I/ActivityA: onStart called.2020-03-29 10:48:11.762 8812-8812/? I/ActivityA: onResume called.20...原创 2020-03-29 10:50:35 · 220 阅读 · 0 评论 -
安卓Thred暂停继续
package com.example.wangjun.myapplication;import android.util.Log;public class MyThread extends Thread { private final Object lock = new Object(); private boolean pause = false; /*...原创 2020-03-27 14:17:09 · 159 阅读 · 0 评论 -
Android屏幕适配
前言网上关于屏幕适配的文章已经铺天盖地了,为什么我还要讲?因为网上现在基本都是使用 屏幕分辨率限定符 进行适配,即每种屏幕分辨率的设备需要定义一套 dimens.xml 文件。由于不同分辨率的设备太多了,而且有些设备还有虚拟按键(例如华为手机),这样就还需要每个有虚拟按键的设备加多一套 dimens.xml 文件,再加上平板那些你会发现 dimens.xml 文件所占的体积已经超过2M了!这绝...转载 2020-03-27 14:16:23 · 651 阅读 · 0 评论