- 博客(50)
- 资源 (4)
- 收藏
- 关注

原创 Android通过OpenGLes渲染YUV视频数据
在Android上用OpenGLES来显示YUV视频数据1、首先我先说一下这个解决方案是怎么运行的,给大家一个概念 1.1.显示在哪 -> GLSurfaceVIew 1.2.谁来把数据贴到GLSurfaceVIew上 -> Renderer 1.3.谁来负责YUV数据转换成RGB -> GL中的Program/Shader 一句话说明白就是:G...
2019-05-30 16:17:52
3102
2

原创 Android使用OpenGL(GLSurfaceView)视频画面抖动解决办法
Android使用GLSurfaceView显示视频很简单: surfaceView.setEGLContextClientVersion(2); // Assign our renderer. surfaceView.setRenderer(new GLSurfaceViewEx.Renderer() { @Overri...
2019-01-29 15:09:07
2745

原创 GreenDao如何避免插入相同的数据
GreenDao里面提供存储数据的方法有三个:save(T entity) "Saves" an entity to the database: depending on the existence of the key property, it will be inserted (key is null) or updated (key is not null).通过key属性判断是否存在...
2018-07-17 11:44:51
7786
1

原创 Android 8.0 悬浮窗权限正确开启方式
不多说,直接上代码:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); permissions = new RxPermissions(this); requestPermiss(); ...
2018-07-11 11:03:29
7827
3
原创 WebView中操作视频播放,暂停
是一个基于 Chromium 的视图组件,它可以显示网页内容(HTML、CSS、JavaScript 等),允许用户在 Android 应用中直接交互。(Mac)进入开发者工具界面,用元素选择器选中需要控制的元素,在元素栏中可以看到对应元素的class name。加载网页,执行 JavaScript,并处理网页中的多种事件。比如视频中返回按键的监听,这个就需要获取到元素的选择器名称。右键单击按钮,选择“检查”(Inspect),或使用快捷键。播放,暂停,静音等通用操作很简单直接贴代码。
2025-02-26 19:36:12
438
原创 Lizard统计代码圈复杂度和代码注释率
默认递归分析文件夹支持下列的一些语言等JavaJavaScriptSwiftPythonRubyTTCN-3PHPScalaGDScript。
2024-06-19 17:17:05
702
原创 Android 11 Framework实时监听Activity堆栈变化
Framework中有一个类SystemActivityMonitoringService专门用于监控Activity堆栈变化,属于隐藏Api,应用侧无法调用。void onForegroundServicesChanged(int pid, int uid, int fgServiceTypes) //前台服务发生变化。onTaskCreated 应用被创建,首次被拉起至前台;onTaskMovedToFront 应用从后台切换至前台。这两个方法都位于AMS中,不对应用开放。
2024-05-24 18:34:12
686
原创 SystemProperties属性学习
每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。在系统初始化时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代码位于:device/system/init。“init”守护进程将启动一个属性服务。属性服务在“init”守护进程中运行。每一个客户端想要设置属性时,必须连接属性服务,再向其发送信息。
2024-05-10 11:24:10
631
转载 Android车载应用开发与分析- 车载多媒体(一)- 音视频基础知识与MediaPlayer
多媒体应用是车载信息娱乐系统的一个重要组成部分,一般包含音视频播放、收音机、相册等。
2024-04-16 19:10:36
347
转载 android:fitsSystemWindows属性
fitsSystemWindows用于设置view在当前窗口的表现。一个app页面,包含:状态栏、标题栏、内容区、底部导航栏(比如有些手机的虚拟导航按键),如图:整个界面可以看做是一个window,fitsSystemWindows 生效的前提是状态栏(StatusBar)或导航栏(NavigationBar)透明并且不能有标题栏,默认fitsSystemWindows = true,表示页面布局(内容区)不会扩展到状态栏,会针对透明的状态栏会自动添加一个值等于状态栏高度的paddingT.
2021-09-15 18:46:57
1575
原创 AS中集成系统签名
前言:我们在做系统级的app开发时,往往会在AndroidManifest.xml文件中添加:android:sharedUserId=”android.uid.system”以获取系统级的权限,如果你正在使用Android Studio进行开发,编译生成的apk会因为签名问题无法安装,如果每次通过手动签名的方式安装,那将是无比痛苦的,根本无法调试开发解决方案:在AS中集成系统签名一、准备工作在github上下载工具keytool-importkeypair点击下载 Android证书文件准备
2021-08-08 17:58:18
512
原创 Android原生模拟器预装三方app
1.获取root权限及remount权限adb rootadb shell avbctl disable-verificationadb rebootadb rootadb remount2.预装app获取remount权限后就可以将自己的apk与lib通过adbpush到系统的system/priv-app目录,push成功后adb reboot重启下模拟器.adb push C:\Users\li282\Desktop\TmallGenie /system/priv-app.
2021-07-09 14:33:12
1623
1
转载 RecycleView4种定位滚动方式演示
概述相信大家在项目中使用RecyclerView时,经常会遇到这样的需求:将RecyclerView滑动到指定位置,或者检索RecyclerView的某一项(各个项的高度不确定),然后定位滚动这到一项,将它显示。下面就讲解4种RecyclerView定位滚动的方式及具体效果演示。scrollByrecyclerView.scrollBy(x, y)使用:recyclerView.scrollBy(x, y)scrollBy(x, y)这个方法是自己去控制移动的距离,单位是像素.
2021-06-22 14:16:19
328
原创 Android透明度十六进制表示法
hex color transparency (透明度十六进制表示法)100% — FF95% — F290% — E685% — D980% — CC75% — BF70% — B365% — A660% — 9955% — 8C50% — 8045% — 7340% — 6635% — 5930% — 4D25% — 4020% — 3315% — 2610% — 1A5% — 0D0% — 00...
2021-06-09 16:59:16
285
原创 Android开发杂草园
其中参数 alpha 为透明度,数值越大越清晰~setAlpha 参数是float,值的范围0---1(因为是小数嘛,所以0-1就够表示了)已过时setImageAlpha 参数是int,值的范围0---255(整数大着呢,最大取到255)
2021-04-23 10:51:24
1649
原创 Android中如何选择SwitchButton
1,系统自带switch缺点:不能自定义设置宽高,不建议使用2,第三方SwitchButton1com.suke.widget.SwitchButton,github star2k多<com.suke.widget.SwitchButton android:id="@+id/switch_go_home" android:layout_width="@dimen/m_iot_dp_100" android:layout_height="@dimen/m_iot
2021-04-23 10:49:01
654
原创 Android自定义Toast设置宽高
View toastview = LayoutInflater.from(context).inflate(R.layout.m_iot_toast_text_layout, null); LinearLayout linearLayout = (LinearLayout)toastview.findViewById(R.id.con_layout); LinearLayout.LayoutParams layoutParams = new LinearLayout.La.
2021-04-21 15:59:42
2311
原创 git常用命令
1撤销上次提交git reset --soft HEAD~撤回commit操作,您写的代码仍然保留。如果是--hard 你本地代码将不再保留2合并上次提交将多次提价合并成一次提价 git commit --amend3将本地代码暂存git stash 取出可以通过git stash pop4回退到某个版本git reset --hard commitID5将远程某个patch应用到本地改变git cherry-pick commitID...
2021-01-21 10:17:50
125
原创 IllegalStateException: Can not perform this action after onSaveInstanceState
1出现的原因:开启Timer不断检测系统导航的状态,切换到后台,检测到系统导航在运行,直接弹出fragment,这个时候报了Can not perform this action after onSaveInstanceState很多人说的解决办法就是用commit替换commitAllowingStateLoss,我的这种情况是不行的,出现这种情况的原因就是当fragment切换到后台后会调用onSaveInstanceState方法保存状态,保存状态后再去调用getFragmentManager()
2021-01-14 16:44:16
316
原创 Android 5.0以上获取正在运行的程序的包名
1,在AndroidManifest.xml中配置权限<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore="ProtectedPermissions"/>2,跳转用户授权界面public boolean checkUsageStats() { AppOpsManager appOpt = (AppOpsManager) mContext.getSys
2021-01-12 16:03:37
610
1
原创 Android在弹窗不消失的情况下依然能响应外部事件
1,dialog的方式public class OffenDestDialog extends Dialog { private Context context; public OffenDestDialog(@NonNull Context context) { super(context); this.context = context; } @Override protected void onCreate(Bund
2020-12-03 16:07:07
641
原创 popwindow设置setOutsideTouchable(false)引发的问题
我们都知道要想让popwindow点击外部区域不消失必须设置setOutsideTouchable(false)和setFocusable(false),但是这样设置后会引发子view获取不到焦点的问题.比如现在pw上有一个控件editText.点击editText弹出键盘这样设置后,无论怎么点击edittext键盘都不会弹出来.有人就要说了,我们直接监听edittext的点击事件用代码弹出键盘.这样也是没用的要想二者兼得必须要处理popwindow的ontouch事件public voi
2020-11-30 18:21:43
659
原创 高德地图Amap常用功能总结
设置缩放比例1,设置缩放比例的api是aMap.moveCamera(CameraUpdateFactory.zoomTo(18));如果你直接设置是没用的,因为此时地图还没加载成功。所以要监听地图加载成功的事件aMap.setOnMapLoadedListener(new AMap.OnMapLoadedListener() { @Override public void onMapLoaded() { aMap.moveCamera(CameraUpd
2020-11-13 19:54:49
3402
原创 在Android8.0上突破隐式广播的限制
在Android 8.0以上,动态注册广播是没有任何影响的,注册方和接收方的action和scheme必须一样且成对出现https://www.jianshu.com/p/5283ebc225d5?utm_source=oschina-app
2020-11-13 10:11:06
182
原创 跨进程启动activity出现的问题
A app启动B app1,A app设置了uri,但是B app没有设置scheme,导致跳转不成功2,B app没有配置默认的category<category android:name="android.intent.category.DEFAULT"></category>3,B app在MainActivity中设置了category后,桌面不显示图标的问题,写两个<intent-filter>来解决<activity androi
2020-11-12 20:34:24
861
原创 Android利用Messenger实现进程通信
跨进程通信方式有很多,本文仅针对利用Messenger实现。 创建服务端 创建Messenger传入MessHander,在handleMessage方法中处理客户端发来的消息。发送消息到客户端通过messengerClient.sent()发送。注意:服务端向客户端发消息必须用客户端的messenger.反之,客户端向服务端发消息必须用服务端的messengerpublic class ReviceService extends Service { @Nullable
2020-09-29 09:39:18
207
原创 Android利用Binder实现进程通信
跨进程通信方式有很多,本文仅针对利用Binder实现。创建服务端写一个service类继承service,在onbind方法中返回自己的BInder,在MyBinder的onTransact方法中接受客户端发来的消息,并发送消息到客户端。客户端的消息通过data,readString()方法获取,服务端发送消息通过reply,writerString()方法发送,注意reply.writeNoException()这个方法,服务端如果写了这个方法,客户端获取服务端消息也必须要写reply.readE
2020-09-28 16:38:42
427
原创 java创建线程的三种方式
Java中创建线程主要有三种方式:一、继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。 package com.thread; public class FirstThreadTest extends Thread{ int i ...
2020-09-18 10:43:32
119
转载 Android 实现自动抢微信红包
原理我们使用的还是安卓自带的辅助功能 AccessibilityService 。先来讲述以下原理,原理很简单,当页面发生变化的时候,搜索屏幕中的关键字,搜索到了就点开。这个原理在微信旧版本的自动抢红包是有效的,但是在新版本中,开红包的界面没办法这么做了,那我们需要自己模拟点击动作,从而点开这个红包。AccessibilityService 在 SDK24 (即Android 7.0) 引...
2019-11-06 17:01:01
1070
转载 Android Camera对焦相关基础自动对焦,手动对焦
https://blog.youkuaiyun.com/u010126792/article/details/86692877
2019-09-26 16:29:16
372
原创 Android cmakelists在链接ffmpeg静态库出现的问题
1,error: undefined reference to 'avcodec_find_encoder(AVCodecID)'第一种像这种各种未引用的错误,ffmpeg是一个纯c库,在c++中如果要引用其中的头文件必须要用extern "C"来修饰,如下所示:extern "C"{#include <libavformat/avformat.h>#includ...
2019-09-04 17:54:29
886
转载 Android Studio中CMakeList的写法
只要在Android中有使用过jni的应该都了解我们要编译写的c/c++文件都需要配置编译用的配置文件,在eclipse中要写mk文件;在Android Studio中要写CMakeList.txt这个配置文件。只有写好了这个配置文件我们才正确编译出我们想要的so动态库,今天就讲讲Android Studio中的CMakeList.txt这个文件怎么写,eclispe的mk文件的写法在这就不讲了...
2019-07-05 09:37:04
853
1
原创 华为手机安装apk报解析错误的问题
<application android:name="com.ioidea.mesh.light.TelinkMeshApplication" android:allowBackup="true" android:appComponentFactory="" android:icon="@mipmap/logo" ...
2019-06-20 15:55:04
2939
原创 上传本地文件到github仓库基本操作
第一步:新建仓库新建仓库步骤省略,最后我们得到一个仓库地址:https://github.com/UnicornAmazon/×××××××××.git第二步:进入要上传的文件夹,初始化上传文件夹仓库$ cd ../python/machineLearningCode/$ git init第三步:添加所有文件到git$ git add .$ git commit...
2019-06-06 15:08:05
195
转载 【Andorid源码解析】View.post() 到底干了啥
https://dwz.cn/EAKHh8tyQ1: 为什么 View.post() 的操作是可以对 UI 进行操作的呢,即使是在子线程中调用 View.post()?Q2:网上都说 View.post() 中的操作执行时,View 的宽高已经计算完毕,所以经常看见在 Activity 的 onCreate() 里调用 View.post() 来解决获取 View 宽高为0的问题,为...
2019-04-12 17:00:49
173
转载 Java结束线程的三种方法
线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的。例如在程序中使用线程进行Socket监听请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。当需要结束线程时,如何退出线程呢?有三种方法可以结束线程: 1.设置退出标志,...
2019-04-10 16:58:13
206
原创 NDK 编译报错 too many path components
最近在做蓝牙mesh项目,下载了Telink Sig Mesh项目源码自己编译,因为依赖了NDk的库,编译的时候cmake一直报错,报错信息都是警告信息,最下面就说了个too many path components我们知道,android的c++代码需要使用ndk进行编译后才能使用。而ndk又是和编译平台mac和windows或者linux无关的,所以理论上只要在mac编译通过,window...
2019-02-16 09:53:34
798
Android-nRF-Mesh-Library-master (1).zip
2019-05-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人