5

是否有 API 可用于确定运行应用程序的设备是否恰好是三星“Edge”设备之一?也就是说,一种具有圆形边缘的设备,而不是具有直角边缘的设备。(我相信三星是目前唯一一家制造这些产品的公司。)

此外,一些较旧的“Edge”设备只有一个圆边,而较新的设备有两个。是否可以区分这些情况:没有圆边、一个圆边、两个圆边?

4

1 回答 1

0

我也遇到过这个问题,在阅读了 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.MANUFACTURERandBuild.BRAND是否是“samsung”,然后我会继续检查它是否是边缘设备。

于 2018-07-27T04:58:32.877 回答