video 视屏基础

布局:<FrameLayout 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="com.example.mediaplayerdemo.MainActivity" >


    <SurfaceView
        android:id="@+id/play_video"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:orientation="horizontal">
        <TextView 
            android:id="@+id/play"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/button_shape"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:text="播放"
            android:layout_weight="1"/>


        <TextView
            android:id="@+id/pause"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/button_shape"
            android:gravity="center"
            android:text="暂停"
            android:textColor="@android:color/white" />


        <TextView 
            android:id="@+id/stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/button_shape"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:text="停止"
            android:layout_weight="1"/>
        <TextView 
            android:id="@+id/release"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/button_shape"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:text="重播"
            android:layout_weight="1"/>
    </LinearLayout>


</FrameLayout>


代码实现:

package com.example.mediaplayerdemo;


import java.io.IOException;


import android.annotation.SuppressLint;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener,
SurfaceHolder.Callback {


private SurfaceView surfaceView;
private TextView play, pause, stop,release;
MediaPlayer player;
SurfaceHolder surfaceHolder;


@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = (SurfaceView) findViewById(R.id.play_video);
play = (TextView) findViewById(R.id.play);
pause = (TextView) findViewById(R.id.pause);
stop = (TextView) findViewById(R.id.stop);
release = (TextView) findViewById(R.id.release);

play.setOnClickListener(this);
pause.setOnClickListener(this);
stop.setOnClickListener(this);
release.setOnClickListener(this);

//SurfaceHolder提供访问和控制这个SurfaceView潜在的表面。
surfaceHolder = surfaceView.getHolder();
//添加一个回调接口 对象
surfaceHolder.addCallback(this);
//设置分辨率
surfaceHolder.setFixedSize(220, 330);
//SurfaceView潜在的表面类型 需要时自动调用
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);


}


@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
player.start();
break;
case R.id.pause:
player.pause();
break;
case R.id.stop:
player.stop();
break;
case R.id.release:
if(player.isPlaying()){
player.seekTo(0);
            }else{
            player.start();
            }
break;
}
}


@SuppressLint("SdCardPath")
@Override
public void surfaceCreated(SurfaceHolder holder) {
player = new MediaPlayer();
//设置媒体播放器的音频流类型
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setDisplay(surfaceHolder);
try {
//设置资源播放路径
player.setDataSource("/sdcard/duishi/videos/video_1461331007757.mp4");
player.prepare();//视频缓冲
} catch (IllegalArgumentException | SecurityException
| IllegalStateException | IOException e) {
e.printStackTrace();
}


}


@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {


}


@Override
public void surfaceDestroyed(SurfaceHolder holder) {


}


@Override
protected void onDestroy() {

super.onDestroy();
if (player.isPlaying()) {
player.stop();
}
//释放资源内存,如不释放,停止后还会听到声音
player.release();
}


}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值