教你制作简易手机视频播放器--核心原理
不到一百行代码,教你制作一个手机视频播放器!这里我们使用系统自带的api来制作一个简易视频播放器,实现控制的功能,能够监听到视频准备状态,视频播放完成状态,还有视频播放错误状态,就这么多行代码就可以制作出来一个简易播放器,大家快来试试吧!
程序员的最好交流就是看代码,所以废话不多说,代码大家一看都懂!保存下来,互相学习
效果如下,这是播放的网上的一段视频,效果大家可以看一下效果,文章写的仓促,也没有设置横屏效果,将就着看吧:
1.首先是布局文件,使用VideoView控件
<VideoView android:id="@+id/vv" android:layout_width="fill_parent" android:layout_height="fill_parent" />
2.在清单文件中加入如下的过滤器
<intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:mimeType="video/*" android:scheme="http" /> <data android:mimeType="video/*" android:scheme="file" /> <data android:mimeType="audio/*" android:scheme="http" /> <data android:mimeType="audio/*" android:scheme="file" /> <category android:name="android.intent.category.DEFAULT" />
3.直接上核心代码
import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.Intent; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; import android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.widget.MediaController; import android.widget.Toast; import android.widget.VideoView; public class AndyePlay extends Activity { private VideoView vv; private Uri uri; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vv = (VideoView) findViewById(R.id.vv); Intent dIntent=getIntent(); //获得意图,并获得数据 if(dIntent !=null){ //把地址取出来 uri = dIntent.getData(); //也可以指定地址 //uri =Uri.parse("file:///sdcard/%E7%8F%A0%E5%B8%9.mp4"); if(uri !=null){ vv.setVideoURI(uri); } } //开始准备 vv.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { AlertDialog.Builder builder=new Builder(getApplicationContext()); builder.setMessage(R.string.message); vv.start(); } }); //错误监听器 vv.setOnErrorListener(new OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "播放错误", 0).show(); return false; } }); //播放完成监听 vv.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "视频播放完了哦", 0).show(); } }); //获得系统的控制面板 vv.setMediaController(new MediaController(AndyePlay.this)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
如果,这篇博客帮您解决了问题,不妨点击一下右下角的【推荐】。如果,您希望更容易地发现我的新博客,不妨点击一下【加关注】。因为,我的热情需要您的肯定和支持!感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends! |