0

我需要确定设备是平板电脑、可折叠设备还是手机。我正在使用以下代码来定义平板电脑:

public boolean isTablet(Context context) {
        boolean xlarge = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4);
        boolean large = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE);
        return (xlarge || large);
    }

我在几台设备上测试了这段代码,它工作正常。但我仍然不确定这是百分百的工作选择。

但我还有另一个问题。我还没有找到确定可折叠设备的方法。

请帮忙,是否可以确定设备是否可折叠?

也许有人已经找到了可行的解决方案,并可以建议如何实施。

PS 我只需要有关设备(手机、平板电脑、可折叠)的信息,以便稍后将此数据发送到 metrica

4

1 回答 1

1

要让您的应用具有折叠意识,请使用Jetpack Window Manager,这是一个为不同窗口功能(如折叠或铰链)提供通用 API 表面的库。当您的应用程序具有折叠意识时,可以调整窗口中的内容以避免折叠和铰链或利用它们并将它们用作自然分隔符。

它现在支持通过 WindowInfoTracker 和 FoldingFeature 折叠手机。WindowMetricsCalculator 帮助计算当前的WindowMetrics。

添加此依赖项 implementation "androidx.window:window:1.0.0"

class DisplayFeaturesActivity : AppCompatActivity() {

    private lateinit var binding: ActivityDisplayFeaturesBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityDisplayFeaturesBinding.inflate(layoutInflater)
        setContentView(binding.root)

        lifecycleScope.launch(Dispatchers.Main) {
            lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
                WindowInfoTracker.getOrCreate(this@DisplayFeaturesActivity)
                    .windowLayoutInfo(this@DisplayFeaturesActivity)
                    .collect { newLayoutInfo ->
                        // Use newLayoutInfo to update the layout.
                    }
            }
        }
    }
}

于 2022-03-04T17:39:52.977 回答