有没有一个api可以用来确定应用程序运行的设备是否恰好是三星的“边缘”设备之一?也就是说,一种具有圆形边缘的装置,而不是具有直角边缘的装置。(我相信三星是目前唯一一家生产这些产品的公司。)
此外,一些旧的“边缘”设备只有一个圆形边缘,而新的设备有两个。是否可以区分这些情况:没有圆角、一个圆角、两个圆角?
最佳答案
我也遇到过这个问题,在阅读了the SDK docs之后,检查jar,并尝试了一些错误;这是我在不添加sdk库的情况下检查samsung edge设备(即samsung galaxy s8/s9)的方法。
internal fun isEdgeDevice(): Boolean {
var hasCocktailPanel = false
try {
val sLookImplClass = Class.forName("com.samsung.android.sdk.look.SlookImpl")
if (sLookImplClass != null) {
val isFeatureEnabledMethod =
sLookImplClass.getDeclaredMethod("isFeatureEnabled", Int::class.java)
hasCocktailPanel = isFeatureEnabledMethod.invoke(null, 7) as Boolean
}
} catch (ignored: Exception) {
}
return hasCocktailPanel
}
说明:
此方法尝试查找
SlookImpl
类。如果找到了,我们可以查询鸡尾酒面板的可用性。
注意:在调用
isEdgeDevice()
方法之前,我将检查Build.MANUFACTURER
和Build.BRAND
是否为“Samsung”,然后继续检查其边缘设备是否为“Samsung”。