我有一个一直在使用Camera2VideoJava的项目。我是升级到API 29 (AndroidX),但是现在Camera2VideoFragment.java文件获得了下面的错误
对于这一行:import android.support.v13.app.FragmentCompat;
对于这一行:implements View.OnClickListener, FragmentCompat.OnRequestPermissionsResultCallback, MediaRecorder.OnInfoListener {
问题是android.support.v13
不再导入到我的项目中,因为AndroidX处理了它。通过更新到API 29 & AndroidX,导入通常是由Android在其更改时自动建议的。
最初期望的解决方案:
导入(import android.support.v13.app.FragmentCompat;
)通常会更改为类似于import androidx.core.app.FragmentCompat;
或androidx.legacy.app.FragmentCompat
(如建议的这里)的内容,这将解决上述两个错误。然而,这两种进口都不存在。
势解?
我认为导入并不是建议的/不存在的,因为建议使用FragmentCompact被否决了,现在推荐片段,所以我当时唯一的想法是使用片段而不是FragmentCompact,但这将导致以下其他问题:
if (FragmentCompat.shouldShowRequestPermissionRationale(this, permission)) {
FragmentCompat.requestPermissions(this, VIDEO_PERMISSIONS, REQUEST_VIDEO_PERMISSIONS);
FragmentCompat.requestPermissions(parent, VIDEO_PERMISSIONS,REQUEST_VIDEO_PERMISSIONS);
因为Fragment
没有这些方法。因此,我将不得不替换/重写这些功能,这..可能有用吗?但我并不怀疑我在这里是否走了很长的路,没有什么好的理由。
补充:
在更新到API 29时,是否有更好的解决FragmentCompat
问题的 Camera2VideoJava ??
发布于 2021-08-18 12:33:21
对我来说,最简单和最快的方法是:将build.gradle中的所有引用更改为:
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
在Camera2VideoFragment中添加:
import androidx.legacy.app.FragmentCompat;
&
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
将包名更改为fragment_camera2_video第20行中的包名。
<com.yyyy.xxxx.AutoFitTextureView
android:id="@+id/texture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
就是这样-就像魔法一样
顺便说一句-如果你正在寻找相机应用程序模板,我发现以下更好。它演示了camera2API、权限和视频捕获。但也允许您在录制时进行图像捕获。链接Camera2Video+image捕获
(您需要将ContextCompat更改为ActivityCompat)
https://stackoverflow.com/questions/59534731
复制相似问题