Vitamio多媒体开发框架
来源:互联网 发布:飞升十方神器升级数据 编辑:程序博客网 时间:2024/04/28 06:06
1.Vitamio框架简介
Vitamio的中文名称为“维他蜜”。Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐。到目前,全球已经有超过一万款应用在使用 Vitamio,覆盖用户超过 5亿。
下载地址:https://www.vitamio.org/Download/
2.如何使用
步骤二:将导入模块SDK和构建工具的版本改成我们自己工程的版本
3.给视频加上手势控制:双击暂停或播放、滑动改变音量和屏幕亮度
Vitamio的java代码+手势控制代码如下:
public class PlayActivity extends AppCompatActivity { private VideoView videoView_play; private MediaController controller = null; //手势识别的类 private GestureDetector gestureDetector; //屏幕尺寸大小为原始尺寸 private int mlayout = VideoView.VIDEO_LAYOUT_ZOOM; //当前声音 private int mVolume = -1; //最大声音 private int mMaxVolume; //音频管理器 private AudioManager mAudioManager; //当前亮度 private float mBrightness = -1f; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Vitamio.isInitialized(this); setContentView(R.layout.activity_play); initView(); initData(); } /** * 初始化View */ private void initView() { videoView_play = (VideoView) findViewById(R.id.videoView_play); //实例化手势识别类 gestureDetector = new GestureDetector(this, new MyGestureDetector()); controller = new MediaController(this); //初始化音频管理器 mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); //获取系统的最大声音 mMaxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); } /** * 初始化数据 */ private void initData() { //获取传递过来的uri Intent intent = getIntent(); String uri = intent.getStringExtra("uri"); Log.i("uri", "--->>>" + uri); //设置视频地址 videoView_play.setVideoURI(Uri.parse(uri)); //设置Controller,注意一定要是io.vov.vitamio.widget.MediaController videoView_play.setMediaController(controller); //给Controller设置VideoView controller.setMediaPlayer(videoView_play); //获得焦点 videoView_play.requestFocus(); //改变屏幕方向 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //VideoView.VIDEO_LAYOUT_ZOOM表示播放为视屏画面原始大小,第二个参数表示设置视频的宽高比,0表示自动检测 //videoView_play.setVideoLayout(VideoView.VIDEO_LAYOUT_ZOOM, 0); //开始播放 videoView_play.start(); } /** * 处理手势事件 * * @param event * @return */ @Override public boolean onTouchEvent(MotionEvent event) { //判断我们的手势识别类是否进行了识别操作 if (gestureDetector.onTouchEvent(event)) { return true; } mVolume = -1; mBrightness = -1f; return super.onTouchEvent(event); } /** * 识别手势操作的内部类 */ public class MyGestureDetector extends GestureDetector.SimpleOnGestureListener { //双击屏幕的方法 @Override public boolean onDoubleTap(MotionEvent e) { //判断媒体是否在播放状体,是:true,否:false if (videoView_play.isPlaying()) { //暂停播放 //Log.i("pause", "--->>>" + "暂停了"); videoView_play.pause(); } else { //sLog.i("start", "--->>>" + "播放了"); videoView_play.start(); } //一定要return true return true; } //滑动 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { //获取坐标点 float mOldX = e1.getX(), mOldY = e1.getY(); int y = (int) e2.getRawY(); //窗口管理器 Display disp = getWindowManager().getDefaultDisplay(); //获得屏幕宽高 int windowWidth = disp.getWidth(); int windowHeight = disp.getHeight(); //经过计算判断是否滑动的是右边 if (mOldX > windowWidth * 4.0 / 5) { //将滑动距离带进调节音量的方法中 onVolumeSlide((mOldY - y) / windowWidth); //经过计算判断是否滑动的是左边 } else if (mOldX < windowWidth / 5) { //将滑动距离带进调节亮度的方法中 onBrightnessSlide((mOldY - y) / windowHeight); } return super.onScroll(e1, e2, distanceX, distanceY); } } /////////////////////////////////////////////////////////////////////////// // 改变音量和屏幕亮度的方法 /////////////////////////////////////////////////////////////////////////// /** * 改变音量 * * @param percent */ private void onVolumeSlide(float percent) { //判断当前音量是否是-1,是则没有获取当前系统音量 if (mVolume == -1) { //获得系统当前音量 mVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); //判断当前音量是否为负数,是则设置最小为0 if (mVolume < 0) { //如果当前音量小于0则给变量赋最小的值0 mVolume = 0; } } //计算用户滑动的距离 int index = (int) ((percent * mMaxVolume) + mVolume); //判断该距离是否大于最大音量值,是则把给变量赋值为最大值,否则最小值 if (index > mMaxVolume) { index = mMaxVolume; } else if (index < 0) { index = 0; } //设置音量 mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, index, 0); } /** * 滑动改变亮度 * * @param percent */ private void onBrightnessSlide(float percent) { if (mBrightness < 0) { //获得屏幕亮度 mBrightness = getWindow().getAttributes().screenBrightness; //判断当前亮度是否小于0.01f,是的话则给变量赋值0.01f放置屏幕变黑 if (mBrightness <= 0.01f) mBrightness = 0.01f; } /**WindowManager.LayoutParams 是 WindowManager 接口的嵌套类; 它继承于 ViewGroup.LayoutParams; 它用于向WindowManager描述Window的管理策略。**/ //获取window窗口属性 WindowManager.LayoutParams lpa = getWindow().getAttributes(); //将当前屏幕亮度加上我们移动的距离的值赋给lpa(窗口管理) lpa.screenBrightness = mBrightness + percent; //判断当前亮度是否大于1,是则设置为1,(亮度最大只能是1) if (lpa.screenBrightness > 1.0f) lpa.screenBrightness = 1.0f; //判断是否小于0.01,防止黑屏最小设置成0.01 else if (lpa.screenBrightness < 0.01f) lpa.screenBrightness = 0.01f; //让设置好的亮度生效 getWindow().setAttributes(lpa); }}
2 0
- Vitamio多媒体开发框架
- Vitamio多媒体开发框架
- 全能多媒体开发框架Vitamio
- 全能多媒体开发框架Vitamio
- Vitamio-全能多媒体开发框架
- Android Studio导入Vitamio多媒体开发框架
- android开发之全能多媒体开发框架Vitamio
- 全能多媒体开发框架Vitamio (二)相关
- Vitamio一款Android&iOS上的全能多媒体开发框架
- Android Studio导入Vitamio多媒体开发框架 1
- Vitamio android/ios 多媒体框架
- 安卓中多媒体vitamio框架的使用
- 全能的多媒体播放框架Vitamio
- 多媒体开发框架 GStreamer
- Android多媒体开发框架
- Android开发---Vitamio框架的实战应用
- python 多媒体框架pyglet开发
- Android多媒体开发框架推荐
- 什么叫做java容器,什么又叫做java框架,有什么严格意义上的划分吗?
- C++面试
- 字符流中第一个不重复
- bat脚本学习
- 最大费用循环流(帮助小罗拉,uva 1659)
- Vitamio多媒体开发框架
- 2016世界奇妙物语--我们最大的荣誉不是不会倒下
- 发送标准广播
- poj 2002 Squares
- 异步任务(AsyncTask)
- Dijkstra算法
- SQL4种匹配规则
- 红黑树详解
- ssh转账时,插入两条数据进表,并更新数据