2017-02-13 5 views
1

마분지 모드로 내 앱에서 동영상을 시작할 수있게하고 싶습니다.Google VR 플레이어 SDK (GVRSDK) 기본적으로 광고 게시판 모드로 시작 하시겠습니까?

Gooogle VR 플레이어 SDK를 성공적으로 설치했으며, 전체 화면 모드로 비디오를 시작하는 버튼을 만들었습니다. 성공했습니다.

저는 이번에는 판지 모드에서 비디오를 시작하는 버튼을 추가하고 싶지만 작동하지 않습니다 !! 다음은

버튼 가지고 내 컨트롤러의 코드입니다 :

// 
// FeedDetails.swift 
// MobileAppDemo 
// 
// Created by Mikko Hilpinen on 31.10.2016. 
// Copyright © 2016 Mikkomario. All rights reserved. 
// 

import UIKit 
import FirebaseAuth 
import FirebaseDatabase 
import FirebaseStorage 
import SwiftKeychainWrapper 
import SwiftyJSON 

class FeedDetailsController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

@IBOutlet weak var textView: UITextView! 
@IBOutlet weak var titleLabel: UITextView! 
@IBOutlet weak var imageView: UIImageView! 
@IBOutlet var videoVRView: GVRVideoView! 

@IBOutlet var imageVRView: GVRPanoramaView! 

@IBOutlet var cardboardVRview: GVRCardboardView! 
@IBOutlet var imageLabel: UILabel! 
@IBOutlet var videoLabel: UILabel! 

enum Media { 

    static var photoArray = ["test.jpg"] 
    static let videoURL = "https:/myserver.com/videolight.mp4" 
} 


var currentView: UIView? 
var currentDisplayMode = GVRWidgetDisplayMode.embedded 
var isPaused = true 


    override func viewDidLoad() { 
     super.viewDidLoad() 


    imageLabel.isHidden = true 
    imageVRView.isHidden = true 
    videoLabel.isHidden = true 
    videoVRView.isHidden = true 
    cardboardVRview.isHidden = true 

    imageVRView.load(UIImage(named: Media.photoArray.first!), 
        of: GVRPanoramaImageType.mono) 
    imageVRView.enableCardboardButton = true 
    imageVRView.enableFullscreenButton = true 
    //  imageVRView.delegate = self 

    videoVRView.load(from: URL(string: Media.videoURL)) 
    videoVRView.enableCardboardButton = true 
    videoVRView.enableFullscreenButton = true 


    //  videoVRView.delegate = self 

    cardboardVRview.load(from: URL(string: Media.videoURL)) 
    cardboardVRview.enableCardboardButton = true 
    cardboardVRview.enableFullscreenButton = true 
    // change to your specification 

    textView.isEditable = false 
    textView.isSelectable = false 
    titleLabel.isEditable = false 
    titleLabel.isSelectable = false 

    textView.text = posts[selectedIndexPath].caption 
    titleLabel.text = posts[selectedIndexPath].title 

    Storage.getImage(with: posts[selectedIndexPath].imageUrl){ 
     postPic in 
     self.imageView.image = postPic 

    } 

} 

// TRIGER VIDEO 360 // 

@IBAction func videoButton(_ sender: UIButton) { 

if let button = self.videoVRView.subviews[1] as? UIButton { 
    button.sendActions(for: .touchUpInside) 

} 

} 
    func widgetView(widgetView: GVRWidgetView!, didLoadContent content: AnyObject!) { 
    self.videoVRView.isHidden = false; 

} 

// END TRIGGER 360 // 

// TRIGER CARDBOARD // 

@IBAction func cardboardButton(_ sender: UIButton) { 

    if let button = self.cardboardVRview.subviews[1] as? UIButton { 
     button.sendActions(for: .touchUpInside) 
    } 

} 
func widgetViewcardboard(widgetView: GVRCardboardView!, didLoadContent content: AnyObject!) { 
    self.cardboardVRview.isHidden = false 
} 

// END CARDBOARD // 

@IBAction func closeButton(_ sender: UIButton) { 
    self.dismiss(animated: true, completion: nil) 
} 


