0915Android基础SurfaceView
来源:互联网 发布:淘宝上买腾讯视频会员 编辑:程序博客网 时间:2024/05/16 01:18
SurfaceView
SurfaceView使用步骤
Mediaplayer主要用于播放音频,因此它没有提供图像输出界面,此时就需要借助于SurfaceView来显示MediaPlayer播放的图像输出。
步骤
- 创建Mediaplayer对象,并让他加载指定的视频文件。
- 在界面布局中定义SurfaceView组件,或者在程序中创建SurfaceView主键。并为SurfaceView的SurfaceHolder添加Callback监听器。
- 调用MediaPlayer对象的setDisplay(SurfaceHolder sh)将播放的视频图像输出到指定的SurfaceView组件。
- 调用MediaPlayer对象的start()、stop()和pause()方法控制视频的播放。
SurfaceView简单实例
通过一个按钮来播放视频
权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
布局
<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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:gravity="center" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/btn_surface_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="播放视频"/> <SurfaceView android:id="@+id/surfaceview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"/></LinearLayout>
主线程
import android.app.Activity;import android.media.AudioManager;import android.media.MediaPlayer;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.SurfaceView;import android.view.View;import android.widget.Button;import java.io.IOException;public class MainActivity extends Activity { private Button mBtnSurface; private SurfaceView mSurfaceView; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtnSurface= (Button) findViewById(R.id.btn_surface_view); mSurfaceView= (SurfaceView) findViewById(R.id.surfaceview); mBtnSurface.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mediaPlayer == null) { mediaPlayer = new MediaPlayer(); } mediaPlayer.reset(); try { mediaPlayer.setDataSource(Environment.getExternalStorageDirectory()+"/DCIM/100MEDIA/VIDEO0001.mp4");//设置需要播放的视频 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置音频流的编号类型 mediaPlayer.setDisplay(mSurfaceView.getHolder());//将视频画面输出到SurfaceView mediaPlayer.prepare();//准备播放 mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.start();//开始播放 } }); } catch (IOException e) { e.printStackTrace(); } } }); }}
0 0
- 0915Android基础SurfaceView
- android基础学习之SurfaceView
- 【Android基础】(12)SurfaceView绘图API详解
- android基础画板的实现(surfaceView)
- Android Camera搭配SurfaceView开发相机基础
- SurfaceView基础
- android SurfaceView
- Android SurfaceView
- android SurfaceView
- Android SurfaceView
- android SurfaceView
- Android SurfaceView
- Android SurfaceView
- Android SurfaceView
- Android - SurfaceView
- Android SurfaceView
- android surfaceview
- Android SurfaceView
- Processing 教程(17) - Lerp and Lerp
- Android之MediaPlayer——SurfaceView的简单使用
- JavaScript eval() 函数
- Linux 以“换行符”作为文本行的结束
- 收藏磐实编程网发布的秀野堂HTML5入门视频教程
- 0915Android基础SurfaceView
- hdoj 1166 敌兵布阵
- idea工具的编码问题
- 理解浮点数的构成
- Web前段部分HTML标签解析
- raise KeyError("Spider not found: {}".format(spider_name)) KeyError: 'Spider not found: novelspider'
- HDU 1166 线段树
- GUI
- UVALive 6655 Two Points Revisited