Android中Vitamio使用解析-电视台直播为例

先上图,在Android中使用Vitamio播放香港卫视:


第一步,AndroidStudio中导入Vitamio

Vitamio源码下载,源码下载下来后,我们将vitamio导入AndroStudio中。

2 File->new->Import Module,导入vitmio文件夹。

3 vitamio目录下的build.gradle中下图配置,要和app目录下的build.gradle中的配置相同:


4 app目录下的build.gradle,在dependencies 中添加依赖 compile project(‘:vitamio’) ,如果你导入module中更改过名字的话 要改成修改后的名字,如下图:


上述步骤完成后,rebuild即可导入。


第二步,配置vitamio

导入vitamio后,我们还要进行如下配置:

1 在AndroidManifest中,注册io.vov.vitamio.activity.InitActivity:

<activity
            android:name="io.vov.vitamio.activity.InitActivity"
            android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.NoTitleBar"
            android:windowSoftInputMode="stateAlwaysHidden" />

2 在AndroidManifest中,添加权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

第三步,使用vitamio

vitamio中常用的两个组件是:VideoView和MediaController。

VideoView是播放器组件,继承了SurfaceView。VideoView可以加载各种来源的图像,还可以计算视频尺寸,以便在任意布局管理器中使用,它还提供了诸如缩放等显示选项。VideoView也提供封装了许多MediaPlayer的方法,例如getVideoWidth、setSubShown。常用API如下:

/**
 * 获取扫描视频的Uri。
 * 参数layout(缩放参数)参见MediaPlayer的常量:VIDEO_LAYOUT_ORIGIN(原始大小)、VIDEO_LAYOUT_SCALE(画面全屏)、VIDEO_LAYOUT_STRETCH(画面拉伸)、VIDEO_LAYOUT_ZOOM(画面裁剪)、VIDEO_LAYOUT_FIT_PARENT(画面铺满)
 * 参数aspectRation(宽高比),为0将自动检测
 */
public void setVideoLayout(int layout,float aspectRatio);
//Surface是否有效。 参见Surface的isValid方法。
public boolean isValid();
//设置视频路径。
public void setVideoPath(String path);
//设置视频URI。(可以是网络视频地址)
public void setVideoURI(Uri uri);
//停止视频播放,并释放资源。
public void stopPlayback();
/**
 * 设置媒体控制器。
 * 参数controller:媒体控制器,注意是io.vov.vitamio.widget.MediaController。
 */
public void setMediaController(MediaController controller);    
//注册一个回调函数,在视频预处理完成后调用。在视频预处理完成后被调用。此时视频的宽度、高度、宽高比信息已经获取到,此时可调用seekTo让视频从指定位置开始播放。
public void setOnPreparedListener(OnPreparedListener l);
//获取当前播放位置。
public long getCurrentPosition();
//设置播放位置。单位毫秒
public void seekTo(long msec);
//是否正在播放。
public boolean isPlaying();
//获取缓冲百分比。
public int getBufferPercentage();
/**
 * 设置视频质量。
 * 参数quality参见MediaPlayer的常量:VIDEOQUALITY_LOW(流畅)、VIDEOQUALITY_MEDIUM(普通)、VIDEOQUALITY_HIGH(高质)
 */
public void setVideoQuality(int quality);
//设置视频缓冲大小。默认1024KB,单位byte
public void setBufferSize(int bufSize);
//检测是否缓冲完毕。
public boolean isBuffering();
//设置元数据编码。例如:UTF-8
public void setMetaEncoding(String encoding);

MediaController用于加载一个布局文件,在makeControllerView中返回布局对应的View。

第四步,使用vitamio实现播放器,直播香港卫视。

1 自定义MediaController:

package com.xi.liuliu.topnews.controller;

import android.app.Activity;
import android.content.Context;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

import com.xi.liuliu.topnews.R;

import io.vov.vitamio.widget.MediaController;
import io.vov.vitamio.widget.VideoView;


public class LiveMediaController extends MediaController {
    private GestureDetector mGestureDetector;
    private ImageButton mGoBack;
    private ImageView mBattery;
    private TextView mTime;
    private TextView mBatteryPercent;
    private VideoView mVideoView;
    private Activity mActivity;
    private Context mContext;
    private int mControllerWidth = 0;

    public LiveMediaController(Context context, VideoView videoView, Activity activity) {
        super(context);
        this.m
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值