[英]How to implement TvView on Android TV?
To create a reduced TvView that displays on top of a WebView .创建显示在WebView顶部的简化TvView 。
This is specifically for live TV.这是专门用于直播电视的。
(I've seen numerous solutions that address streaming content, but this is intended for video that's delivered through the coaxial cable.) (我已经看到许多解决流媒体内容的解决方案,但这适用于通过同轴电缆传输的视频。)
The WebView portion works fine, and I've learned that a RelativeLayout is required in order to layer views. WebView部分工作正常,我了解到需要使用RelativeLayout才能对视图进行分层。
Also, TvView doesn't seem to be recognized, so I'm guessing that I'll probably need to use a SurfaceView instead.此外,似乎无法识别TvView ,所以我猜我可能需要改用SurfaceView 。
I've seen the TvInput , example applications, but it's extremely excessive.我看过TvInput ,示例应用程序,但它非常过分。 I'm not trying to recreate the TvInput service, just leverage on existing framework.
我不是要重新创建TvInput服务,只是利用现有框架。
I've searched all over for answers but can't seem to find anything.我到处寻找答案,但似乎找不到任何东西。
Thank you in advance for any assistance.提前感谢您的任何帮助。
As requested by tung .按照要求董建华。
activity_main.xml活动_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_browse_fragment"
android:name="com.company.app.MainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.company.app.MainActivity"
tools:deviceIds="tv"
tools:ignore="MergeRootFrame" >
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TvView
android:id="@+id/TvView"
android:layout_width="816dp"
android:layout_height="404dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp" />
</RelativeLayout >
MainActivity.java主活动.java
package com.company.app;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.media.tv.TvView;
import android.view.View;
import android.view.Window;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings;
public class MainActivity extends Activity {
private WebView mWebView;
private TvView mTvView;
private WebSettings mWebSettings;
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
mWebView = new WebView(this);
mWebSettings = mWebView.getSettings();
mWebSettings.setJavaScriptEnabled(true);
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
mWebView.loadUrl("http://10.28.98.150:1000/");
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
this.setContentView(mWebView);
mTvView = new TvView(this );
mTvView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
this.setContentView(mTvView);
}
@Override
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
String channelUrl="content://android.media.tv/channel/"+channelNumber;
mTvView.tune(mInputId, Uri.parse(channelUrl));
input id is available in TV database(refering to which source channel is coming from).输入 id 在电视数据库中可用(指的是来自哪个源频道)。
If you pass these info to tvview it will start playing.如果您将这些信息传递给 tvview,它将开始播放。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.