前言
你点开这个博客,说明你已经对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
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。