2017-02-13 4 views
1

アプリでダンボールモードで動画を再生できるようにしたいと考えています。Google VR Player 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 
    } 
} 


    } 

私はフルスクリーンモードでビデオを再生するために開始することと同様の処理を行ったが、あなたのように代わりGVRVideoViewのGVRCardboardViewを呼び出すことにより、 GVRCardboardView

最初の行に「静的メンバ 『ロード』のための

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

型のインスタンスで使用することはできません:参照、それは仕事をdoenstすることができます...私はそれらのライン上のエラーが抱えています

、タイプ 'GVRCardboardView'の値には、2つの他の行に 'enableFullscreenButton'と 'enableCardboardBUtton'というメンバーがありません。 。

どのように私はこの仕事をすることができます知っていますか?

すばらしいです!君たちありがとう !

答えて

2

デフォルトで段ボールモードで開始する場合は、ビューをそのように設定する必要があります。あなたが入力する意味:

videoVRView.displayMode = GVRWidgetDisplayMode.fullscreenVR 
関連する問題