Co-डूइंग एपीआई लागू करना

इस पेज में बताया गया है कि साथ मिलकर काम करने के लिए, को-डूइंग एपीआई का इस्तेमाल कैसे किया जा सकता है स्थिति के हिसाब से बदलें.

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

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

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

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

सेशन शुरू करने के लिए, withCoDoing तरीका चुना जा सकता है.

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

Java

class AwesomeVideoAddonSessionHandler implements AddonSessionHandler {}

//For sample implementation, see the "Handle incoming updates" section.
class AwesomeVideoCoDoingHandler implements CoDoingHandler {}

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

वीडियो रोकें

लाइव शेयरिंग में हिस्सा लेने के दौरान, अगर कोई उपयोगकर्ता वीडियो को रोक देता है स्ट्रीम करने के लिए, आपको यह पक्का करना होगा कि लाइव स्ट्रीम में शेयर करने पर भी वीडियो रुक जाता है.

ऐसा करने के लिए, किसी CoDoingState ऐसा मैसेज जिसमें वीडियो को रोका गया हो. साथ ही, Google Meet से वीडियो को ब्रॉडकास्ट करने के लिए कहें प्रोग्राम में हिस्सा लेने वाले अन्य लोग, setGlobalState तरीका. शेयर की गई ग्लोबल स्थिति, मीटिंग में हिस्सा लेने वाले सभी लोगों के लिए डिफ़ॉल्ट स्थिति बन जाती है. मौजूदा या नया, जब तक कि नई स्थिति सेट नहीं हो जाती.

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

Java

public void onVideoPaused(String videoUrl, Instant currentTimestamp) {
  // Create an internal state object to share with other participants. Note: It's
  // good practice to encode all metadata—even seemingly irrelevant data—into
  // ActivityState updates to guard against race conditions and other subtle
  // failures.
  AwesomeVideoState videoState = AwesomeVideoState
    .builder()
    .videoUrl(videoUrl)
    .videoTimestamp(currentTimestamp)
    .isPaused(true)
    .build();

  // Create the CoDoingState object to wrap the internal state
  CoDoingState coDoingState = new CoDoingState();
  coDoingState.state = SerializationUtils.serialize(videoState);

  // Use Meet to broadcast internal state update to all other participants
  this.coDoingClient.setGlobalState(coDoingState);
};

कोड सैंपल, सीरियल वाले videoState ऑब्जेक्ट को ट्रिगर करता है, ताकि उसे ब्रॉडकास्ट किया जा सके Meet के ऐसे अन्य सभी इंस्टेंस जो लाइव शेयरिंग में हिस्सा ले रहे हैं अनुभव. अन्य प्लैटफ़ॉर्म से ब्रॉडकास्ट होने वाले अपडेट पाने का तरीका जानने के लिए हिस्सा लेने वाले लोगों के लिए, आने वाले अपडेट मैनेज करें देखें सेक्शन में जाएं.

नीचे दिए गए डायग्राम में, इवेंट को रोकने की कार्रवाई के बाद के क्रम के बारे में बताया गया है ट्रिगर किया गया:

Live Share API का डायग्राम शुरू करना.

वीडियो चलाएं

वीडियो रोकें की तरह ही, जब कोई उपयोगकर्ता अपने डिवाइस पर वीडियो को फिर से चलाता है तो Meet इस बदलाव को अन्य लाइव स्ट्रीम पर ब्रॉडकास्ट करेगा हिस्सा लेने वाले लोगों के साथ शेयर करना.

भेजने वाले की तरफ़ (वह उपयोगकर्ता जो वीडियो को फिर से चालू करता है), सिर्फ़ एक-दूसरे की तरफ़ से रोकने का उदाहरण यह है कि isPaused स्टेटस अपडेट किया गया है.

नीचे दिया गया कोड सैंपल, उपयोगकर्ताओं को रोके गए रोके गए विज्ञापनों की सूचना देने का तरीका बताता है भेजने वाले की तरफ़:

Java

public void onVideoUnpaused(String videoUrl, Instant currentTimestamp) {
  AwesomeVideoState videoState = AwesomeVideoState
    .builder()
    .videoUrl(videoUrl)
    .videoTimestamp(currentTimestamp)
    .isPaused(false)
    .build();

  CoDoingState coDoingState = new CoDoingState();
  coDoingState.state = SerializationUtils.serialize(videoState);

  this.coDoingClient.setGlobalState(coDoingState);
}