func refreshVideoPlayStatus() { 
    if currentView == videoVRView && currentDisplayMode != GVRWidgetDisplayMode.embedded { 
     videoVRView?.resume() 
     isPaused = false 
    } else { 
     videoVRView?.pause() 
     isPaused = true 
    } 
} 

func setCurrentViewFromTouch(touchPoint point:CGPoint) { 
    if imageVRView!.frame.contains(point) { 
     currentView = imageVRView 
    } 
    if videoVRView!.frame.contains(point) { 
     currentView = videoVRView 
    } 
    } 

    } 
    extension FeedDetailsController: GVRWidgetViewDelegate { 
func widgetView(_ widgetView: GVRWidgetView!, didLoadContent content: Any!) { 
    if content is UIImage { 
     imageVRView.isHidden = false 
     imageLabel.isHidden = false 
    } else if content is NSURL { 
     videoVRView.isHidden = false 
     videoLabel.isHidden = false 
     refreshVideoPlayStatus() 
    } 
} 

func widgetView(_ widgetView: GVRWidgetView!, didFailToLoadContent content: Any!, withErrorMessage errorMessage: String!) { 
    print(errorMessage) 
} 

func widgetView(_ widgetView: GVRWidgetView!, didChange displayMode: GVRWidgetDisplayMode) { 
    currentView = widgetView 
    currentDisplayMode = displayMode 
    refreshVideoPlayStatus() 
    if currentView == imageVRView && currentDisplayMode != GVRWidgetDisplayMode.embedded { 
     view.isHidden = true 
    } else { 
     view.isHidden = false 
    } 
} 

func widgetViewDidTap(_ widgetView: GVRWidgetView!) { 
    guard currentDisplayMode != GVRWidgetDisplayMode.embedded else {return} 
    if currentView == imageVRView { 
     Media.photoArray.append(Media.photoArray.removeFirst()) 
     imageVRView?.load(UIImage(named: Media.photoArray.first!), of: GVRPanoramaImageType.mono) 
    } else { 
     if isPaused { 
      videoVRView?.resume() 
     } else { 
      videoVRView?.pause() 
     } 
     isPaused = !isPaused 
    } 
} 
} 



extension FeedDetailsController: GVRVideoViewDelegate { 
func videoView(_ videoView: GVRVideoView!, didUpdatePosition position: TimeInterval) { 
    OperationQueue.main.addOperation() { 
     if position >= videoView.duration() { 
      videoView.seek(to: 0) 
      videoView.resume() 
     } 
    } 
} 
} 

class TouchView: UIView { 
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { 
    if let FeedDetailsController = viewController() as? FeedDetailsController , event?.type == UIEventType.touches { 
     FeedDetailsController.setCurrentViewFromTouch(touchPoint: point) 
    } 
    return true 
} 

func viewController() -> UIViewController? { 
    if self.next!.isKind(of: FeedDetailsController.self) { 
     return self.next as? UIViewController 
    } else { 
     return nil 
    } 
} 


    } 

을 나는 한 전체 화면 모드에서 비디오를 재생하기 시작하지만, GVRCardboardView를 호출하는 대신에 당신과 GVRVideoView에 의해 같은 과정 볼 수 있지만,이 일 ... 나는 그 줄에 오류가 있어요 doenst 수 있습니다 : 첫 번째 줄 '정적 멤버'로드 '에 대한

 cardboardVRview.load(from: URL(string: Media.videoURL)) 
    cardboardVRview.enableCardboardButton = true 
    cardboardVRview.enableFullscreenButton = true 

을 유형의 인스턴스를 사용할 수 없습니다 GVRCardboardView

이고 'GVRCardboardView'유형의 값에는 다른 두 행에 'enableFullscreenButton'및 'enableCardboardBUtton'멤버가 없습니다. .

아무도 내가이 일을 어떻게 할 수 있는지 안다 ??

환상적입니다! 고마워요!

답변

2

기본적으로 카드 보드 모드에서 시작하려는 경우 보기를 이와 같이 설정해야합니다. 의미는 다음과 같습니다.

videoVRView.displayMode = GVRWidgetDisplayMode.fullscreenVR