是否有 API 可用于确定运行应用程序的设备是否恰好是三星“Edge”设备之一?也就是说,一种具有圆形边缘的设备,而不是具有直角边缘的设备。(我相信三星是目前唯一一家制造这些产品的公司。)
此外,一些较旧的“Edge”设备只有一个圆边,而较新的设备有两个。是否可以区分这些情况:没有圆边、一个圆边、两个圆边?
是否有 API 可用于确定运行应用程序的设备是否恰好是三星“Edge”设备之一?也就是说,一种具有圆形边缘的设备,而不是具有直角边缘的设备。(我相信三星是目前唯一一家制造这些产品的公司。)
此外,一些较旧的“Edge”设备只有一个圆边,而较新的设备有两个。是否可以区分这些情况:没有圆边、一个圆边、两个圆边?
我也遇到过这个问题,在阅读了 SDK 文档后,检查了 jar,并尝试了一些错误;这是我在不添加 SDK 库的情况下检查 Samsung Edge 设备(即三星 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
类。
如果它找到了,那么我们可以查询 COCKTAIL_PANEL 的可用性。
注意:在调用isEdgeDevice()
方法之前,我会检查Build.MANUFACTURER
andBuild.BRAND
是否是“samsung”,然后我会继续检查它是否是边缘设备。