2012-05-07 38 views
1

これでいくつかの読み込み時間が節約されるかもしれません....私のWEBVIEWでMP4ビデオを再生しようとしている時WEBVIEW BROWSERの中でビデオを再生する必要はありません。私は完全にそれと同じようにアンドロイドのためにネイティブのビデオプレーヤーをキックするいくつかのコードでOKです。より良い解決策があるのであれば、私は自分のWEBVIEWを修正するのと同じくらいこれまでに私が知っていたものよりも、私はそれがすべてです。Android WebView内でダイナミックmp4ビデオを再生するには

最初に私はAndroidまたはJava開発者ではありません。しかし、コードを提供し、正しい方向に私を指し示すことは、通常、私がそこに着くのを助けます。過去4年間、私は実質的なメンバーシップを持つサイトを構築しました。 www.GoLiVeFitness.comおよびwww.GoLiveFitness.com/MobileソリューションはAsp.Netソリューションです。それは基本的にユーザーが簡単に4,800以上の無料運動ビデオを検索できるウェブサイトです。我々ははるかにクリーンな、はるかに縮小されたバージョンが、アプリのモバイル版を構築した。スマートフォンブラウザをモバイルウェブサイトに向けるようにユーザーに指示し続けるのではなく、Android WebViewを使用して内蔵HTML5ブラウザにウェブサイトを読み込むことにしました(これは私には間違いなく許してください)。

私はwebviewを完了し、サイトを完全に読み込みます。私はドロイドチャージにそれを展開することさえでき、サイトはウェブビューを通して完全にロードされます。ここに問題があります....ストアドプロシージャを含むすべてのタイプのT-SQLによって照会され、戻される動的ビデオは、Webビューで再生されません。再生ボタンをクリックすると、再生ボタンが開始されるように見えますが、決して再生されません。私は非常にすぐに私のようなものを処理するために十分なコードが私のwebviewにないと決めました。繰り返しますが、いくつかのビデオをハードコーディングすることはできません。このサイトには4,800を超えるビデオがあります。ユーザーは、例えば脚を入力して130脚の練習を取り戻すことができます。彼らは名前のリンクに触れ、ビデオを再生することによって1つを選択することができます。 ****だから私の質問は、WebViewブラウザでmp4形式のビデオを再生できるようにする方法です。私はここではうまくいくかもしれない解決策を見ましたが、コードを稼働させるには十分ではありません。私が望んでいることは、誰かが私のWebViewと共にコードを修正する手助けをすることができるということです。私が試したとき、私は多くの、多くの、多くのエラーを受けました。 WebViewブラウザで実行されるWebViewコードを貼り付けてから、ソリューションコードを貼り付けて、誰かが私に何を変更して動作させるべきかを教えてくれることを期待します。注意:私が正しいコードを本当に表示する必要がある場合は、お手伝いできれば助かります。繰り返しますが、私はこれについて非常に新しいです。

----- GoLiveFitnessActivity.javaファイルのWebViewコードのマイコード---- package golivefitness.mob;

import android.app.Activity; 
import android.drm.DrmManagerClient.OnErrorListener; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.KeyEvent; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.FrameLayout; 
import android.widget.LinearLayout; 
import android.widget.VideoView; 

public class GoLiveFitnessActivity extends Activity { 

private WebView mWebView; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    WebView mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://www.golivefitness.com/mobile"); 
    mWebView.setWebViewClient(new HelloWebViewClient()); 
} 

    private class HelloWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) 
     { 
      view.loadUrl(url); 
      return true; 
     } 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
      mWebView.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
} 

私は How to play a video in a webview with android?

