TextureView setSurfaceTexture 方法需要API 16级

TextureView setSurfaceTexture method requires API 16 level

TextureView.setSurfaceTexture 方法需要 API 16 级,但我目前的最低 14 级,我如何在 14、15 API 中使用此方法?

更新(添加代码)

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".view.MainActivity"
    tools:showIn="@layout/activity_main">

    <FrameLayout
        android:id="@+id/videoSurfaceContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextureView
            android:id="@+id/texture_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </FrameLayout>
</RelativeLayout>

在 Fragment 的 onCreateView 方法中:

View rootView = inflater.inflate(R.layout.content_main, container, false);
    mVideoContainer = rootView.findViewById(R.id.videoSurfaceContainer);
            mTextureView = (TextureView) rootView.findViewById(R.id.texture_view);
            if (mSurfaceTexture != null) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    mTextureView.setSurfaceTexture(mSurfaceTexture);
                }
            }
            mVideoControllerView.setAnchorView((FrameLayout) mVideoContainer);
            mTextureView.setSurfaceTextureListener(this);

表面纹理侦听器:

@Override
    public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
        mSurfaceTexture = surfaceTexture;
        Surface surface = new Surface(mSurfaceTexture);
        mMediaPlayer.setSurface(surface);
    }

    @Override
    public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int width, int height) {
        mSurfaceTexture = surfaceTexture;
    }

    @Override
    public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
        mSurfaceTexture = surfaceTexture;
        return false;
    }

    @Override
    public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
        mSurfaceTexture = surfaceTexture;
    }

TextureView.setSurfaceTexture method requires API level 16

TextureView.setSurfaceTexture 需要 API 16 级或更高 .

没有 #是 现在没有办法。您必须调用 API 级别 16

打开您的 build.gradle 部分

 defaultConfig {
    minSdkVersion 16    // must use 16 for this 
    targetSdkVersion 19 // set yours as per requirement 

}