साथ मिलकर देखने का एपीआई लागू करना

इस पेज पर, लोगों के साथ मिलकर वीडियो देखने के लिए, Co-watch API का इस्तेमाल करने का तरीका बताया गया है.

शुरुआती सेट अप

लाइब्रेरी को इस्तेमाल के लिए तैयार करने के लिए, लाइव शेयरिंग ऐप्लिकेशन को CoWatchingClient ऑब्जेक्ट को शुरू करना चाहिए, जो साथ मिलकर वीडियो देखने वाले सेशन को दिखाता है.

Meet लाइव शेयरिंग SDK टूल का इस्तेमाल करने के लिए, AddonClientFactory.getClient तरीके पर कॉल करें. इससे एक AddonClient मिलता है, जो साथ मिलकर वीडियो देखने के लिए एंट्री पॉइंट के तौर पर काम करता है.

क्लाइंट का इस्तेमाल करने के लिए, AddonClient से newSessionBuilder वाले तरीके को कॉल करें, ताकि नए AddonSession के लिए बिल्डर वापस किया जा सके. newSessionBuilder, सेशन के लिए ऐड-ऑन से मिले कॉलबैक को मैनेज करने के लिए, AddonSessionHandler इंटरफ़ेस को लागू करता है.

सेशन शुरू करने के लिए, बिल्डर में withCoWatching तरीका जोड़ें.

नीचे दिया गया कोड सैंपल, साथ मिलकर वीडियो देखने वाले क्लाइंट ऑब्जेक्ट को शुरू करने के बारे में बताता है:

Java

class AwesomeVideoAddonSessionHandler implements AddonSessionHandler {}

// For sample implementation, see the "Manage remote state" section below.
class AwesomeVideoCoWatchingHandler implements CoWatchingHandler {}

public ListenableFuture<AddonSession> initialSetup() {
  AddonClient meetClient = AddonClientFactory.getClient();
  return meetClient
      .newSessionBuilder(
          new AwesomeVideoAddonSessionHandler())
      .withCoWatching(new AwesomeVideoCoWatchingHandler())
      .begin();
}

उपयोगकर्ता की कार्रवाइयों पर सूचना दें

जब कोई स्थानीय व्यक्ति अपने डिवाइस पर कोई कार्रवाई करता है, तो लाइब्रेरी को इसकी जानकारी होनी चाहिए, ताकि वह साथ मिलकर वीडियो देख रहे दूसरे लोगों को भी इसकी जानकारी मिल सके. उदाहरण के लिए, अपने डिवाइस पर मीडिया को रोकना या चलाना. कई राज्यों के लिए, लाइब्रेरी को सूचना देने का तरीका जानने के उदाहरण के लिए, शुरू करें देखें.

