2012-11-07 5 views
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; 
} 

} 

동영상 재생 여부는 어떻게 추적 할 수 있습니까? 어떤 조언을 해주셔서 감사합니다!

+0

YT API를 포함 시키려고 할 수 있다고 생각합니다. 재생, 정지 등의 일부 이벤트를 처리 할 수있는 호출이 있습니다. 여기를보세요. https://developers.google.com/youtube/js_api_reference – Andreas

+0

그 사실을 알고 있습니다. 자바 스크립트 onstatechange입니다,하지만 어떻게 위의 개체와 연결? – user1805396

+0

당신은 당신의 활동을 webview javascript로 연결하고 싶다면 Javascript와 상호 작용해야합니다 : 코드 샘플을 가지고있는 것을 설명하는 링크가 있습니다 : http://stackoverflow.com/questions/4325639/android-calling-javascript -functions-in-webview – Andreas

답변

관련 문제