public class InredisChromeClient extends WebChromeClient implements   OnCompletionListener, OnErrorListener { 
private InterfazWebInredis interfazWeb; // Use Your WebView instance instead 

private VideoView mCustomVideoView; 

private LinearLayout mContentView; 
private FrameLayout mCustomViewContainer; 
private WebChromeClient.CustomViewCallback mCustomViewCallback; 
private LinearLayout mErrorConsoleContainer; 
static final FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new FrameLayout.LayoutParams(
     ViewGroup.LayoutParams.FILL_PARENT, 
     ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER); 

public InredisChromeClient(InterfazWebInredis iwi) { 
    super(); 
    this.interfazWeb = iwi; 
} 

public void onShowCustomView(View view, CustomViewCallback callback) { 
    // super.onShowCustomView(view, callback); 
    if (view instanceof FrameLayout) { 
     mCustomViewContainer = (FrameLayout) view; 
     mCustomViewCallback = callback; 
     mContentView = (LinearLayout) interfazWeb.findViewById(R.id.mainContainer); 
     if (mCustomViewContainer.getFocusedChild() instanceof VideoView) { 
      mCustomVideoView = (VideoView) mCustomViewContainer.getFocusedChild(); 
      // frame.removeView(video); 
      mContentView.setVisibility(View.GONE); 
      mCustomViewContainer.setVisibility(View.VISIBLE); 
      interfazWeb.setContentView(mCustomViewContainer); 
      mCustomVideoView.setOnCompletionListener(this); 
      mCustomVideoView.setOnErrorListener(this); 
      mCustomVideoView.start(); 
     } 
    } 
} 

public void onHideCustomView() { 
    if (mCustomVideoView == null) 
     return; 
    // Hide the custom view. 
    mCustomVideoView.setVisibility(View.GONE); 
    // Remove the custom view from its container. 
    mCustomViewContainer.removeView(mCustomVideoView); 
    mCustomVideoView = null; 
    mCustomViewContainer.setVisibility(View.GONE); 
    mCustomViewCallback.onCustomViewHidden(); 
    // Show the content view. 
    mContentView.setVisibility(View.VISIBLE); 
} 

@Override 
public void onCompletion(MediaPlayer mp) { 
    mp.stop(); 
    mCustomViewContainer.setVisibility(View.GONE); 
    onHideCustomView(); 
    interfazWeb.setContentView(mContentView); 
} 

@Override 
public boolean onError(MediaPlayer mp, int what, int extra) { 
    interfazWeb.setContentView(R.layout.main); 
    return true; 
} 
} 
+0

デバイスの在庫ブラウザでモバイルサイトを参照すると、ビデオが再生されますか? – FoamyGuy

+2

http://meta.stackexchange.com/a/129787/142802 –

+0

を読んでください。動画は私のドロイドチャージと私の友人ドローイングで再生されます。電話機でブラウザを使用してgolivefitness.com/mobileにアクセスすれば、ログインして、すべてのビデオを再生します。あなたが好きならテストすることができます。私はそれがwebviewで同じように動作すると思ったが、明らかにそうではなかった。しかし、ブラウザからネイティブのビデオプレーヤーが起動され、私たちは完全にそれでOKです。 – user1380537

答えて

0

ないあなたは、この後に残っている場合は必ず私の問題を解決するかもしれませんが、あなたが開始する前に、あなたがこのような何かを行うことができスタックオーバーフローからコピーソリューションビデオ(私のビデオは「res/raw」フォルダに保存されています):

VideoViewの初期設定コード:

VideoView vd = (VideoView)view.findViewById(R.id.video); 
vd.setVideoURI(Uri.parse("android.resource:/PACKAGE_NAME/" + getVideo(context, "videoName"))); 
vd.start(); 

コード動的な動画取得する:

public static int getVideo(Context context, String name) 
{ 
    Assert.assertNotNull(context); 
    Assert.assertNotNull(name); 

    return context.getResources().getIdentifier(name, "raw", context.getPackageName()); 
} 

上記のコードを基本的に、あなたのsetVideoURI呼び出しに文字列名を渡すことができます。コードの2番目のチャンクで関連するアンドロイドIDを返してビデオを再生します(コード内のどこでも呼び出すことができます)。

これが役に立ちます。

関連する問題