`
ch_kexin
  • 浏览: 902953 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

TBS腾讯浏览服务的SDK接入-Android studio

 
阅读更多

 

TBS官网  普通接入参考项目中的 App、BrowserActivity、X5WebView 等类中相关实现。

第一步:下载jar包并添加至项目

第二步:Android studio修改相关配置

  • 打开对应module中的build.gradle添加的
    android{
       defaultConfig{
            ndk{abiFilters "armeabi"}
        }
     }
     
  • 若配置后编译报错,需在gradle.properties加上 Android.useDeprecatedNdk=true
  • src/main/目录下创建jniLibs;在其创建 armeabi目录并加入liblbs.so文件配置图

第三步:AndroidManifest.xml里权限声明

 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<!-- 硬件加速对X5视频播放非常重要,建议开启 -->
<uses-permission android:name="android.permission.GET_TASKS"/>

 配置图

 

第四步:Application中对初始化x5内核接口

QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

    @Override
    public void onViewInitFinished(boolean b) {
        //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
        Log.d("app", " onViewInitFinished is " + b);
    }

    @Override
    public void onCoreInitFinished() {
        // TODO Auto-generated method stub
    }
};

//x5内核初始化接口
QbSdk.initX5Environment(getApplicationContext(), cb);

 配置图

第五步:创建X5WebView继承SDK中WebView

声明WebViewClient

 

private WebViewClient client = new WebViewClient() {
    /**
     * 防止加载网页时调起系统浏览器
     */
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
};

 设置WebViewClient

 

 

@SuppressLint("SetJavaScriptEnabled")
public X5WebView(Context arg0, AttributeSet arg1) {
    super(arg0, arg1);
    this.setWebViewClient(client);
    initWebViewSettings();
    this.getView().setClickable(true);
}

 初始化WebViewSettings

private void initWebViewSettings() {
    WebSettings webSetting = this.getSettings();
    webSetting.setJavaScriptEnabled(true);
    webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
    webSetting.setAllowFileAccess(true);
    webSetting.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
    webSetting.setSupportZoom(true);
    webSetting.setBuiltInZoomControls(true);
    webSetting.setUseWideViewPort(true);
    webSetting.setSupportMultipleWindows(true);
    webSetting.setAppCacheEnabled(true);
    webSetting.setDomStorageEnabled(true);
    webSetting.setGeolocationEnabled(true);
    webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
    webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
    webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);
}

 些WebView中drawChild

@Override
protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
    boolean ret = super.drawChild(canvas, child, drawingTime);
    canvas.save();
    Paint paint = new Paint();
    paint.setColor(0x7fff0000);
    paint.setTextSize(24.f);
    paint.setAntiAlias(true);
    if (getX5WebViewExtension() != null) {
        canvas.drawText(this.getContext().getPackageName() + "-pid:"
                + android.os.Process.myPid(), 10, 50, paint);
        canvas.drawText(
                "X5  Core:" + QbSdk.getTbsVersion(this.getContext()), 10,
                100, paint);
    } else {
        canvas.drawText(this.getContext().getPackageName() + "-pid:"
                + android.os.Process.myPid(), 10, 50, paint);
        canvas.drawText("Sys Core", 10, 100, paint);
    }
    canvas.drawText(Build.MANUFACTURER, 10, 150, paint);
    canvas.drawText(Build.MODEL, 10, 200, paint);
    canvas.restore();
    return ret;
}

 

 

 

第六步:调整cookie的使用

com.tencent.smtt.sdk.CookieManager和com.tencent.smtt.sdk.CookieSyncManager的相关接口的调用,在接入SDK后,需要放到创建X5的WebView之后(也就是X5内核加载完成)进行;否则,cookie的相关操作只能影响系统内核。

可参项目BrowserActivity类中 initWebViewSetting()

 

/**
 * init WebView
 */
private void initWebViewSetting() {
    WebSettings webSetting = mWebView.getSettings();
    webSetting.setAllowFileAccess(true);
    webSetting.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
    webSetting.setSupportZoom(true);
    webSetting.setBuiltInZoomControls(true);
    webSetting.setUseWideViewPort(true);
    webSetting.setSupportMultipleWindows(false);
    webSetting.setAppCacheEnabled(true);
    webSetting.setDomStorageEnabled(true);
    webSetting.setJavaScriptEnabled(true);
    webSetting.setGeolocationEnabled(true);
    webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
    webSetting.setAppCachePath(this.getDir("appcache", 0).getPath());
    webSetting.setDatabasePath(this.getDir("databases", 0).getPath());
    webSetting.setGeolocationDatabasePath(this.getDir("geolocation", 0)
            .getPath());
    webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
    long time = System.currentTimeMillis();
    if (mIntentUrl == null) {
        mWebView.loadUrl(mHomeUrl);
    } else {
        mWebView.loadUrl(mIntentUrl.toString());
    }

    // print the time of webView load
    TbsLog.d("time-cost", "cost time: " + (System.currentTimeMillis() - time));

    // manage Cookie
    CookieSyncManager.createInstance(this);
    CookieSyncManager.getInstance().sync();
}

 

 

第七步:兼容视屏播放

1) 享受页面视屏的完整播放体验,需如下声明:

页面的Activity需要声明android:configChanges=”orientation|screenSize|keyboardHidden”

2) 视屏为了避免闪屏问题,需如下声明:

  1. Activity在onCreate时需要设置: getWindow().setFormat(PixelFormat.TRANSLUCENT);(这个对宿主没什么影响,建议声明)
  2. 以下接口禁止(直接或反射)调用,避免视频画面无法显示:

webview.setLayerType(); 
webview.setDrawingCacheEnabled(true);

 

第八步:避免输入法界面弹出后遮挡输入光标的问题

方法一在AndroidManifest.xml中设置

android:windowSoftInputMode="stateHidden|adjustResize"

 方法二在代码中动态设置

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

 

补充:Tbs视频播放器接入说明

  1. 第一步:AndroidManifest需要如下的注册:
    <!--视频-->
    <activity
        android:name="com.tencent.smtt.sdk.VideoActivity"
        android:alwaysRetainTaskState="true"
        android:configChanges="orientation|screenSize|keyboardHidden"
        android:exported="false"
        android:launchMode="singleTask">
        <intent-filter>
            <action android:name="com.tencent.smtt.tbs.video.PLAY"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>
     
  2. 第二步:通过TbsVideo调用播放视频,如下:
  3. public static boolean canUseTbsPlayer(Context context) 
    //判断当前Tbs播放器是否已经可以使用。
    
    public static void openVideo(Context context, String videoUrl) 
    //直接调用播放接口,传入视频流的url
    
    public static void openVideo(Context context, String videoUrl, Bundle extraData) 
    //extraData对象是根据定制需要传入约定的信息,没有需要可以传如null
    
    //判断当前Tbs播放器是否已经可以使用。
    if (TbsVideo.canUseTbsPlayer(MainActivity.this)) {
    
        //直接调用播放接口,传入视频流的url
        TbsVideo.openVideo(MainActivity.this, "http://192.168.3.108:8080/alert_icon.mp4");
    }
     源码附上

    https://github.com/banwenmang/X5web

分享到:
评论

相关推荐

    android集成腾讯TBS完成office在线浏览示例

    在Android平台上,集成腾讯TBS(QuickBrowser,全称腾讯浏览服务)是为了实现Office文档的在线预览功能,尤其适用于需要在移动应用中查看Word、Excel、PPT等办公文件的场景。本示例旨在帮助开发者快速理解并实现这一...

    腾讯X5内核-android开发

    接入腾讯X5内核的过程分为两个主要部分:Android Studio SDK接入和Eclipse SDK接入。下面我们将详细介绍这两个过程。 1. Android Studio SDK接入: 在Android Studio项目中,首先你需要添加腾讯X5内核的依赖库。这...

    TBSDemo:TBS腾讯浏览服务集成Demo

    TBS腾讯浏览服务接入 基本上的话照着这个文档接入是没有什么问题的,但是打开本地文件的时候,还是出现了一点小问题,因为文档里面没有说明。 基础配置 现在的Android开发都使用Android Studio了,所以只需要在app的...

    使用腾讯TBS浏览office

    【使用腾讯TBS浏览Office】:腾讯TBS(Tuoku Browser Service)是腾讯推出的一款浏览服务,它基于强大的X5内核技术。X5内核是腾讯为移动设备设计的一款高性能、低耗能的浏览器核心,广泛应用于微信、QQ等腾讯系应用...

    X5WebView 静态集成 SO包

    tbs_res_imtt_tbs_release_tbs_core_3.8.0.2059_043906_20180119_142303 ...Android Studio用户可在module的build.gradle文件的dependencies中添加 api 'com.tencent.tbs.tbssdk:sdk:43903'直接接入

    Android集成腾讯X5实现文档浏览功能

    1.前往https://x5.tencent.com/下载Android的内核,新版本的腾讯X5可以直接在bulid.gradle集成 api ‘com.tencent.tbs.tbssdk:sdk:43697’,如果是在App里集成可以把api换成implementation 2.AndroidStudio导入腾讯...

    Android适配64位TBS X5内核demo

    TBS X5内核是腾讯推出的一款高性能、轻量级的移动浏览解决方案,它提供了一套强大的Web渲染和JavaScript执行引擎,旨在提升网页加载速度和用户体验。本demo提供了详细的适配过程,帮助开发者理解和实现这一目标。 ...

    使用TBS实现doc、pdf等多格式文档在线阅读 源码

    在这种场景下,腾讯浏览服务(Tencent Browse Service,简称TBS)提供了一个高效的解决方案。本文将详细介绍如何使用TBS在Android Studio中实现doc、pdf等多种格式文档的在线阅读功能。 TBS是腾讯推出的一款轻量级...

    TBSX5Demo.zip

    【TBSX5Demo.zip】是一个压缩包,包含了一个基于腾讯TBS(Tencent Browser Shell)浏览服务的演示项目。TBS是腾讯推出的一种浏览器内核技术,它提供了高效的网页渲染和良好的性能优化,尤其在移动端应用中广泛使用。...

    PDFSearch.zip

    接下来,预览PDF文件部分,"PDFSearch"项目使用了腾讯TBS(腾讯浏览服务)来实现。腾讯TBS是一个轻量级的浏览器引擎,它支持多种文件格式的在线预览,包括PDF。集成TBS的方式是将对应的SDK库导入项目,然后通过API...

    Android集成x5webview

    在Android开发中,X5WebView是一个非常重要的组件,它是由腾讯QQ浏览器团队推出的高性能、兼容性良好的WebView组件。X5WebView基于开源项目WebKit,并进行了大量的优化和定制,提供了丰富的API接口,可以替代Android...

Global site tag (gtag.js) - Google Analytics