facebook twitter hatena line email

「Android/VideoView/イベント」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(動画プレイヤーサンプル(イベント))
(動画プレイヤーサンプル(イベント))
行1: 行1:
  
 
==動画プレイヤーサンプル(イベント)==
 
==動画プレイヤーサンプル(イベント)==
すぐに再生される
+
<pre>
import android.media.MediaPlayer;
+
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
+
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
+
import android.os.Bundle;
import android.view.Gravity;
+
import android.view.Gravity;
import android.view.ViewGroup;
+
import android.view.ViewGroup;
import android.widget.FrameLayout;
+
import android.widget.FrameLayout;
import android.widget.VideoView;
+
import android.widget.VideoView;
public class MainActivity extends AppCompatActivity {
+
public class MainActivity extends AppCompatActivity {
 
     private VideoView mVideoView;
 
     private VideoView mVideoView;
 
     @Override
 
     @Override
行20: 行20:
 
         FrameLayout layout = (FrameLayout)findViewById(R.id.videoLayout);
 
         FrameLayout layout = (FrameLayout)findViewById(R.id.videoLayout);
 
         layout.addView(mVideoView, layoutParams);
 
         layout.addView(mVideoView, layoutParams);
        // タッチイベント(タッチしてるときはずっと発行される)
+
                // タッチイベント(タッチしてるときはずっと発行される)
        mVideoView.setOnTouchListener(new View.OnTouchListener() {
+
                mVideoView.setOnTouchListener(new View.OnTouchListener() {
            @Override
+
                    @Override
            public boolean onTouch(View v, MotionEvent me) {
+
                    public boolean onTouch(View arg0, MotionEvent arg1) {
                 Log.i("video", "onTouch");
+
                        Log.i(TAG, "onTouch");
                 return true;
+
                        return true;
 +
                    }
 +
                 });
 +
                // 最後まで再生したらイベント発行
 +
                mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
 +
                    @Override
 +
                    public void onCompletion(MediaPlayer mp) {
 +
                        Log.i(TAG, "onCompletion");
 +
                    }
 +
                });
 +
                // 再生準備完了したらイベント発行(ライフサイサイクルでpauseになっても発行)
 +
                // setVideoPathを設定し準備できたら発行される
 +
                mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
 +
                    @Override
 +
                    public void onPrepared(MediaPlayer mp) {
 +
                        Log.i(TAG, "onPrepared");
 +
                        //mVideoView.start();
 +
                    }
 +
                 });
 +
                // エラーイベント
 +
                mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
 +
                    @Override
 +
                    public boolean onError(MediaPlayer media, int what, int extra) {
 +
                        Log.i(TAG, "onError");
 +
                        return true;
 +
                    }
 +
                });
 +
        mVideoView.setVideoPath("~.mp4");
 +
        Button playButton = (Button)findViewById(R.id.playbutton);
 +
        playButton.setOnClickListener(new View.OnClickListener() {
 +
            public void onClick(View v) {
 +
                mVideoView.start();
 
             }
 
             }
 
         });
 
         });
         // 最後まで再生したらイベント発行
+
         Button btnpauseButton = (Button)findViewById(R.id.pausebutton);
         mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
+
         btnpauseButton.setOnClickListener(new View.OnClickListener() {
            @Override
+
             public void onClick(View v) {
             public void onCompletion(MediaPlayer mp) {
+
                 mVideoView.pause();
                 Log.i("video", "onCompletion");
+
 
             }
 
             }
 
         });
 
         });
         // 再生準備完了したらイベント発行
+
 
         mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+
         Button seekButton = (Button)findViewById(R.id.seekbutton);
            @Override
+
         seekButton.setOnClickListener(new View.OnClickListener() {
             public void onPrepared(MediaPlayer mp) {
+
             public void onClick(View v) {
                Log.i("video", "onPrepared");
+
                 mVideoView.seekTo(7000);
                 mVideoView.start();
+
 
             }
 
             }
 
         });
 
         });
         // エラーイベント
+
         Button stopPlaybackButton = (Button)findViewById(R.id.stopplaybackbutton);
         mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
+
         stopPlaybackButton.setOnClickListener(new View.OnClickListener() {
             @Override
+
             public void onClick(View v) {
             public boolean onError(MediaPlayer media, int what, int extra) {
+
                mVideoView.stopPlayback();
                 Log.i("video", "onError");
+
            }
                return true;
+
        });
 +
        Button replayButton = (Button)findViewById(R.id.replaybutton);
 +
        replayButton.setOnClickListener(new View.OnClickListener() {
 +
             public void onClick(View v) {
 +
                 //progresbar.setVisibility(View.VISIBLE);
 +
                mVideoView.seekTo(0);
 +
                mVideoView.start(); // 再度createTrackThreadが実行される
 +
                //log.i(TAG, "videoView startVideo");
 
             }
 
             }
 
         });
 
         });
        mVideoView.setVideoPath("~.mp4");
 
        mVideoView.start();
 
 
     }
 
     }
}
+
}
 +
