15分で作る?【 動画の再生 】~選択再生~

Android 開発【動画の再生】 選択再生768

一覧から選んで動画を再生します。

今回は「画面の切り替え」を行います。
ActivityとIntentを理解していると簡単な動画ですが、初心者の方はほぼ理解不可能な動画です。
「ご自身のPCで再現」「ActivityとIntentの予習」として御覧ください。

初心者 :ご自身のPCで再現できるが、詳細は意味不明、アレンジも厳しい。
中級者 :再現と「なんとなく」理解可能。アレンジは厳しい。
経験者 :ActivityとIntentを理解してれば、ソースを見るだけで理解可能。

動画の再生【画面構成】

学習に使用する素材です。
ご自身で用意する場合はファイル名や拡張し、ファイルサイズにご注意ください。
初心者の方はサンプルを使用することを強くおすすめします。

ImageButton ニワトリ
iv0
ImageButton 犬
iv1
ImageButton 猫
iv2

※ 写真素材は【 写真素材ぱくたそ 】様からお借りしています。

サンプル動画 【ミニカー】

サンプル動画 【シャカシャカ】

サンプル動画 【ひよこ】

* 注意点:動画の形式によって再生できないものがありました。

プロジェクト、カンパニードメイン、パッケージネームを同じにするとコピペエラーが減ります。

Application name MyVideo
Company Domain test.com
Package name com.test.myvideo

Android 開発【動画プレーヤー】プロジェクト名

以下のファイル構成になります。
フォルダ名やファイル名を変更するとエラーになります。

ファイル構成2

一覧画面を完成させます。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:src="@drawable/iv0"
        android:onClick="iv0"
        android:layout_weight="1"
        android:scaleType="centerCrop"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <ImageView
        android:src="@drawable/iv1"
        android:onClick="iv1"
        android:layout_weight="1"
        android:scaleType="centerCrop"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <ImageView
        android:src="@drawable/iv2"
        android:onClick="iv2"
        android:layout_weight="1"
        android:scaleType="centerCrop"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

一覧画面のプログラムを作成します。

package com.test.myvideo;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // ボタンクリック
    public void iv0(View v) {

        // 画面移行の準備
        Intent intent = new Intent(this, Main2Activity.class);
        // 移行後に再生する動画を指定
        intent.putExtra("mp4", R.raw.video0);
        // 画面移行スタート
        startActivity(intent);
    }

    public void iv1(View v) {
        Intent intent = new Intent(this, Main2Activity.class);
        intent.putExtra("mp4", R.raw.video1);
        startActivity(intent);
    }

    public void iv2(View v) {
        Intent intent = new Intent(this, Main2Activity.class);
        intent.putExtra("mp4", R.raw.video2);
        startActivity(intent);
    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <VideoView
        android:id="@+id/v"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>
package com.test.myvideo;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        // 元の画面で指定した動画を取得
        Intent intent = getIntent();
        int mp4 = intent.getIntExtra("mp4",R.raw.video1);

        // ID取得
        VideoView v = (VideoView)findViewById(R.id.v);

        // 動画の指定
        v.setVideoURI(Uri.parse("android.resource://" + this.getPackageName() + "/" + mp4));

        // 再生スタート
        v.start();

        // コントローラNO(動画をタップするとメニュー表示)
        v.setMediaController(new MediaController(this));
    }
}


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.myvideo" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Main2Activity" >
        </activity>
    </application>

</manifest>