web-dev-qa-db-ja.com

ビデオを全画面で再生

アプリで動画を再生しようとしています。埋め込む必要があります。

"Androidでビデオファイルを再生" スレッドを通過しました。

このディスカッションで述べたように、VideoViewを使用してビデオを再生できます。しかし、いくつかの問題があります。

  1. フルスクリーンビデオが必要ですが、VideoViewをフルスクリーンに拡大するにはどうすればよいですか?それもビデオを引き延ばしますか?

  2. デフォルトの再生/進む/停止ボタンはまったく必要ありません。基本的に、ビデオの連続ループ再生が必要です。

here のようにMediaPlayerクラスを試しましたが、機能しませんでした。 res/rawディレクトリにビデオファイルがある場合、文字列形式はどのように見えるべきですか?私は本当にsdcardからビデオファイルを再生したくありません。アプリと一緒にバンドルするにはどうすればよいですか?

これらの2つのアプローチのいずれかが機能する場合、私はより良いでしょう。

これは私のコードです:

videoHolder = new VideoView(this); 
// videoHolder = (VideoView)findViewById(R.id.videoview); 
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
videoHolder.setLayoutParams(params); 
videoHolder.setMediaController(new MediaController(this)); 
setContentView(videoHolder); 
// 
// 
//// I tested and found that it works fine for .wmv, .3gp and .mp4 
//// videoHolder.setVideoURI(Uri.parse("file:///sdcard/video.3gp")); 
videoHolder.setVideoURI(Uri.parse("res/raw/demo.3gp")); 
videoHolder.requestFocus(); 
videoHolder.start(); 

不思議なことに、コメントされたURLは機能します(SDカード付きのもの)。もう1つは機能しません。 「file://res/raw/demo.3gp」から「demo」だけまで、いろいろな組み合わせを試しました。

ファイルにアクセスするための正しい文字列は何ですか?

17
user189020

ビデオをフルスクリーンモードで再生するためにコーディングを行う必要はありません

次のレイアウト形式をビデオビューを含むxmlに適用すると、フルスクリーンモードでビデオが確実に再生されます。それは私のものを実行しているので。 :) それが役に立てば幸い

 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
           Android:layout_width="fill_parent"
           Android:layout_height="fill_parent" >
   <VideoView Android:id="@+id/myvideoview"
             Android:layout_width="fill_parent"
             Android:layout_alignParentRight="true"
             Android:layout_alignParentLeft="true"
             Android:layout_alignParentTop="true"
             Android:layout_alignParentBottom="true"
             Android:layout_height="fill_parent">
    </VideoView>
 </RelativeLayout>

さらに、メディアコントローラーを追加すると、使用するコントローラーも提供されます。

49
Javanator

私は問題を解決しました:

1.続行/一時停止ボタンを削除するには、メディアコントローラーを削除します。ループの問題については、OnCompletionListenerを入力して、ビデオが最後に到達したときに再び開始するようにします。

_videoView.setOnCompletionListener(
        new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
            videoView.start();
        }
        });
_

2.ビデオのサイズを変更するには、次のようにVideoViewのメソッドonMeasure()をオーバーライドします。

_public class MyVideoView extends VideoView {

        public MyVideoView(Context context) {
            super(context);
        }

        @Override
        protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
        {
             setMeasuredDimension(480,800);
        }

    }
_
8
Someone

このスレッドは数週間前のものですが、再生するためにビデオファイルをSDカードにコピーする必要はありません。以下を使用しますが、「com.yourcompany.yourproject」の代わりにパッケージ名を挿入します。

videoView.setVideoURI(Uri.parse("Android.resource://com.yourcompay.yourproject/" + R.raw.yourvideoresource));

6
Brian

ビデオを全画面で再生したい場合は、このビデオが再生されるアクティビティで、Androidmanifest.xmlファイルにこれらのコード行を追加するだけです。これらの2行をAndroidマニフェストファイルに追加するだけです。

 Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" 
 Android:configChanges="orientation|screenSize"

私のandroidmanifest.xmlファイルのように私はそれを追加しました

  <activity
        Android:name="com.appliconic.straminglivevideo.MainActivity"
        Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" 
        Android:configChanges="orientation|screenSize"
        Android:label="@string/app_name" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
4
Pir Fahim Shah

@Javanatorの回答を少し変更しましたが、これはビデオを拡大しません。

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
           Android:layout_width="fill_parent"
           Android:layout_height="fill_parent" >
   <VideoView Android:id="@+id/myvideoview"
              Android:layout_width="match_parent"
              Android:layout_height="match_parent"
              Android:layout_centerVertical="true"
              Android:layout_centerHorizontal="true">
    </VideoView>
 </RelativeLayout>

これが誰かを助けることを願っています:)