最近做 android 项目 需要 全景播放器和相关的 播放器参数 所以遇到的一些 小知识 记录一下

在开始用他之前也找了好多 播放器,pano360 Uotvr 。。。最中还是用了 这个

项目 Git :https://github.com/ashqal/MD360Player4Android

应用方法:https://jitpack.io/#ashqal/MD360Player4Android

以下是最官网的步骤,没有问题,

Using with GLSurfaceView

STEP1 Define GLSurfaceView in the layout xml.

STEP2 Init the MDVRLibrary in the Activity.

publicclassMDVRLibraryDemoActivityextendsActivity{privateMDVRLibrarymVRLibrary;@OverridepublicvoidonCreate(BundlesavedInstanceState) {super.onCreate(savedInstanceState);        setContentView(R.layout.activity_md_render);//init VR LibraryinitVRLibrary();    }privatevoidinitVRLibrary(){//new instancemVRLibrary=MDVRLibrary.with(this)                    .displayMode(MDVRLibrary.DISPLAY_MODE_NORMAL)                    .interactiveMode(MDVRLibrary.INTERACTIVE_MODE_MOTION)                    .asVideo(newMDVRLibrary.IOnSurfaceReadyCallback() {@OverridepublicvoidonSurfaceReady(Surfacesurface) {//IjkMediaPlayer or MediaPlayergetPlayer().setSurface(surface);                        }                    })                    .build(R.id.surface_view);    }}

STEP3 Addition call in onResume onPause onDestroy onConfigurationChanged.

publicclassMDVRLibraryDemoActivityextendsMediaPlayerActivity{@OverrideprotectedvoidonResume() {super.onResume();        mVRLibrary.onResume(this);    }@OverrideprotectedvoidonPause() {super.onPause();        mVRLibrary.onPause(this);    }@OverrideprotectedvoidonDestroy() {super.onDestroy();        mVRLibrary.onDestroy();    }@OverridepublicvoidonConfigurationChanged(ConfigurationnewConfig) {super.onConfigurationChanged(newConfig);        mVRLibrary.onOrientationChanged(this);    }}

一下是我个人的代码

1 Step Layout

2 Step

package com.app.yispace.app.myapplication;

import android.content.Context;

import android.content.res.Configuration;

import android.media.MediaPlayer;

import android.media.MediaPlayer.OnMediaTimeDiscontinuityListener;

import android.media.MediaTimestamp;

import android.opengl.EGLDisplay;

import android.opengl.GLSurfaceView;

import android.os.Handler;

import android.support.annotation.RequiresApi;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.Surface;

import com.asha.vrlib.MD360Director;

import com.asha.vrlib.MD360DirectorFactory;

import com.asha.vrlib.MDVRLibrary;

import com.asha.vrlib.model.BarrelDistortionConfig;

import com.asha.vrlib.model.MDFlingConfig;

import com.asha.vrlib.model.MDPosition;

import com.asha.vrlib.model.MDQuaternion;

import com.asha.vrlib.objects.MDAbsObject3D;

import com.asha.vrlib.strategy.projection.AbsProjectionStrategy;

import com.asha.vrlib.strategy.projection.IMDProjectionFactory;

//import com.player.panoplayer.OptionType;

//import com.player.panoplayer.OptionValue;

//import com.player.panoplayer.PanoPlayer;

//import com.player.panoplayer.PanoPlayerUrl;

//import com.player.renderer.PanoPlayerSurfaceView;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import javax.microedition.khronos.egl.EGL10;

public class MainActivityextends AppCompatActivity {

private MDVRLibrarymVRLibrary;

Handlerhandler =new Handler();

private GLSurfaceViewsurfaceView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

surfaceView = findViewById(R.id.surface_view);

initVRLibrary();

}

private void initVRLibrary() {

// 这个是 圆筒形开关开,我们球面投影不需要设置

BarrelDistortionConfig barrelDistortionConfig =new BarrelDistortionConfig();

barrelDistortionConfig.setDefaultEnabled(false);

// 这里的 setParamA B C 应该是透镜的三次 边缘即便参数

//        // barrelDistortionConfig.setParamA();

mVRLibrary = MDVRLibrary.with(this)

.displayMode(MDVRLibrary.DISPLAY_MODE_NORMAL)//这里是 单双屏幕设置

.interactiveMode(MDVRLibrary.INTERACTIVE_MODE_MOTION_WITH_TOUCH)//设置你的活动方式

// 触碰和陀螺仪 但是用 陀螺仪时 必须用 下面      mVRLibrary.onOrientationChanged(this);

.motionDelay(100)//陀螺仪的延迟

.projectionMode(MDVRLibrary.PROJECTION_MODE_SPHERE)//这里是 设置投影模式,都是 DISPLAY_MODE_***

.directorFilter(new MDVRLibrary.IDirectorFilter() {// 这个是用作设置渲染时候 位置的控制及限定

@Override

public float onFilterPitch(float v) {//维度的限定

if (v >=85)

return 85;

else if (v <= -85)

return -85;

else

return v;

}

@Override

public float onFilterYaw(float v) {// 精度的限定

return v;

}

@Override

public float onFilterRoll(float v) {//这里是 Z轴 的限定

if (v <=45 && v >= -45)

return 0;

else if (v >45 && v <=135)

return 90;

else if (v >= -153 && v < -45)

return -90;

else {

return 180;

}

}

})

.pinchEnabled(false)//放缩的支持

.flingEnabled(true)//甩动的支持,但是感觉没有什么效果,他话有个,他话有个 flingCongfig 进行进一步配置

.barrelDistortionConfig(barrelDistortionConfig)//上面说了

.asVideo(new MDVRLibrary.IOnSurfaceReadyCallback() {// as** 是处理的文件展示类型

@Override

public void onSurfaceReady(Surface surface) {

getPlayer().setSurface(surface);

}

})

.build(surfaceView);//这个是设置 surface Android 的工程师应该都知道他

mVRLibrary.onOrientationChanged(this);

// 同时这还有一些小的设置可以动过 mVRLibrary 来设置 又提示

}

// 这里是加载 视频源的

MediaPlayer getPlayer() {

MediaPlayer mediaPlayer =new MediaPlayer();

try {

mediaPlayer.setDataSource("http://192.168.1.171:8071/UploadFiles/960p/1080.mp4");

mediaPlayer.prepare();

mediaPlayer.start();

handler.postDelayed(runnable,40);

}catch (IOException e) {

e.printStackTrace();

}

return mediaPlayer;

}

Runnablerunnable =new Runnable() {

@Override

public void run() {

Log.d("ssss","getPitch" +mVRLibrary.getDirectorBrief().getPitch() +" getYaw" +mVRLibrary

.getDirectorBrief().getYaw() +"  getRoll" +mVRLibrary.getDirectorBrief().getRoll());

handler.postDelayed(this,1000);

}

};

@Override

protected void onResume() {

super.onResume();

mVRLibrary.onResume(this);

}

@Override

protected void onPause() {

super.onPause();

mVRLibrary.onPause(this);

}

@Override

protected void onDestroy() {

super.onDestroy();

mVRLibrary.onDestroy();

}

@Override

public void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

mVRLibrary.onOrientationChanged(this);

}

}