इन तरीकों का इस्तेमाल करके, लोगों के साथ मिलकर वीडियो देखने की स्थिति को कंट्रोल किया जा सकता है:

  • CoWatchingClient.notifyBuffering: Meet को यह सूचना देता है कि बफ़रिंग की वजह से, मीडिया चलाने के लिए तैयार नहीं है. ऐसा पहले मीडिया स्विच करने, मीडिया खोजने या नेटवर्क में सामान्य रुकावट की वजह से हुआ है.
  • CoWatchingClient.notifyEnded: Meet को यह सूचना देता है कि मीडिया प्लेयर, मौजूदा मीडिया के आखिर तक पहुंच गया है.
  • CoWatchingClient.notifyPauseState Meet को सूचना दें कि उपयोगकर्ता ने मीडिया चलाने की सुविधा को रोक दिया है या फिर से चालू कर दिया है, ताकि Meet उस कार्रवाई की कॉपी दूसरे उपयोगकर्ताओं को दे सके.
  • CoWatchingClient.notifyPlayoutRate: Meet को यह सूचना दी जाती है कि उपयोगकर्ता ने मीडिया के चलाए जाने की दर को नई वैल्यू पर अपडेट किया है (उदाहरण के लिए, 1.25x).
  • CoWatchingClient.notifyQueueUpdate: Meet को सूचना मिलती है कि सूची में बदलाव हो गया है, ताकि Meet अन्य उपयोगकर्ताओं को भी इसकी सूचना दे सके.
  • CoWatchingClient.notifyReady: Meet को यह सूचना मिलती है कि बफ़रिंग की प्रोसेस पूरी हो गई है और मीडिया अब चलाए जाने के लिए तैयार है. इसकी शुरुआत, दिए गए टाइमस्टैंप से होगी.
  • CoWatchingClient.notifySeekToTimestamp: Meet को यह सूचना मिलती है कि उपयोगकर्ता ने मीडिया को चलाने का विकल्प ढूंढा है. इसके बाद, Meet उस कार्रवाई की कॉपी अन्य उपयोगकर्ताओं को दे सकता है.
  • CoWatchingClient.notifySwitchedToMedia: Meet को यह सूचना मिलती है कि उपयोगकर्ता ने मीडिया स्विच किया है, ताकि Meet उसे दूसरे उपयोगकर्ताओं को भेज सके. साथ ही, सूची को एक साथ अपडेट करने का विकल्प भी है.

नीचे दिया गया कोड सैंपल, उपयोगकर्ताओं को सूचना देने का तरीका बताता है:

Java

public void onVideoPaused(Duration currentTimestamp) {
  // Use Meet to broadcast the pause state to ensure other participants also pause.
  this.session.getCoWatching().notifyPauseState(/* paused= */ true, currentTimestamp);
};

रिमोट स्थिति मैनेज करें

ऑफ़िस से दूर रहकर काम करने वाले लोगों से मिलने वाले अपडेट लागू करने के लिए, आपको CoWatchingHandler.onCoWatchingStateChanged() कॉलबैक का इस्तेमाल करके, Meet को एक ऐसा तरीका उपलब्ध कराना होगा जिससे लोकल मीडिया प्लेआउट स्टेटस को सीधे तौर पर मैनेज किया जा सके.

Meet को CoWatchingHandler.onStateQuery() कॉलबैक को कॉल करके, मीडिया प्लेबैक की मौजूदा जगह की जानकारी भी हासिल करनी होगी. इसे नियमित रूप से कॉल किया जाता है, इसलिए इसे परफ़ॉर्मेंस के हिसाब से लिखा जाना चाहिए (उदाहरण के लिए, <100 मि॰से॰).

नीचे दिए गए कोड सैंपल में, CoWatchingHandler को लागू करने का तरीका दिखाया गया है:

Java

class AwesomeVideoCoWatchingHandler implements CoWatchingHandler {
  /** Applies incoming playback state to the local video. */
  public void onCoWatchingStateChanged(CoWatchingState newState) {
    // Handle transition to new video.
    if (!newState.mediaId().equals(this.videoPlayer.videoUrl)) {
      this.videoPlayer.loadVideo(newState.mediaId());
    }

    // Only adjust the local video playout if it's sufficiently diverged from the timestamp in the
    // applied update.
    if (newState
            .mediaPlayoutPosition()
            .minus(this.videoPlayer.videoTimestamp)
            .compareTo(Duration.ofMillis(500))
        > 0) {
      this.videoPlayer.seek(newState.mediaPlayoutPosition());
    }

    // Update pause state, if necessary.
    if (newState.playbackState().equals(PLAY) && this.videoPlayer.isPaused) {
      this.videoPlayer.unpause();
    } else if (newState.playbackState().equals(PAUSE) && !this.videoPlayer.isPaused) {
      this.videoPlayer.pause();
    }
  }

  /** Returns local video playback state. */
  public Optional<QueriedCoWatchingState> onStateQuery() {
    return Optional.of(QueriedCoWatchingState.of(
      /* mediaPlayoutPosition= */ this.videoPlayer.videoTimestamp));
  }
}