テレビにyoutube.com/tvを表示するアプリを作っています。シンプルで素敵なレイアウトで、スマートフォンでのペアリングや操作などの便利な機能もあります。だから..私はURLを取得するためにwebviewを使用しています:youtube.com/tv
ビデオが選択されたときにフルスクリーンで自動的に表示されることを除いて、すべてが正常に機能します。
通常、私はすべての答えを検索していますが(ここ)、これは難しいです。
私はすべてがウェブビュー内で起こることを望みます。それは可能でしょうか?または、新しいインテントを開始する必要がありますか、それともeksを呼び出すためにnewclassvideoview.javaを作成する必要がありますか。videoview.xml?これについては本当によくわかりません。私が尋ねる理由は、ビデオが開始されると、youtube.com / tvがプレイリストのように次に自動的に再生され、そのままにしておくことを望んでいるからです。
これを行う方法については、 http: //developer.android.com/reference/android/webkit/WebChromeClient.html#onShowCustomView(android.view.View、android.webkit.WebChromeClient.CustomViewCallback)でHTML5フルスクリーンに関するドキュメントを見つけましたが、まだ混乱しています。それは行く方法ですか?使用:
public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback)
と:
public void onHideCustomView ()
これが私のメインのTV.javaです。私はこのようなものにとても慣れていないので、優しくしてください。
@SuppressLint("SetJavaScriptEnabled")
public class Tv extends Activity
{
WebView web;
@Override
public void onCreate(Bundle savedInstanceState)
{
//Transparent actionBar Only option menu available...
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(null);
setDisplayShowHomeEnabled(false);
setTitleShowHomeEnabled();
getActionBar().setDisplayShowHomeEnabled(false);
getActionBar().setDisplayShowTitleEnabled(false);
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
// webview id
web = (WebView) findViewById(R.id.webview);
//webchromeclient
web.setWebChromeClient(new WebChromeClient());
//hide search bar
web.setWebViewClient(new myWebClient());
//Enable javascript
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setPluginState(PluginState.ON);
//Scale video controls
web.setInitialScale(150);
// Test
//web.getSettings().setLoadWithOverviewMode(true);
//web.getSettings().setUseWideViewPort(true);
//web.setVerticalScrollbarOverlay(true);
//web.getSettings().setAllowFileAccess(true);
//Load url
web.loadUrl("http://www.youtube.com/tv");
//Load file from assets NB: Missing "S" is correct
// web.loadUrl("file:///android_asset/yt.html");
}
//Fullscreen
public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback)
{
}
public void onHideCustomView ()
{
}
//End fullscreen
private void setTitleShowHomeEnabled()
{
}
private void setDisplayShowHomeEnabled(boolean b)
{
}
public class myWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
}
// To handle "Back" key press event for WebView to go back to previous screen.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack())
{
web.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
// Ask if user wants to exit
@Override
public void onBackPressed()
{
new AlertDialog.Builder(this)
.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
//Tv.this.finish();
android.os.Process.killProcess(android.os.Process.myPid());
}
})
.setNegativeButton("No", null)
.show();
}
//Option menu
public class SimpleOptionMenu extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.text1:
AlertDialog alertDialog = new AlertDialog.Builder(this).create(); //Read Update
alertDialog.setTitle("Information");
alertDialog.setMessage("In order to log in to your account and activate the use of your smart phone, please select: -Sign in & settings- -> -Sign in- in the left menu, write down the activation code, and then click on -Activate- in this menu. Have a happy tube :) ");
alertDialog.setButton("Continue..", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
// here you can add functions
}
});
alertDialog.show();
break;
case R.id.text2:
Intent intent = new Intent(this, GetActivation.class);
this.startActivity(intent);
break;
//Exit
case R.id.text3:
android.os.Process.killProcess(android.os.Process.myPid()); // <- Complete kill
//Tv.this.finish(); <-Dosent kill totally
return true;
default:
return false;
}
return true;
}
}