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

不到一百行代码,教你制作一个手机视频播放器!这里我们使用系统自带的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;
    }

    
}
posted @ 2012-12-29 23:37  Andye  阅读(5807)  评论(2编辑  收藏  举报