美文网首页
MD360Player4Android 学习的简单使用

MD360Player4Android 学习的简单使用

作者: LazyCoder_MK | 来源:发表于2018-09-20 11:11 被阅读0次

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

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

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

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

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

    Using with GLSurfaceView

    STEP1 Define GLSurfaceView in the layout xml.

    <android.opengl.GLSurfaceViewandroid:id="@+id/surface_view"android:layout_width="match_parent"android:layout_height="match_parent"/>

    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

    <android.opengl.GLSurfaceViewandroid:id="@+id/surface_view"android:layout_width="match_parent"android:layout_height="match_parent"/>

    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 考虑的很全面,可能还是有一些 不足,但是有一个能写出来那?哈哈哈

    相关文章

      网友评论

          本文标题:MD360Player4Android 学习的简单使用

          本文链接:https://www.haomeiwen.com/subject/wppgnftx.html