</pre>
  
 
res/layout/activity_main.xml
 
res/layout/activity_main.xml
<FrameLayout android:id="@+id/videoLayout" android:layout_width="match_parent" android:layout_height="200dp"></FrameLayout>
+
<pre>
 +
    <ScrollView
 +
        android:layout_width="match_parent"
 +
        android:layout_height="wrap_content"
 +
        >
 +
    <LinearLayout
 +
        android:layout_width="match_parent"
 +
        android:layout_height="match_parent"
 +
        android:gravity="center_horizontal"
 +
        android:orientation="vertical"
 +
            >
 +
        <Button
 +
            android:text="動画再生"
 +
            android:layout_width="wrap_content"
 +
            android:layout_height="wrap_content"
 +
            android:id="@+id/playbutton">
 +
        </Button>
 +
        <Button
 +
            android:text="動画停止"
 +
            android:layout_width="wrap_content"
 +
            android:layout_height="wrap_content"
 +
            android:id="@+id/pausebutton">
 +
        </Button>
 +
        <Button
 +
            android:text="動画seek"
 +
            android:layout_width="wrap_content"
 +
            android:layout_height="wrap_content"
 +
            android:id="@+id/seekbutton">
 +
        </Button>
 +
        <Button
 +
            android:text="動画再生停止"
 +
            android:layout_width="wrap_content"
 +
            android:layout_height="wrap_content"
 +
            android:id="@+id/stopplaybackbutton">
 +
        </Button>
 +
        <Button
 +
            android:text="リプレイ"
 +
            android:layout_width="wrap_content"
 +
            android:layout_height="wrap_content"
 +
            android:id="@+id/replaybutton">
 +
        </Button>
 +
                <VideoView
 +
                    android:id="@+id/VideoView1"
 +
                    android:layout_width="match_parent"
 +
                    android:layout_height="100dp"
 +
                    />
 +
    </LinearLayout>
 +
    </ScrollView>
 +
</pre>
  
 
==参照==
 
==参照==
 
VideoView公式:https://developer.android.com/reference/android/widget/VideoView
 
VideoView公式:https://developer.android.com/reference/android/widget/VideoView

2018年11月15日 (木) 18:09時点における版

動画プレイヤーサンプル(イベント)

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.VideoView;
public class MainActivity extends AppCompatActivity {
    private VideoView mVideoView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mVideoView = new VideoView(this);
        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        layoutParams.gravity = Gravity.CENTER;
        FrameLayout layout = (FrameLayout)findViewById(R.id.videoLayout);
        layout.addView(mVideoView, layoutParams);
                // タッチイベント(タッチしてるときはずっと発行される)
                mVideoView.setOnTouchListener(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View arg0, MotionEvent arg1) {
                        Log.i(TAG, "onTouch");
                        return true;
                    }
                });
                // 最後まで再生したらイベント発行
                mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        Log.i(TAG, "onCompletion");
                    }
                });
                // 再生準備完了したらイベント発行(ライフサイサイクルでpauseになっても発行)
                // setVideoPathを設定し準備できたら発行される
                mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mp) {
                        Log.i(TAG, "onPrepared");
                        //mVideoView.start();
                    }
                });
                // エラーイベント
                mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                    @Override
                    public boolean onError(MediaPlayer media, int what, int extra) {
                        Log.i(TAG, "onError");
                        return true;
                    }
                });
        mVideoView.setVideoPath("~.mp4");
        Button playButton = (Button)findViewById(R.id.playbutton);
        playButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mVideoView.start();
            }
        });
        Button btnpauseButton = (Button)findViewById(R.id.pausebutton);
        btnpauseButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mVideoView.pause();
            }
        });

        Button seekButton = (Button)findViewById(R.id.seekbutton);
        seekButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mVideoView.seekTo(7000);
            }
        });
        Button stopPlaybackButton = (Button)findViewById(R.id.stopplaybackbutton);
        stopPlaybackButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mVideoView.stopPlayback();
            }
        });
        Button replayButton = (Button)findViewById(R.id.replaybutton);
        replayButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //progresbar.setVisibility(View.VISIBLE);
                mVideoView.seekTo(0);
                mVideoView.start(); // 再度createTrackThreadが実行される
                //log.i(TAG, "videoView startVideo");
            }
        });
    }
}

res/layout/activity_main.xml

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical"
            >
        <Button
            android:text="動画再生"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/playbutton">
        </Button>
        <Button
            android:text="動画停止"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/pausebutton">
        </Button>
        <Button
            android:text="動画seek"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/seekbutton">
        </Button>
        <Button
            android:text="動画再生停止"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/stopplaybackbutton">
        </Button>
        <Button
            android:text="リプレイ"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/replaybutton">
        </Button>
                <VideoView
                    android:id="@+id/VideoView1"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    />
    </LinearLayout>
    </ScrollView>

参照

VideoView公式:https://developer.android.com/reference/android/widget/VideoView