前言
你点开这个博客,说明你已经对settingslib有所了解。它用于系统原生settings的开发支持,当然我们也可以调用settingslib实现自己需要的设置功能,比如系统级蓝牙、系统级WiFi开发、声音、亮度、电量等等。所以settingslib毋庸置疑是需要系统签名、系统权限的系统级应用才能使用的。 如果你的项目是普通应用项目就请不需要在花费时间在这里了。
架包流程
jar获取路径
out\target\common\obj\JAVA_LIBRARIES\SettingsLib_intermediates 这个是系统编译后的路径
目标jar
放入项目中的libs文件
在build添加
请注意这里引用的是implementation 这与 framework 的架包不同,我们是需要settingslib.jar参加编译的
//framework里的的settingslib架包
implementation files('libs\\settingslib.jar')
解决编译时可能出现的库冲突错误
这是因为settingslib.jar内容也依赖了相同的库,与我们自己项目的库冲突了
报错如图:
解决办法
用压缩包打开jar
直接根据上面的报错信息删除库文件目录
注意下面这个不能删除,这个是我们需要使用的settingslib库,
而jar里其他目录里的库文件如果冲突都可以删除,如下标记
验证架包成功
下面是用蓝牙开发的一部分代码试验一下
import android.bluetooth.BluetoothDevice
import android.content.Context
import android.util.Log
import com.android.settingslib.bluetooth.LocalBluetoothManager
class SettingsLibBtHelp {
private var mLocalBluetoothManager: LocalBluetoothManager? = null
/**
* 初始化蓝牙管理器
*
* @param device
*/
fun initLocalBluetoothManager(context: Context) {
mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, object : LocalBluetoothManager.BluetoothManagerCallback {
override fun onBluetoothManagerInitialized(p0: Context?, p1: LocalBluetoothManager?) {
mLocalBluetoothManager = p1
Log.e("zh", "SettingsLibBtHelp:初始化结果${p1}")
}
})
}
fun connect(device: BluetoothDevice?) {
val blDevice = mLocalBluetoothManager?.cachedDeviceManager?.findDevice(device)
blDevice?.connect(true)
}
}
End
本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/17363003.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2020-05-05 Android开发 VectorDrawable 矢量图 (四)矢量图动画放入到一个xml文件中
2020-05-05 Git 分支管理【转载】