1

これにより、読み取り時間を節約できる可能性があります.... WEBVIEW で MP4 ビデオを再生しようとすると、WEBVIEW ブラウザ内でビデオを再生する必要はありません。私は、それが機能する限り、Android のネイティブ ビデオ プレーヤーを開始するいくつかのコードでまったく問題ありません。私のウェブビューを変更する限り、私がここで見つけたものよりも良い解決策があれば、私はそれですべてです。

何よりもまず、私は Android や Java の開発者ではありません。ただし、コードを提供して正しい方向に向けることは、通常、そこに到達するのに役立ちます。過去 4 年間で、かなりの会員数を持つサイトを構築してきました。www.GoLiVeFitness.com および www.GoLiveFitness.com/Mobile。ソリューションは Asp.Net ソリューションです。基本的には4,800本以上の無料エクササイズ動画を簡単に検索できるサイトです。アプリのモバイル バージョンを構築しました。これは、大幅に縮小されたバージョンですが、はるかにクリーンです。ユーザーにスマートフォン ブラウザーでモバイル Web サイトを表示するように指示し続けるのではなく、Android WebView を使用して組み込みの html5 ブラウザーに Web サイトを読み込むことにしました (これが正しく言っていない場合は、ご容赦ください)。

WebView を完成させたところ、サイトが完全に読み込まれました。Droid Charge にデプロイすることもでき、サイトは webview を介して完全にロードされます。ここに問題があります....ストアド プロシージャを含むすべての種類の T-SQL によってクエリされ、戻される動的ビデオは、Web ビューで再生されません。再生ボタンをクリックすると、開始するように見えますが、開始されません。私はすぐに、そのようなものを処理するのに十分なコードが webview にないと判断しました。繰り返しますが、いくつかのビデオをハードコーディングしてもうまくいきません。このサイトには 4,800 以上の動画があります。たとえば、ユーザーが足を入力すると、130 の足のエクササイズが返されます。次に、名前のリンクをタップして 1 つを選択し、ビデオを再生します。****私の質問は、WebView ブラウザで mp4 形式のビデオを再生できるようにする方法です。ここでうまくいくかもしれない解決策を見ましたが、私は' コードを機能させるには、これが十分ではありません。私が望んでいるのは、誰かが私の WebView と一緒にコードを変更するのを手伝ってくれることです。私が試したとき、私は多くの、多くの、多くのエラーを受け取りました。したがって、最初に WebView ブラウザーで実行される WebView コードを貼り付けてから、解決策のコードを貼り付けて、機能させるために何を変更する必要があるかを誰かが教えてくれることを期待しています。注意: もしあなたが助けてくれるなら、私はあなたに本当に正しいコードを見せてもらう必要があるでしょう. 繰り返しますが、私はこれに非常に慣れていません。したがって、最初に WebView ブラウザーで実行される WebView コードを貼り付けてから、解決策のコードを貼り付けて、機能させるために何を変更する必要があるかを誰かが教えてくれることを期待しています。注意: もしあなたが助けてくれるなら、私はあなたに本当に正しいコードを見せてもらう必要があるでしょう. 繰り返しますが、私はこれに非常に慣れていません。したがって、最初に WebView ブラウザーで実行される WebView コードを貼り付けてから、解決策のコードを貼り付けて、機能させるために何を変更する必要があるかを誰かが教えてくれることを期待しています。注意: もしあなたが助けてくれるなら、私はあなたに本当に正しいコードを見せてもらう必要があるでしょう. 繰り返しますが、私はこれに非常に慣れていません。

----- GoLiveFitnessActivity.java ファイルの WebView コードからの私のコード---- パッケージ 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);
   }
}

私の問題を解決する可能性のあるスタックオーバーフローからコピーした解決策 アンドロイドでウェブビューでビデオを再生するには?

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;
}
}
4

1 に答える 1

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 呼び出しに渡すことができます。ビデオを再生するために、関連する Android ID を返すコードの 2 番目のチャンクを使用します (これは、コード内の任意の場所で呼び出すことができます)。

お役に立てれば。

于 2012-11-20T14:14:19.617 に答える