2
YouTube 플레이어를 액티비티 안에 임베드 할 예정입니다. 나는 그것이 연주 중인지 또는 이미 끝났는지 확인해야합니다. 코드는 다음과 같습니다webview 내에서 youtube 객체의 상태를 청취하는 방법
package com.example.videotest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.json.JSONException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.Toast;
public class MainActivity extends Activity {
WebView webview;
@SuppressLint({ "SetJavaScriptEnabled", "NewApi", "NewApi" })
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String ytId = getYoutubeID("http://youtu.be/GDka8VKLMJY");
final String iframe = "<html>" +
"<body>" +
"<object width="+"300"+"height="+"220"+">" +
"<param name=\"movie\" value=\"https://www.youtube.com/v/"+ytId+"?autoplay=&enablejsapi=1&modestbranding=1&rel=0&showinfo=0&autohide=1&theme=light&version=3\">" +
"</param>" +
"<param name="+"allowFullScreen"+ "value="+"false"+">" +
"</param>" +
"<param name="+"allowScriptAccess"+"value="+"always"+">" +
"</param>" +
"<embed src=\"https://www.youtube.com/v/"+ytId+"?autoplay=1&enablejsapi=1&modestbranding=1&rel=0&showinfo=0&autohide=1&theme=light&version=3\" type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" allowScriptAccess=\"always\" width=\"300\" height=\"220\">" +
"</embed>" +
"</object>" +
"</body>" +
"<html>";
ImageView play = (ImageView)findViewById(R.id.ImageView1);
play.setScaleType(ImageView.ScaleType.FIT_XY);
play.getLayoutParams().height=200;
play.getLayoutParams().width=-1;
webview=(WebView) findViewById(R.id.webView1);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setPluginState(PluginState.ON);
webview.setBackgroundColor(Color.parseColor("#00000000"));
play.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
webview.loadData(iframe, "text/html", "utf-8");
}});
}
public String getYoutubeID (String URL){
String youtubeId = "";
String pattern = "https?:\\/\\/(?:[0-9A-Z-]+\\.)?(?:youtu\\.be\\/|youtube\\.com\\S*[^\\w\\-\\s])([\\w\\-]{11})(?=[^\\w\\-]|$)(?![?=&+%\\w]*(?:['\"][^<>]*>|<\\/a>))[?=&+%\\w]*";
Pattern compiledPattern = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
CharSequence cs = URL;
Matcher matcher = compiledPattern.matcher(cs);
if(matcher.find()){
youtubeId=matcher.group(1);
Toast.makeText(getBaseContext(), matcher.group(1), Toast.LENGTH_LONG).show();
}
return youtubeId;
}
}
동영상 재생 여부는 어떻게 추적 할 수 있습니까? 어떤 조언을 해주셔서 감사합니다!
YT API를 포함 시키려고 할 수 있다고 생각합니다. 재생, 정지 등의 일부 이벤트를 처리 할 수있는 호출이 있습니다. 여기를보세요. https://developers.google.com/youtube/js_api_reference – Andreas
그 사실을 알고 있습니다. 자바 스크립트 onstatechange입니다,하지만 어떻게 위의 개체와 연결? – user1805396
당신은 당신의 활동을 webview javascript로 연결하고 싶다면 Javascript와 상호 작용해야합니다 : 코드 샘플을 가지고있는 것을 설명하는 링크가 있습니다 : http://stackoverflow.com/questions/4325639/android-calling-javascript -functions-in-webview – Andreas