# AndroidKotlinSimple **Repository Path**: zeulion/android-kotlin-simple ## Basic Information - **Project Name**: AndroidKotlinSimple - **Description**: Android工程模板,包含基础工具,包括网络请求、日志、推送、相机、二维码等。 会存在Java、kotlin混合开发的情况 - **Primary Language**: Kotlin - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 1 - **Created**: 2021-03-31 - **Last Updated**: 2024-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AndroidKotlinSimple #### 介绍 Android工程模板,包含基础工具,包括图片缓存、网络请求、日志、推送、相机、二维码等。 会存在Java、kotlin混合开发的情况 #### 软件架构 工程使用多模块设计,每个模块尽量坚持单一功能原则。 - [x] **lib-application** - [x] 全局Application,必须继承ExampleApplication - [ ] 包含一些常用的资源读取方法,如getString()、getColor()等 - [x] **lib-glide** - [x] 图片缓存,使用Glide框架 - [x] 设置了全局的加载时error和placeholder图片 - [x] 使用了OkhttpClient替代默认的HttpUrlConnection - [x] 做了https忽略 - [x] 缓存忽略URL中的token - [x] **lib-http** - [x] 网络请求,使用Retrofit+协程 - [x] 自定义Retrofit使用单例,初始化参数配置,并可通过create方法快速创建Service请求接口实体类 - [x] **RetrofitManager第一次使用前需要调用init方法**,可在此时设置拦截器用于填充token参数等 - [x] SSL忽略,可根据需要自行修改 - [x] 请求数据基类**ApiBase**,成功请求的返回基本格式,**可根据需要自行修改** - [x] 请求状态基类**ApiStatus**,包含请求失败的返回数据格式 - [x] 分页请求数据基类**ApiPage**,分页成功请求的返回基本格式,属于ApiBase的data,**可根据需要自行修改** - [x] 返回ApiStatus的请求方法 ``` viewModelScope.launch { val result = apiCall { RetrofitManager.create(Login::class.java).login() } when(result){ is ApiStatus.Success ->{} is ApiStatus.Error ->{} is ApiStatus.Canceled ->{} } } ``` - [x] 通过try catch的请求方法 ``` viewModelScope.launch { try{ val result = apiCallExp { RetrofitManager.create(Login::class.java).login() } } catch(e: ApiExeptions){ when(e){ is ApiExeptions.Canceled ->{} else ->{} } } } ``` - [x] 自定义URL拼接工具类,可自动进行URLEncoder并进行拼接 - [x] **lib-logger** - [x] 日志,使用Timber - [ ] 自定义日志保存 - [ ] **lib-push** - [ ] 全局初始化方法 - [ ] 小米推送 - [ ] 华为推送 - [ ] OPPO推送 - [ ] VIVO推送 - [ ] 魅族推送 - [x] **lib-camera** - [x] 基于CJT2325的[CameraView](https://github.com/CJT2325/CameraView),支持拍照和小视频 ``` ExampleCamera.from(this) .feature(ExampleCamera.Feature.BUTTON_STATE_BOTH) .savePath(filesDir.absolutePath) .forResult(1) ``` - [x] 内置权限申请,但仅包括相机和麦克风,需要存储到外部目录的需要提前申请或修改代码 - [x] **lib-qrcode** - [x] 二维码扫描,使用ZXing框架,支持条形码二维码扫描 ``` new IntentIntegrator(context) .setBarcodeImageEnabled(false) .setBeepEnabled(true) .setCaptureActivity(CaptureActivity.class) .setDesiredBarcodeFormats(IntentIntegrator.QR_CODE) .setOrientationLocked(true) .addExtra(Intents.Scan.CHARACTER_SET, "UTF-8") .initiateScan(); ``` - [ ] **lib-widget** - [ ] 自定义控件,一些常用的自定义控件,如头部导航、底部导航、表单控件等 #### 安装教程 - BASE_URL在*com.simple.lib.http.RequestUrl* 中修改 BASE_FILE_URL是文件上传下载的 - 网络请求需要先调用RetrofitManager.init()方法进行初始化,可添加拦截器 - Timber需要先绑定Tree ``` Timber.plant(Timber.DebugTree()) ``` #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)