0915Android基础SurfaceView
2015-09-15 22:15
393 查看
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(); } } }); } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories