# WearOs
**Repository Path**: d521/wear-os
## Basic Information
- **Project Name**: WearOs
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-07-23
- **Last Updated**: 2024-07-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# WearOs
![打包信息]()
```shell
包名: com.sdkx.wear_os
debugSHA1: B0:0A:39:57:86:12:B6:F2:91:71:23:E3:8F:B1:4F:1D:BB:3B:FF:79
releaseSHA1: 88:0B:88:9F:E4:33:8E:70:E4:34:FE:67:21:38:0F:AC:AE:81:69:48
```
## 阿里云镜像
```shell
https://maven.aliyun.com
maven { url "https://maven.aliyun.com/repository/gradle-plugin" }
```
## 项目目录说明
[适配器](app/src/main/java/com/sdkx/wear_os/adapter)
[application](app/src/main/java/com/sdkx/wear_os/app)
[基类](app/src/main/java/com/sdkx/wear_os/base)
[实体类](app/src/main/java/com/sdkx/wear_os/bean)
[自定义控件](app/src/main/java/com/sdkx/wear_os/customview)
[选择时间组件](app/src/main/java/com/sdkx/wear_os/pickerview)
[网络请求](app/src/main/java/com/sdkx/wear_os/retrofit)
[展示给用户的界面](app/src/main/java/com/sdkx/wear_os/ui)
[工具类](app/src/main/java/com/sdkx/wear_os/utils)
[viewModel](app/src/main/java/com/sdkx/wear_os/viewmodel)
## FastKV持久化存储
```kotlin
//保存
fastKV.putString()
//取出
fastKV.getString()
```
## 阴影库
```kotlin
//阴影库
implementation 'com.github.lihangleo2:ShadowLayout:3.3.2'
app:hl_cornerRadius = "@dimen/dp_10"
app:hl_shadowColor = "#1A000000"
app:hl_shadowLimit = "@dimen/dp_4"
```
## 今日头条适配
```kotlin
//今日头条适配
implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'
```
## 网络监听
```kotlin
//网络监听
implementation 'com.github.kongqw:NetworkMonitor:1.2.0'
Application中设置抖动
//网络监听设置抖动时间,即多久之后网络状态没有发生变化,才回调网络状态,单位:毫秒,默认1500毫秒
NetworkMonitorManager.getInstance().init(this, 1_500)
//注册网络监听
NetworkMonitorManager.getInstance().register(this)
//反注册网络监听
NetworkMonitorManager.getInstance().unregister(this)
/**
* 监听网络
*/
@NetworkMonitor
fun onNetWorkStateChange(networkState: NetworkState) {
when (networkState) {
NetworkState.NONE -> {
logUtil("网络", "无网络")
}
NetworkState.WIFI, NetworkState.CELLULAR -> {
logUtil("网络", "有网络")
}
}
}
```
## 列表
```kotlin
//最外层recyclerview或scrollview添加下方属性可解决嵌套recyclerview抢夺焦点
android:descendantFocusability = "blocksDescendants"
//用于添加其他布局及加载更多
lateinit var helper: QuickAdapterHelper
mViewModel.helper = mViewModel.adapter.init(mDataBinding.swipe, {
//加载更多
mViewModel.page++
}, {
})
//列表设置
mDataBinding.recyclerview.apply {
adapter = mViewModel.helper.adapter
layoutManager = LinearLayoutManager(this)
}
```
## PictureSelector图片选择器
使用系统相册
```kotlin
PictureSelector.create(this)
.openGallery(SelectMimeType.ofImage())
.isDisplayCamera(true)//是否显示拍照
.setSelectionMode(SelectModeConfig.MULTIPLE)//多选 SelectModeConfig.SINGLE单选
.setMaxSelectNum(9)//最多数量
.setImageEngine(GlideEngine.createGlideEngine())
.setCropEngine(ImageFileCropEngine(this, false))//裁剪
.setCompressEngine(ImageFileCompressEngine())//压缩
.forResult(object : OnResultCallbackListener {
override fun onResult(result: ArrayList) {
result.forEach {
Glide.with(this).load(it.compressPath).into(mDataBinding.iv)
}
}
override fun onCancel() {}
})
```
单独拍照
```kotlin
PictureSelector.create(this)
.openCamera(SelectMimeType.ofImage())
.forResult(object : OnResultCallbackListener {
override fun onResult(result: ArrayList) {
}
override fun onCancel() {
}
})
```
## xyz.doikki.videoplayer.player.VideoView视频加载框架(DKVideoPlayer)
```kotlin
如果视频不能正常播放可在清单文件中将相关Activity设置硬件加速
hardwareAccelerated = "true"
//必选,内部默认使用系统mediaplayer进行解码
implementation 'xyz.doikki.android.dkplayer:dkplayer-java:3.3.7'
//可选,包含StandardVideoController的实现
implementation 'xyz.doikki.android.dkplayer:dkplayer-ui:3.3.7'
//可选,使用exoplayer进行解码
implementation 'xyz.doikki.android.dkplayer:player-exo:3.3.7'
//可选,使用ijkplayer进行解码
implementation 'xyz.doikki.android.dkplayer:player-ijk:3.3.7'
//可选,如需要缓存或者抖音预加载功能请引入此库
implementation 'xyz.doikki.android.dkplayer:videocache:3.3.7'
//Application中设置
val config = VideoViewConfig.newBuilder()
.setPlayerFactory(IjkPlayerFactory.create())//使用使用IjkPlayer解码
.setPlayerFactory(ExoMediaPlayerFactory.create())//使用ExoPlayer解码
.setPlayerFactory(AndroidMediaPlayerFactory.create())//使用MediaPlayer解码
.build()
VideoViewManager.setConfig(config)
//设置视频地址
mDataBinding.landLayoutVideo.setUrl(videoList[videoPosition].url)
//控制器
val controller = StandardVideoController(this)
//标题和是否直播
controller.addDefaultControlComponent(videoList[videoPosition].clientId, true)
//移除所有控制组件
controller.removeAllControlComponent()
//设置控制器
mDataBinding.landLayoutVideo.setVideoController(controller)
//开始播放,不调用则不自动播放
mDataBinding.landLayoutVideo.start()
//释放
mDataBinding.landLayoutVideo.release()
//跟随生命周期
mDataBinding.landLayoutVideo.pause()
//跟随生命周期
mDataBinding.landLayoutVideo.resume()
```
## 横竖屏
```kotlin
//强制横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
//强制竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
//横竖屏不重走生命周期,不可进行外界的横竖屏切换
android:configChanges = "uiMode|orientation|screenSize"
//窗口输入模式
android:windowSoftInputMode = "adjustPan|stateAlwaysHidden"
//隐藏theme中下方两属性可进行外界的横竖屏切换
android:configChanges = "orientation|screenSize|keyboardHidden"
- true < / item >
- sensor < / item >
如果出现软键盘冲突
android:windowSoftInputMode = "stateHidden|adjustResize"
AndroidBug5497Workaround.assistActivity(this)
```
## 百度定位
```kotlin
//地图
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.5.8'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.5.8'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.5.8'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.4.0'//如果只需要定位可只引入该库
Application中
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
SDKInitializer.setAgreePrivacy(applicationContext, true)
SDKInitializer.initialize(this)
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标.
SDKInitializer.setCoordType(CoordType.BD09LL)
LocationClient.setAgreePrivacy(true)
```
## 获取权限
```kotlin
private fun getPermission() {
PermissionX.init(this)
.permissions(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
).request { allGranted, grantedList, deniedList ->
//全部同意
if (allGranted) {
} else {
ToastLogUtils.logUtil("权限", "拒绝")
}
}
}
```
## 项目内容说明
[图片大图预览](app/src/main/java/com/sdkx/wear_os/ui/activity/PictureActivity.kt)