アプリで動画を再生しようとしています。埋め込む必要があります。
"Androidでビデオファイルを再生" スレッドを通過しました。
このディスカッションで述べたように、VideoViewを使用してビデオを再生できます。しかし、いくつかの問題があります。
フルスクリーンビデオが必要ですが、VideoViewをフルスクリーンに拡大するにはどうすればよいですか?それもビデオを引き延ばしますか?
デフォルトの再生/進む/停止ボタンはまったく必要ありません。基本的に、ビデオの連続ループ再生が必要です。
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」だけまで、いろいろな組み合わせを試しました。
ファイルにアクセスするための正しい文字列は何ですか?
<?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>
さらに、メディアコントローラーを追加すると、使用するコントローラーも提供されます。
私は問題を解決しました:
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);
}
}
_
このスレッドは数週間前のものですが、再生するためにビデオファイルをSDカードにコピーする必要はありません。以下を使用しますが、「com.yourcompany.yourproject」の代わりにパッケージ名を挿入します。
videoView.setVideoURI(Uri.parse("Android.resource://com.yourcompay.yourproject/" + R.raw.yourvideoresource));
ビデオを全画面で再生したい場合は、このビデオが再生されるアクティビティで、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>
@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>
これが誰かを助けることを願っています:)