android webview 支持WebRTC吗

如果想让自己的APP支持WebRTC 协议的视频流,解决方案如下:

放弃原生WebView 我们选用腾讯的TBS , 直接上代码

1.XML 文件


<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:orientation="horizontal"
        android:paddingLeft="8dp"
        android:paddingRight="8dp">

        <EditText
            android:id="@+id/et_url"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1" />

        <TextView
            android:id="@+id/tv_go"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:text="进入"
            android:textColor="@android:color/holo_blue_dark" />
    LinearLayout>

    <com.tencent.smtt.sdk.WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="8dp" />

LinearLayout>
  1. java 逻辑 (设置支持插件 pluginsEnabled )
@Suppress("UNREACHABLE_CODE")
class MainActivity : AppCompatActivity() {

    var url: String = ""
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        init()
    }

    private fun init() {
        initView()
        initWeb()
    }

    private fun initWeb() {
        webView.settings.let {
            it.javaScriptEnabled = true
            it.pluginsEnabled= true
        }
        webView.setWebViewClient(WebViewClient())
        webView.setWebChromeClient(object : WebChromeClient() {
            override fun onPermissionRequest(request: PermissionRequest){
                request.grant(request.getResources())
            }
        })
    }

    private fun initView() {
        url = SPUtils.get(this, "url", "http://wwww.baidu.com") as String
        et_url.setText(url)

        tv_go.setOnClickListener(View.OnClickListener {
            url = et_url.text.toString()
            webView.loadUrl(url)
            SPUtils.put(this, "url", url)
        })
    }

    override fun onDestroy() {
        super.onDestroy()
        webView.destroy()
    }
}

  1. module 的 gradle配置
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 29
    buildToolsVersion "30.0.0"

    defaultConfig {
        applicationId "com.winspread.browser"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.0'
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    api 'com.tencent.tbs.tbssdk:sdk:43903'
}

你可能感兴趣的:(知识积累)