# 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)