वीडियो पर जाएं

वीडियो को रोकें और वीडियो को फिर से चलाएं की तरह, अगर कोई उपयोगकर्ता, लोकल ऐप्लिकेशन की टाइमलाइन को नए टाइमस्टैंप पर खींचता है, Meet, मीटिंग में हिस्सा लेने वाले सभी लोगों को यह कार्रवाई ब्रॉडकास्ट करेगा.

नीचे दिया गया कोड सैंपल, उपयोगकर्ताओं को अपडेट किए गए टाइमस्टैंप के बारे में सूचना देने का तरीका बताता है भेजने वाले की तरफ़ से:

Java

public void onVideoSeeked(String videoUrl, Instant currentTimestamp, bool isPaused) {
  AwesomeVideoState videoState = AwesomeVideoState
    .builder()
    .videoUrl(videoUrl)
    .videoTimestamp(currentTimestamp)
    .isPaused(isPaused)
    .build();

  CoDoingState coDoingState = new CoDoingState();
  coDoingState.state = SerializationUtils.serialize(videoState);

  this.coDoingClient.setGlobalState(coDoingState);
}

कोई दूसरा वीडियो चलाना

अगर उपयोगकर्ता, देखे जा रहे वीडियो में बदलाव भी करता है, तो लोकल ऐप्लिकेशन पर, सभी लाइव शेयरिंग के लिए Meet में नया वीडियो चलाना ज़रूरी है सदस्य. बदला गया वीडियो, videoState.videoUrl में सेव है.

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

Java

public void onVideoChanged(String videoUrl, Duration currentTimestamp, bool isPaused) {
  AwesomeVideoState videoState = AwesomeVideoState
    .builder()
    .videoUrl(videoUrl)
    .videoTimestamp(currentTimestamp)
    .isPaused(isPaused)
    .build();

  CoDoingState coDoingState = new CoDoingState();
  coDoingState.state = SerializationUtils.serialize(videoState);

  this.coDoingClient.setGlobalState(coDoingState);
}

साथ मिलकर काम करना बंद करें

जब कोई उपयोगकर्ता गतिविधि को खत्म करना चुनता है, तो endSession का तरीका Meet ऐप्लिकेशन से डिसकनेक्ट हो जाता है. यह ज़रूरी नहीं है Meet का इस्तेमाल करके मीटिंग खत्म की जा सकती है और न ही उपयोगकर्ता इसे छोड़ सकता है मीटिंग.

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

Java

public void endCoDoing() {
  this.session.endSession();
}

आने वाले अपडेट मैनेज करना

जब मीटिंग में हिस्सा लेने वाले किसी दूसरे व्यक्ति के Meet ऐप्लिकेशन को ब्रॉडकास्ट मिलता है, तो onGlobalStateChanged() कॉलबैक ट्रिगर होता है. आम तौर पर, यह ज़रूरी है कि आप किस तरह के आने वाले अपडेट के जवाब में की जाने वाली कार्रवाई. जैसे, सिर्फ़ इनकमिंग अपडेट का मिलान करना वीडियो के टाइमस्टैंप तब दें, जब वे स्थानीय टाइमस्टैंप से काफ़ी अलग हों.

नीचे दिया गया कोड सैंपल, आने वाले अलग-अलग अपडेट को मैनेज करने का तरीका बताता है:

Java

class AwesomeVideoCoDoingHandler implements CoDoingHandler {
  public void onGlobalStateChanged(CoDoingState update) {
    AwesomeVideoState videoState = SerializationUtils.deserialize(update.state());

    // Handle transition to new video.
    if (!videoState.videoUrl.equals(this.videoPlayer.videoUrl)) {
      this.videoPlayer.loadVideo(videoState.videoUrl);
    }

    // If the timestamp in the arriving update has sufficiently diverged, adjust
    // the local video playout.
    if (videoState.videoTimestamp.minus(this.videoPlayer.videoTimestamp).abs() >
                                        Duration.ofSeconds(2)) {
      this.videoPlayer.seek(videoState.videoTimestamp);
    }

    // Update pause state, if necessary.
    if (!videoState.isPaused && this.videoPlayer.isPaused) {
      this.videoPlayer.unpause();
    } else if (videoState.isPaused && !this.videoPlayer.isPaused) {
      this.videoPlayer.pause();
    }
  }
}