代码A 来自CameraX项目,您可以看到source code。
当我删除@SuppressLint("RestrictedApi")
时,Android Studio将显示“只能从同一库组调用”,您会看到图片1 。
为什么我不能删除代码A 中的@SuppressLint("RestrictedApi")
?限制API是什么意思?
代码A
@SuppressLint("RestrictedApi")
private fun updateCameraUi() {
...
// Listener for button used to switch cameras
controls.findViewById<ImageButton>(R.id.camera_switch_button).setOnClickListener {
lensFacing = if (CameraX.LensFacing.FRONT == lensFacing) {
CameraX.LensFacing.BACK
} else {
CameraX.LensFacing.FRONT
}
try {
// Only bind use cases if we can query a camera with this orientation
CameraX.getCameraWithLensFacing(lensFacing)
// Unbind all use cases and bind them again with the new lens facing configuration
CameraX.unbindAll()
bindCameraUseCases()
} catch (exc: Exception) {
// Do nothing
}
}
}
图片1
答案 0 :(得分:2)
自编写教程以来,库中发生了重大更改。
与本教程相同,将软件包版本恢复为1.0.0-alpha06
可解决该问题。
答案 1 :(得分:0)
我假设您是从ValorIva
导入摄像机X。
您应该使用import android.graphics.Camera
中的相机,然后才能在其上调用此方法。
答案 2 :(得分:0)
这些是库中的问题,不会影响您的代码。
在使用这些API的几个代码示例中,文件中通常会有一个@SuppressLint("RestrictedApi")
隐藏警告。
尽管您必须确保使用的是正确的依赖项版本,但项目仍应按预期进行编译和运行。这些API的更改仍然非常频繁,如果您引用的是示例,则可能使用的是较旧的版本,此后发生了更改。
您最好的选择是直接查看源代码,如果您要调用的方法被声明为public
,那么您可能就不会有问题。