안드로이드 VR로 이미지 보기

6505 단어
선언:
최근에 할 일이 없어서 차제를 알아보고 VR 전경 사진으로 차를 보는 기능을 발견했기 때문에 자료를 찾아보고 자신도 하나 썼다.
방법1: 구글이 제공하는 vr 라이브러리를 이용하여
1. vr 라이브러리에 의존
implementation 'com.google.vr:sdk-panowidget:1.80.0'

2. 레이아웃 파일


    

3. 컨트롤 찾기, 이미지 설정, 이미지는 미용사가 제공
public class VrLocationActivity extends AppCompatActivity {
    int type = -1;
    Bitmap mBitmap;
    VrPanoramaView panoWidgetView;
    VrPanoramaView.Options paNormalOptions;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vr_location);

        type = getIntent().getIntExtra("type", 0);
        panoWidgetView = findViewById(R.id.vr_view);
        panoWidgetView.setEventListener(new ActivityEventListener());
        paNormalOptions = new VrPanoramaView.Options();
//      mVrPanoramaView.setFullscreenButtonEnabled (false); //        
        panoWidgetView.setInfoButtonEnabled(false); //            
        panoWidgetView.setStereoModeButtonEnabled(false); //           
        panoWidgetView.setEventListener(new ActivityEventListener()); //    

        if (type == 1) {
            /**
                                   。          、          。         360 ,                 
            */
            paNormalOptions.inputType = VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER;
            mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.andes);
        }
        else if (type == 2) {
            paNormalOptions.inputType = VrPanoramaView.Options.TYPE_MONO;
            mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.andes1);
        }
        else if (type == 3) {
            /**
             *               360 ,                 。  ,    1000x250     ,         360x90       -45 +45 
             */
            paNormalOptions.inputType = VrPanoramaView.Options.TYPE_MONO;
            mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.andes2);
        }

        panoWidgetView.loadImageFromBitmap(mBitmap, paNormalOptions);
    }

    private class ActivityEventListener extends VrPanoramaEventListener {
        /**
         * Called by pano widget on the UI thread when it's done loading the image.
         */
        @Override
        public void onLoadSuccess() {
            Log.e("dongjie", "        ");
        }

        /**
         * Called by pano widget on the UI thread on any asynchronous error.
         */
        @Override
        public void onLoadError(String errorMessage) {
            Log.d("dongjie", "    : " + errorMessage);
        }

        @Override
        public void onDisplayModeChanged(int newDisplayMode) {
            //        (         )
            super.onDisplayModeChanged(newDisplayMode);
            Log.i("dongjie", "onDisplayModeChanged------------>" + newDisplayMode);
        }
        @Override
        public void onClick() {
            super.onClick();
            //  VrPanoramaView
            Log.i("dongjie", "onClick------------>");
        }
    }

    @Override
    protected void onPause() {
        panoWidgetView.pauseRendering();
        super.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        panoWidgetView.resumeRendering();
    }

    @Override
    protected void onDestroy() {
        // Destroy the widget and free memory.
        panoWidgetView.shutdown();
        super.onDestroy();
    }
}

2. Three.js WebView 혼합 개발
1.x5코어를 집적,여기에는 x5코어를 사용하는 것을 권장합니다.로드 효율이 훨씬 빠를 것입니다.집적과정은 여기서 생략합니다
2. xml 파일

3. Three를 다운로드한다.js
다운로드 주소:https://threejs.org/
4. HTML 코드 작성: 이 단계가 어려우면 웹 전단에 맡길 수 있다


    
        
        Photo Sphere Viewer
        
        
        
        
    

    
        
var div = document.getElementById('container'); var PSV = new PhotoSphereViewer({ panorama: 'https://gw.alicdn.com/tfs/TB1WSInRFXXXXXlXpXXXXXXXXXX-1200-600.jpg', container: div, time_anim: false, navbar: true, navbar_style: { backgroundColor: 'rgba(58, 67, 77, 0.7)' }, });

5.Activity 코드를 작성하고 웹뷰로 위의 html 코드를 불러옵니다. 일반적으로 웹 전단에 링크를 제공합니다.
public class WebViewActivity extends AppCompatActivity {

    private WebView webview;
    private String url = "file:///android_asset/vr.html";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);
        
        webview = (WebView) findViewById(R.id.web_view);
        webview.loadUrl(url);
        WebSettings webSettings = tencent_webview.getSettings();
        webSettings.setJavaScriptEnabled(true);
        tencent_webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return true;
            }
        });

    }
}

좋은 웹페이지 즐겨찾기