有没有一个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类。
android - 如何以编程方式检测应用程序是否在Samsung“Edge”屏幕上运行?-LMLPHP
如果找到了,我们可以查询鸡尾酒面板的可用性。
android - 如何以编程方式检测应用程序是否在Samsung“Edge”屏幕上运行?-LMLPHP
注意:在调用isEdgeDevice()方法之前,我将检查Build.MANUFACTURERBuild.BRAND是否为“Samsung”,然后继续检查其边缘设备是否为“Samsung”。

08-18 12:19