Android视频播放
上节课我们讲了安卓MP3播放,现在我们学习视频播放,遗憾的是目前MediaPlayer只能播放3gp的视频格式,其他需要相应解码器。
视频中的渲染需要一个我们还没有学习过的组件SurfaceView,以及android.view.SurfaceHolder;对其实时渲染
先看主配置文件.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MediaDemo" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="start" android:src="@drawable/start" /> <ImageButton android:id="@+id/stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="stop" android:src="@drawable/stop" /> </LinearLayout> <SurfaceView android:id="@+id/surfaceView" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
?
主Activity代码:
public class MediaDemo extends Activity { MediaPlayer mediaplayer; SurfaceView surfaceview; SurfaceHolder surfaceviewholder; Context context; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_media_demo); surfaceview=(SurfaceView)super.findViewById(R.id.surfaceView); this.context=MediaDemo.this; this.surfaceviewholder=surfaceview.getHolder(); this.surfaceviewholder.setType(surfaceviewholder.SURFACE_TYPE_PUSH_BUFFERS); this.mediaplayer=new MediaPlayer(); try { this.mediaplayer.setDataSource("/sdcard/ee.3gp"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void start(View v){ this.mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC); this.mediaplayer.setDisplay(surfaceviewholder); try { this.mediaplayer.prepare(); this.mediaplayer.start(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void stop(View v){ this.mediaplayer.stop(); } }
?
实现效果如下:
?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。