- 博客(211)
- 资源 (22)
- 收藏
- 关注
原创 【图文详解】Android Studio(新版本) 配置OpenCV库,解决出现的各种问题
按照顺序走解决报错问题,如果是人脸识别还需要添加jni。
2024-01-03 17:13:22
636
原创 mvc 跟mvp 和mvvm的区别
总的来说,MVC模式是传统的模式,MVP模式在MVC的基础上引入了Presenter来分离视图和模型的交互,MVVM模式在MVP的基础上引入了ViewModel来进一步减少视图和模型之间的耦合度。MVC(Model-View-Controller),MVP(Model-View-Presenter)和MVVM(Model-View-ViewModel)都是软件架构模式,用于将应用程序的不同组成部分分离开来,以便更好地组织和管理代码。这种模式使得视图和模型之间的耦合度更低,同时也减少了大量的样板代码。
2023-10-24 11:45:19
678
转载 Kotlin协程的简单用法:1、GlobalScope(不建议使用);2、lifecycleScope、viewModelScope(建议使用);
1、协程(Coroutine)协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程。协程就像轻量级的线程。线程由系统调度,协程由开发者控制。kotlin协程本质上是对线程池的封装协程通过将线程切换的复杂性封装入库来简化异步编程。程序的逻辑可以在协程中顺序地表达,而底层库会为我们解决其异步性。2、GlobalScope(不建议使用);
2023-07-12 16:30:49
944
原创 Android Handler被弃用,那么以后怎么使用Handler,或者类似的功能
该主线程将 UI 事件或消息收集到队列 ( MessageQueue) 中,然后使用Looper类的实例对其进行处理。简要说就是如果在实例化Handler的时候不提供Looper, 可能导致操作丢失(Handler 没有预估到新任务并已退出)、App崩溃的bug(Handler有时候创建一个线程,但没有运行的Looper),亦或者race情况下,造成处理错误。Android API30左右,Android应用在使用传统写法使用Handler类的时候会显示删除线,并提示相关的方法已经被弃用,不建议使用。
2023-07-10 14:35:31
985
原创 Android Studio 使用WIFI调试adb (2种方法)
然后去环境变量里增加变量在CMD中输入命令adb version 如果出现这样就代表配置成功2、准备连接1、首先将电脑和手机连接同一个WIFI,并插上数据线2、打开电脑CMD,输入命令adb start-server开启adb服务3、输入adb devices ...
2022-07-11 13:43:44
6247
3
转载 Android MVP模式详解
一、MVP概述MVP,全称 Model-View-Presenter,即模型-视图-层现器。提到MVP,就必须要先介绍一下它的前辈MVC,因为MVP正是基于MVC的基础发展而来的。两个之间的关系也是源远流长。MVC,全称Model-View-Controller,即模型-视图-控制器。View:对应于布局文件Model:业务逻辑和实体模型Controllor:对应于Activity但是View对应于布局文件,其实能做的事情特别少,实际上关于该布局文件中的数据绑定的操作,事件处理的
2022-03-01 13:56:59
8635
2
转载 框架模式MVC在安卓中的实践
我们采用ListView来演示我们的MVC模式,目录结构:实体类:包含了书的名字和图片信息public class Book { //书名 private String name; //书的图片 private int image; public Book(String name, int image) { this.name = name; this.image = image; }模型类(M..
2022-03-01 13:27:52
257
原创 Android 下拉刷新,上拉更多 框架实践
activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:lay...
2022-02-22 15:36:47
636
原创 安卓 串口开发
上图:上码:在APP grable添加 // 串口 需要配合在项目build.gradle中的repositories添加 maven {url "https://jitpack.io" } implementation 'com.github.licheedev.Android-SerialPort-API:serialport:1.0.1' implementation 'com.jakewharton:butterknife:8.4.0'
2022-01-17 16:35:28
4672
原创 跑马灯灵活控制
import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.view.Display;import android.view.WindowManager;import android.widge...
2021-11-05 11:24:52
206
原创 Android UI开发——Material Design界面设计风格
添加依赖:implementation 'com.android.support:design:30.0.3'使用: <com.google.android.material.button.MaterialButton android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" android:.
2021-10-20 16:34:26
1610
1
转载 Android Material组件使用详解 Button样式
https://blog.csdn.net/magic0908/article/details/101029876
2021-10-20 12:05:47
243
原创 安卓 Java 时间冒泡排序
import android.os.Build;import android.text.TextUtils;import androidx.annotation.RequiresApi;import java.util.List;/** * 时间冒泡排序 * <p> * 输出结果 * E/time: 01:12 * E/time: 08:12 * E/time: 09:12 * E/time: 11:12 * E/time: 13:12 * E/time: 16.
2021-09-24 14:12:54
167
原创 Android开发listview选中高亮
百度了好几种listview选中高亮的办法都太繁琐太不友好,我在无意中发现了一种简单有效的办法,而且代码量极少源码如下MainActivity.javapackage com.listviewtest;import android.os.Bundle;import android.app.Activity;import android.graphics.drawable.Drawable;import android.view.View;import android.widg..
2021-09-18 17:37:03
807
原创 JZVideo饺子播放器播放器配置使用以及其自定义
最近在做视频这一块,对比了一下最后选用饺子视频,发现网上资料比较少而且基本都一样,比较单一,这是我找的几个比较好点的文章,供大家参考。https://www.jianshu.com/p/aafe648741b6 //比较详细https://blog.csdn.net/qq_41037945/article/details/107967265https://blog.csdn.net/cjm2484836553/article/details/78420172监听饺子播放器的播放结束..
2021-09-07 15:25:16
2244
原创 Android实现边录边播(MediaRecorder和AudioRecord)
Android可以通过MediaRecorder和AudioRecord这两个工具来实现录音,MediaRecorder直接把麦克风的数据存到文件,并且能够直接进行编码(如AMR,MP3等),而AudioRecord则是读取麦克风的音频流。本文使用AudioRecord读取音频流,使用AudioTrack播放音频流,通过“边读边播放”以及增大音量的方式来实现一个简单的助听器程序。PS:由于目前的Android模拟器还不支持AudioRecord,因此本程序需要编译之后放到真机运行。Activity_
2021-08-11 15:04:07
2815
2
原创 科大讯飞解决 唤醒未初始化
最近工序需要做智能AI这块,用到的是讯飞语音唤醒功能,跟着官方文档配置一切前期集成,到最后代码实现一直提示唤醒未初始化,最后找到一篇博客顺利解决,附上链接:https://blog.csdn.net/weixin_43186523/article/details/103465226唤醒未初始化解决方法:在main的下一级新建一个jniLibs目录,然后把arm64-v8a,armeabi-v7a放进去,虽然这个和libs里面可能重复了,但是如果不放进去,就会造成之后的唤醒未初始化...
2021-08-05 17:16:31
1751
1
转载 Android签名证书的sha1值获取方式
https://vchao.blog.csdn.net/article/details/71554321
2021-08-02 09:51:24
276
转载 Android WebSocket实现即时通讯功能
最近做这个功能,分享一下。即时通讯(Instant Messaging)最重要的毫无疑问就是即时,不能有明显的延迟,要实现IM的功能其实并不难,目前有很多第三方,比如极光的JMessage,都比较容易实现。但是如果项目有特殊要求(如不能使用外网),那就得自己做了,所以我们需要使用WebSocket。WebSocketWebSocket协议就不细讲了,感兴趣的可以具体查阅资料,简而言之,它就是一个可以建立长连接的全双工(full-duplex)通信协议,允许服务器端主动发送信息给客户端。Java-
2021-07-20 16:49:04
568
2
原创 2021-07-18
shape 属性介绍可以通过设置 angle 来自定义渐变方向,它是从左向右、逆时针转的。当 angle 设置为0度时 :当angle设置为90度时:注意:设置的值以45度为一个单位。radial样式的效果图:资源文件layout/activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android...
2021-07-18 15:14:53
178
1
原创 Android 自定义Spinner和其下拉窗口
实现效果:自定义Spinner其实包括两个部分:第一部分是用来打开下拉列表的按钮,如图,这个绿色背景直接设置Spinner的背景就行,素材文件如下: <Spinner android:id="@+id/Spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft=..
2021-07-16 14:11:42
487
原创 WebRTC语音对讲无声音
最近在搞Webrtc对讲的降噪和回音消除,找了代码然后改了非常多。。。。发现一个很无语的Bug:进入程序进行语音对讲,有偶发扬声器无法播放声音,但如果首先进行视频通话,再语音,刚正常。刚开始怀疑是代码改了哪里改错了,查了很多资料,Webrtc输出的每行日志都排查了,还是不行,后来直接通过查看喇叭设置,发现那个setSpeakerphoneOn已被关闭了,真是Orz.....然后直接在启动程序时,先检查下喇叭是否关了,如果关了就重新打开,下面附上打开和关闭的代码吧:打开扬声器://检查是否关闭
2021-07-12 15:28:57
1992
转载 WebView深度学习(二)之全面总结WebView遇到的坑及优化
上篇文章讲到了WebView的基本使用以及Android和js的交互.这篇文章讲一下WebView遇到的那些坑,带领各位爬坑。这里如果有你没遇到的问题,欢迎留言告诉我,我尽我所能帮你解决。感谢大家支持。⇒ 三、WebView的那些坑(1) 为什么Webview打开一个页面,播放一段音乐,退出Activity时音乐还在后台播放?◆◆ 解决方案 1://销毁Webview@Overrideprotected void onDestroy() { if (mWebvi
2021-06-25 11:24:43
681
原创 Android程序异常崩溃后重启
有时候,我们需要应用在崩溃的时候自动重启,并打开崩溃前的那个Activity。这时候,我们就需要用到Thread.UncaughtExceptionHandler这个接口。首先,我们知道,既然是要在整个Application的生命周期范围内都有效,那么我们也应该在Application中绑定它。这里有两个做法:1.程序的Application实现这个接口:...
2021-06-20 14:35:31
2156
安卓开发 定时截取屏幕(总是截取当前显示的屏幕)
2024-07-05
安卓开发 定时截取屏幕(APP内截取)
2024-07-05
Android ViewPager+Fragment超高仿微信主界面
2017-12-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人