尚硅谷Android高级开发技术之JNI和NDK开发
这算是尚硅谷培训学校推出的Android视频教程的高级教程了吧,而本套教程正是在Android开发中的核心重点开发技术(JNI/NDK),我们知道,Android的底层是Linux且Java的性能并不如C/C++好,所以在开发一些需要超高性能的App的时候就需要通过JNI来直接调用Android底层框架所提供的方法了(比如说手机游戏开发或者和系统底层紧密结合的功能开发),本教程照顾了不会C/C++的同学,会讲一些C/C++的基本知识,是一个JNI/NDK开发不可多得的教程。
基于MVP-Clean + Weex + RxJava2 + Retrofit + Dagger2 + MTRVA的综合应用
项目介绍:
架构采用MVP-Clean,项目简洁、易维护、易测试、高内聚、低耦合
UI风格采用Material Design,清新、简洁和直观
跨端采用Weex,涉及weex页面、自定义Module、自定义Component、自定义Adapter、与原生webview同步(支持返回键拦截)
RxJava的操作符巧妙运用
Dagger2与Butterknife实现依赖注解,解耦,方便测试等
Retrofit和Okhttp实现网络架构,实现多种扩展,例如常见的日志规范打印,不用抓包以及缓存配置等等
Glide实现图片加载,配合GlideTransformations实现多种变换,如圆角、遮罩等
MTRVA轻松处理RecyclerViewAdapter的数据,实现多列表效果更佳
大量自定义控件,如Camera、Matrix、贝塞尔曲线、高斯模糊、Behavior、事件拦截、沉浸式、QQ侧滑菜单等等运用
大量动画,如lottie、补间动画、3D动画、属性动画(ObjectAnimator、ValueAnimator、View.animate和PropertyValuesHolder)和转场动画(自定义Transition)运用
视频列表滑动支持小窗口播放,本地保存
支持图片预览、编辑(如裁剪、压缩)和保存本地
支持下载机制,通知栏回显(兼容8.0),下载完成可打开
支持扫码,扫码支持访问链接和下载,界面仿微信,支持本地图片扫码
支持在线更新、在线反馈和Crash监控
webview支持x5及常见用法,例如缓存、预加载、内存优化、增量更新、并行加载、下载等
android 断点续传(绝壁好用,这个demo我直接添加到项目中了,大文件下载不用担心断网和网络切换)
android 断点续传(绝壁好用,这个demo我直接添加到项目中了,大文件下载不用担心断网和网络切换)。有网就下载,没网停会等会有网继续下载。
高仿IOS 高仿iOS滚轮实现城市选择器
高仿iOS滚轮实现城市选择器,高仿iOS滚轮实现城市选择器,高仿iOS滚轮实现城市选择器。
完美得解决listview和edittext抢夺焦点和数据混乱问题
完美得解决listview和edittext抢夺焦点和数据混乱问题
2018718(最新eclipse 下android开发工具包),集成了sdk,SDKManager,eclipse都是配套的,我一直再用它开发
2018718(最新eclipse 下android开发工具包),集成了sdk,SDKManager,eclipse都是配套的,我一直再用它开发
adt-bundle-windows-x86_64(最新链接,请到我的百度网盘下载:
链接:https://pan.baidu.com/s/1tnUk9IXC7RoSMaxHeWOhIA 密码:j47v)
视频监控demo
值得学习的视频监控,实时获取,高清,标清,截图,回放
android在原生代码中使用POSIX通信面向连接的TCP客户端和服务端。
android在原生代码中使用POSIX通信面向连接的TCP客户端和服务端。
android jni下的c++开发,
android studio cmake android ndk-jni动态库开发
android studio cmake android ndk-jni动态库开发,这个可以在cmake下链接生成多个so库
android pm2.5分割线自定义横线view(非浸入式)绿,棕,红
根据android大师鸿洋的HorizontalProgressBar改写而来,我这个要更吊一些。android pm2.5分割线自定义横线view(非浸入式)绿,棕,红
android c++高级编程 ndk示例源码
这个是eclipse下的 android c++高级编程 ndk示例源码,非常全面适合学习开发。
Android 滚动时间选择器,爱上租时间选择器
Android 滚动时间选择器,爱上租时间选择器,这个是高仿爱上租时间选择器。
Dagger2 @Component
前很多blog和技术网站,很多文章都在讲Dagger2 的使用,一般都是在Application中生成一个AppComponent,然后其他的功能模块的Component依赖于AppComponent,但是有些文章中使用的方式是@Component(modules = PreseterModule.class, dependencies = AppComponent.class),也有使用@Subcomponent(modules = PreseterModule.class)方式提供Component的,那么两者之间有什么明显区别?本文就来详细解释一下。
Rxjava2 + retrofit2 + MVP + Dragger2
Android App基本mvp+dagger(dagger2.android)+rxjava2+retrofit+ormdb框架,有效的API+登陆登出完整闭环.Base Activity,Presenter ,View,Model 的抽象封装,
http 请求封装&错误统一处理 https://www.jianshu.com/p/04ce0c91e3ee-》这家伙屌了一笔啊。
Rxjava2 + retrofit2 + MVP + Dragger2 + 应该是当前Android 开发主流框架。
android微信支付(代码请完整带走)保准能用
android微信支付(代码请完整带走)保准能用,不用谢。android微信支付最新sdk接入总结。
statusView内容侵入状态栏(非常好用)
statusView内容侵入状态栏(非常好用),内容侵入状态栏,状态栏深色字体,普通状态栏渐变
android kotin+ ftp视频上传+android7.0 语音识别+百度地图+ 图片和拍照
android kotin+ ftp视频上传+android7.0 语音识别+百度地图+ 图片和拍照
Android UI仿QQ好友列表分组悬浮效果
Android UI仿QQ好友列表分组悬浮效果,并且还有刷新的功能
flutter_test.rar
附录
本文涉及到相关源码文件
flutter/shell/common/
- vsync_waiter.cc
- engine.cc
- animator.cc
- shell.cc
- rasterizer.cc
flutter/shell/platform/android/
- vsync_waiter_android.cc
- platform_view_android_jni.cc
- library_loader.cc
- io/flutter/view/VsyncWaiter.java
flutter/runtime/runtime_controller.cc
flutter/synchronization/pipeline.h
flutter/fml/message_loop_impl.cc
flutter/lib/ui/window/window.cc
flutter/lib/ui/window.dart
flutter/lib/ui/hooks.dart
lib/src/widgets/framework.dart
lib/src/widgets/binding.dart
lib/src/scheduler/binding.dart
lib/src/semantics/semantics.dart
lib/src/rendering/
- binding.dart
- object.dart
- view.dart
最简单的基于FFmpeg的移动端例子附件:SDL Android HelloWorld
Android程序SDL2类库使用说明
简单记录一下Android程序使用SDL2类库的方法。这部分的信息可以参考SDL2源代码目录中的README-android.txt文件。SDL2使用的步骤可以分为以下步骤:
UVCCamera.rar
业余时间捣鼓了下Android 板子连接多个usb摄像头的方案,一开始使用系统的CameraV1的api,但是取到的摄像头数量一直不对(api: Camera.getNumberOfCameras()),然后又去网上查了方案(传送门:https://blog.csdn.net/xiangzhihong8/article/details/82877901)发现Android P之后原生就支持多摄像头,心里美滋滋,这么快就大结局了,但是果然天不遂人愿,于是改用CameraV2的api,但还是识别不到完整的摄像头列表。没查到具体原因,但是猜测是跟Android板子有关,虽然在软件上已经支持多摄像头,但是底层可能还是限制了最大连接数量。之后去应用市场下了一个usb摄像头app,发现居然是可以正常识别出所有的摄像头,遂反编译之,发现是使用了UVCCamera。这个开源库貌似已经很久没有维护,并且根据之前使用的经验来看也有不少bug(主要是兼容性方面),但是项目中用到的硬件只有一个型号,并不需要做太多设备兼容性的适配,因此还是可以拿来一用。下面就分享一下UVCCamera的接入过程。
。
AirHockeyTouch1.rar
opengl曲棍球游戏,了解着色器,纹理
1. Shader
Shader其实就是一段执行在GPU上的程序,此程序使用OpenGL ES SL语言来编写。它是一个描述顶点或像素特性的简单程序。在opengles中常用的shader有两种:vertex shader和fragment shader。Geometry Shader(几何着色器)是继Vertex Shader和Fragment Shader之后,由Shader Model 4引入的新的着色器。还有一个compute Shader由Shader Model 5引入的提供通用计算能力的着色器。
MediaCodec编码PCM为aac音频实现边播边录(一).zip
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
MediaCodec编码PCM为aac音频实现边播边录(二).zip
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg解码流程.zip
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg对音频数据重采样生成PCM数据.zip
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg+OpenSL ES 完成音频播放.zip
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
C++多线程解码音频数据.zip
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
C++多线程,生产者和消费者模型以及C++全局调用Java方法.zip
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
C++队列缓存AVpacket.zip
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
UVCCameraDemo.rar
AndroidUSBCamera基于[saki4510t/UVCCamera](https://github.com/saki4510t/UVCCamera)开发,该项目对USB Camera(UVC设备)的使用和视频数据采集进行了高度封装,能够帮助开发者通过几个简单的API实现USB Camera设备的检测、连接、预览和音视频数据采集,最重要的是手机无需root,只需支持otg功能即可驱动。主要功能包括:
(1)支持USB Camera设备检测,画面实时预览;
(2)支持本地录制mp4格式视频,支持实时获取音视频数据流;
(3)支持jpg格式图片抓拍;
(4)支持获取camera支持的分辨率,和分辨率切换;
(5)支持屏蔽声音,重启Camera;
(6)支持相机自动对焦;
(7)支持调整对比度和亮度
(8) 支持480P、720P、1080P and higher
websocket源码
这里特别说明下因为WebSocket服务端是公司线上项目所以这里url和具体协议我全部抹去了,但我会尽力给大家讲明白并且demo我都是测试过,还望各位看官见谅
我们先粗犷的讲下流程,掌握个大概的方向,然后在深入讲解细节的实现.这里先解答一个疑惑,为啥我们这要用WebSocket而不是Socket呢,因为WebSocket是一个应用层协议很多东西都规定好了我们直接按他的规定来用就好,而Socket是传输层和应用层的一个抽象层很多东西我们还得自己规定相对来说会比较麻烦,所以这里我们用的WebSocket.
既然WebSocket是一个应用层协议,我们肯定不可能自己去实现,所以第一步是需要找一个实现了该协议的框架,这里我用的nv-websocket-client,api我就不介绍了,库中readme已经详细的介绍了,后面我就直接使用了.
java增删改查JDBC封装类(泛型封装)
java增删改查JDBC封装类(泛型封装),这个是高度封装化的,增删改查,直接用到我的项目中去的。
android 自定义dialogfragment全屏对话窗体
android 自定义dialogfragment全屏对话窗体,这个demo还是很棒的。值得学习,直接用在项目里。
java/android 3mb/s文件下载,大文件快速传输
java/android 3mb/s文件下载,大文件快速传输,非常好用。值得拥有
DragShadowBuilder(拖拽拼图)
这个DragShadowBuilder(拖拽拼图),相当的屌啊,后续添加拽到某个view上时,该view高亮并放大。
ContentProvider封装SharedPreferences功能,解决跨进程存取值的问题
ContentProvider封装SharedPreferences功能,解决跨进程存取值的问题,
我之前一直用自己封装的SharePreferences,后来出现跨进程问题;就用这个
ContentProvider,真好用,值得拥有!
学习Matrix的对图像的处理可分为四类基本变换: Translate平移变换 Rotate 旋转变换 Scale缩放变换 Skew 错切变换 最好的demo
学习Matrix的对图像的处理可分为四类基本变换:
Translate平移变换
Rotate 旋转变换
Scale缩放变换
Skew 错切变换
最好的demo