这里也都给大家说了他的配置和过去方法,看一下LOG j就明白了都是什么了 哈哈哈

OK 感觉这个作者很多好久 NB 考虑的很全面,可能还是有一些 不足,但是有一个能写出来那?哈哈哈

md360 android,MD360Player4Android 学习的简单使用相关推荐

  1. Android Studio学习记录之简单的页面切换及宫格菜单

    Android Studio学习记录之简单的页面切换及宫格菜单 之前上课听老师讲的一些东西自己其实并没有消化,今天把不懂的都去网上搜了一下,有了一种恍然大悟的感觉,包括很多方方面面的东西.有些东西听说 ...

  2. Android学习——实现简单的电话拨号

    Android学习--实现简单的电话拨号 新建工程 1.编辑界面 2.编辑MainActivity 3.编辑权限 新建工程 1.编辑界面 设置为线性布局.输入框提示(输入类型为数字).添加图片按钮 & ...

  3. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  4. Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition

    Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...

  5. android service 学习(上)

    转载自:http://www.cnblogs.com/allin/archive/2010/05/15/1736458.html Service是android 系统中的一种组件,它跟Activity ...

  6. android service 学习(下)

    android service 学习(下) 通常每个应用程序都在它自己的进程内运行,但有时需要在进程间传递对象,你可以通过应用程序UI的方式写个运行在一个不同的进程中的service.在android ...

  7. Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

  8. Android Binder 学习笔记

    前言: Binder是Android给我们提供的一种跨进程通信方式.理解Binder能帮助我们更好的理解Android的系统设计,比如说四大组件,AMS,WMS等系统服务的底层通信机制就都是基于Bin ...

  9. Android画图学习总结(四)——Animation(中)

    在Android画图学习总结(四)--Animation(上)中详细介绍了Tween Animation的定义.使用,由于篇幅有限,很多中重要的方面没有说明,这篇文章一方面做个完整的总结说明,另外一方 ...

最新文章

  1. 电商网站前台与后台系统架构
  2. ps怎么更改背景图层大小_PS软件零基础抠图教程,教你PS滤镜抠图技巧和方法
  3. uvalive5796(图论、桥、并查集)
  4. 数学教师计算机能力提升,数学教师信息技术应用能力提升培训总结.doc
  5. boost::system::system_error相关的测试程序
  6. 提高编程能力的7条建议
  7. 查找字符位置_如何使用find函数和search函数精确查找字符
  8. C# 数组、ArrayList、List、Dictionary的用法与区别
  9. 2013应届毕业生“人人网”校招应聘总结
  10. Unity3D中脚本的执行顺序和编译顺序
  11. Springboot2.X项目中添加druid连接池监控
  12. 基于Uniapp实现的Android的校园二手商品交易平台App源码
  13. IT出路:跳出TCO,着眼TVO(总体拥有价值)
  14. vuedraggable拖拽插件使用
  15. 深入解析车牌识别相机在互联网+加油站中的应用方案
  16. 使用Android studio开发一个数独游戏APP 系列第一讲
  17. 读书笔记: 如何把一件事做到最好
  18. python是一种跨平台开源解释型的_Python是一种跨平台、开源、免费的动态编程语言。...
  19. office 2013下载
  20. ProteinCell综述|解析宿主基因组和微生物的复杂互作(王军组作品,万字全文翻译)...

热门文章

  1. 恶意软件利用Windows故障诊断平台传播
  2. python爬去segementfault上的博客文章
  3. 使用pymongo需要手动关闭MongoDB Connection吗?
  4. 黑马程序员_io流详解
  5. MATLAB 绕轴旋转图像函数 rotate 详解
  6. debian 安装_如何在 Debian/Ubuntu 系统中检查程序包是否安装?
  7. jdbc代码_凯哥带你从零学大数据系列之数据库篇---第三章:JDBC基础
  8. c语言入门敲打,C语言基础三(敲打键盘、寻找资料,循环语句)
  9. python实现排列组合公式算法_Python实现卡尔曼滤波算法之贝叶斯滤波
  10. HTML示例07---图像与超链接