zoukankan      html  css  js  c++  java
  • 手机视频播放器

    教你制作简易手机视频播放器--核心原理

     

    不到一百行代码,教你制作一个手机视频播放器!这里我们使用系统自带的api来制作一个简易视频播放器,实现控制的功能,能够监听到视频准备状态,视频播放完成状态,还有视频播放错误状态,就这么多行代码就可以制作出来一个简易播放器,大家快来试试吧!

        程序员的最好交流就是看代码,所以废话不多说,代码大家一看都懂!保存下来,互相学习

    效果如下,这是播放的网上的一段视频,效果大家可以看一下效果,文章写的仓促,也没有设置横屏效果,将就着看吧:

    image

    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;
        }
    
        
    }
    复制代码
    本文基于中国大陆许可协议发布,版权归Andye拥有,欢迎转载,但是必须保留本文的署名Andye(包含链接http://www.cnblogs.com/yejiurui)。如您有任何疑问或者授权方面的协商,请给我留言。
    分类: Android开发
  • 相关阅读:
    linux cut的用法
    删除表的语句(drop truncate delete)
    mysql中的模糊查询
    linux之软连接 硬链接 link ln
    使用robot合并Robot Framework测试报告
    Python中的字典
    python logger 动态设置日志名
    K8S(Kubernetes)学习笔记
    [转]CURL常用命令
    python网站目录扫描器2.0版
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2839639.html
Copyright © 2011-2022 走看看