<!DOCTYPE html>

































































































<html>
<head>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />

<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<title>TurnBasedMatchEntity | Android Developers</title>

<!-- STYLESHEETS -->
<link rel="stylesheet"
href="//fonts.googleapis.com/css?family=Roboto+Condensed">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
  title="roboto">
<link href="/assets/css/default.css?v=4" rel="stylesheet" type="text/css">



<!-- JAVASCRIPT -->
<script src="//www.google.com/jsapi" type="text/javascript"></script>
<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
<script type="text/javascript">
  var toRoot = "/";
  var metaTags = [];
  var devsite = false;
</script>
<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>



<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-5831155-1', 'android.com');
  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
  ga('send', 'pageview');
  ga('universal.send', 'pageview'); // Send page view for new tracker.
</script>

</head>

<body class="gc-documentation google
  develop reference" itemscope itemtype="http://schema.org/Article">
  <div id="doc-api-level" class="" style="display:none"></div>
  <a name="top"></a>


<a name="top"></a>

<!-- dialog to prompt lang pref change when loaded from hardcoded URL 
<div id="langMessage" style="display:none">
  <div>
    <div class="lang en">
      <p>You requested a page in English, would you like to proceed with this language setting?</p>
    </div>
    <div class="lang es">
      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
    </div>
    <div class="lang ja">
      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
    </div>
    <div class="lang ko">
      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
    </div>
    <div class="lang ru">
      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
    </div>
    <div class="lang zh-cn">
      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
    </div>
    <div class="lang zh-tw">
      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
    </div>
    <a href="#" class="button yes" onclick="return false;">
      <span class="lang en">Yes</span>
      <span class="lang es">Sí</span>
      <span class="lang ja">Yes</span>
      <span class="lang ko">Yes</span>
      <span class="lang ru">Yes</span>
      <span class="lang zh-cn">是的</span>
      <span class="lang zh-tw">没有</span>
    </a>
    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
      <span class="lang en">No</span>
      <span class="lang es">No</span>
      <span class="lang ja">No</span>
      <span class="lang ko">No</span>
      <span class="lang ru">No</span>
      <span class="lang zh-cn">没有</span>
      <span class="lang zh-tw">没有</span>
    </a>
  </div>
</div> -->


  <!-- Header -->
  <div id="header-wrapper">
    <div id="header">

    


      <div class="wrap" id="header-wrap">
        <div class="col-3 logo">
          <a href="/index.html">
            <img src="/assets/images/dac_logo.png"
                srcset="/assets/images/dac_logo@2x.png 2x"
                width="123" height="25" alt="Android Developers" />
          </a>
          <div class="btn-quicknav" id="btn-quicknav">
            <a href="#" class="arrow-inactive">Quicknav</a>
            <a href="#" class="arrow-active">Quicknav</a>
          </div>
        </div>
        <ul class="nav-x col-9">
            <li class="design">
              <a href="/design/index.html"
              zh-tw-lang="設計"
              zh-cn-lang="设计"
              ru-lang="Проектирование"
              ko-lang="디자인"
              ja-lang="設計"
              es-lang="Diseñar"
              >Design</a></li>
            <li class="develop"><a href="/develop/index.html"
              zh-tw-lang="開發"
              zh-cn-lang="开发"
              ru-lang="Разработка"
              ko-lang="개발"
              ja-lang="開発"
              es-lang="Desarrollar"
              >Develop</a></li>
            <li class="distribute last"><a href="/distribute/index.html"
              zh-tw-lang="發佈"
              zh-cn-lang="分发"
              ru-lang="Распространение"
              ko-lang="배포"
              ja-lang="配布"
              es-lang="Distribuir"
              >Distribute</a></li>
        </ul>


        
        
<div class="menu-container">
  <div class="moremenu">
    <div id="more-btn"></div>
  </div>
  <div class="morehover" id="moremenu">
    <div class="top"></div>
    <div class="mid">
      <div class="header">Links</div>
      <ul>
        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
        <li><a href="/about/index.html">About Android</a></li>
      </ul>
      <div class="header">Android Sites</div>
      <ul>
        <li><a href="http://www.android.com">Android.com</a></li>
        <li class="active"><a>Android Developers</a></li>
        <li><a href="http://source.android.com">Android Open Source Project</a></li>
      </ul>

      
      
        <div class="header">Language</div>
          <div id="language" class="locales">
            <select name="language" onChange="changeLangPref(this.value, true)">
                <option value="en">English</option>
                <option value="es">Español</option>
                <option value="ja">日本語</option>
                <option value="ko">한국어</option>
                <option value="ru">Русский</option>
                <option value="zh-cn">中文（简体)</option>
                <option value="zh-tw">中文（繁體)</option>
            </select>
          </div>
        <script type="text/javascript">
          <!--
          loadLangPref();
            //-->
        </script>
      
      
      <br class="clearfix" />
    </div><!-- end 'mid' -->
    <div class="bottom"></div>
  </div><!-- end 'moremenu' -->

  <div class="search" id="search-container">
    <div class="search-inner">
      <div id="search-btn"></div>
      <div class="left"></div>
      <form onsubmit="return submit_search()">
        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
          onkeydown="return search_changed(event, true, '/')"
          onkeyup="return search_changed(event, false, '/')" />
      </form>
      <div class="right"></div>
      <a class="close hide">close</a>
      <div class="left"></div>
      <div class="right"></div>
    </div><!-- end search-inner -->
  </div><!-- end search-container -->

  <div class="search_filtered_wrapper reference">
    <div class="suggest-card reference no-display">
      <ul class="search_filtered">
      </ul>
    </div>
  </div>

  <div class="search_filtered_wrapper docs">
    <div class="suggest-card dummy no-display">&nbsp;</div>
    <div class="suggest-card develop no-display">
      <ul class="search_filtered">
      </ul>
      <div class="child-card guides no-display">
      </div>
      <div class="child-card training no-display">
      </div>
      <div class="child-card samples no-display">
      </div>
    </div>
    <div class="suggest-card design no-display">
      <ul class="search_filtered">
      </ul>
    </div>
    <div class="suggest-card distribute no-display">
      <ul class="search_filtered">
      </ul>
    </div>
  </div>
</div><!-- end menu-container (search and menu widget) -->



        <!-- Expanded quicknav -->
        <div id="quicknav" class="col-13">
          <ul>
            <li class="about">
              <ul>
                <li><a href="/about/index.html">About</a></li>
                <li><a href="/wear/index.html">Wear</a></li>
                <li><a href="/tv/index.html">TV</a></li>
                <li><a href="/auto/index.html">Auto</a></li>
              </ul>
            </li>
            <li class="design">
              <ul>
                <li><a href="/design/index.html">Get Started</a></li>
                <li><a href="/design/devices.html">Devices</a></li>
                <li><a href="/design/style/index.html">Style</a></li>
                <li><a href="/design/patterns/index.html">Patterns</a></li>
                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
                <li><a href="/design/downloads/index.html">Downloads</a></li>
                <li><a href="/design/videos/index.html">Videos</a></li>
              </ul>
            </li>
            <li class="develop">
              <ul>
                <li><a href="/training/index.html"
                  zh-tw-lang="訓練課程"
                  zh-cn-lang="培训"
                  ru-lang="Курсы"
                  ko-lang="교육"
                  ja-lang="トレーニング"
                  es-lang="Capacitación"
                  >Training</a></li>
                <li><a href="/guide/index.html"
                  zh-tw-lang="API 指南"
                  zh-cn-lang="API 指南"
                  ru-lang="Руководства по API"
                  ko-lang="API 가이드"
                  ja-lang="API ガイド"
                  es-lang="Guías de la API"
                  >API Guides</a></li>
                <li><a href="/reference/packages.html"
                  zh-tw-lang="參考資源"
                  zh-cn-lang="参考"
                  ru-lang="Справочник"
                  ko-lang="참조문서"
                  ja-lang="リファレンス"
                  es-lang="Referencia"
                  >Reference</a></li>
                <li><a href="/sdk/index.html"
                  zh-tw-lang="相關工具"
                  zh-cn-lang="工具"
                  ru-lang="Инструменты"
                  ko-lang="도구"
                  ja-lang="ツール"
                  es-lang="Herramientas"
                  >Tools</a>
                </li>
                <li><a href="/google/index.html">Google Services</a>
                </li>
                
                  <li><a href="/samples/index.html">Samples</a>
                  </li>
                
              </ul>
            </li>
            <li class="distribute last">
              <ul>
                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
                <li><a href="/distribute/users/index.html">Get Users</a></li>
                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
              </ul>
            </li>
          </ul>
        </div><!-- /Expanded quicknav -->
      </div><!-- end header-wrap.wrap -->
    </div><!-- end header -->

  
    <!-- Secondary x-nav -->
    <div id="nav-x">
        <div class="wrap" style="position:relative;z-index:1">

        
        
        

            <ul class="nav-x col-9 develop" style="width:100%">
                <li class="training"><a href="/training/index.html"
                  zh-tw-lang="訓練課程"
                  zh-cn-lang="培训"
                  ru-lang="Курсы"
                  ko-lang="교육"
                  ja-lang="トレーニング"
                  es-lang="Capacitación"
                  >Training</a></li>
                <li class="guide"><a href="/guide/index.html"
                  zh-tw-lang="API 指南"
                  zh-cn-lang="API 指南"
                  ru-lang="Руководства по API"
                  ko-lang="API 가이드"
                  ja-lang="API ガイド"
                  es-lang="Guías de la API"
                  >API Guides</a></li>
                <li class="reference"><a href="/reference/packages.html"
                  zh-tw-lang="參考資源"
                  zh-cn-lang="参考"
                  ru-lang="Справочник"
                  ko-lang="참조문서"
                  ja-lang="リファレンス"
                  es-lang="Referencia"
                  >Reference</a></li>
                <li class="tools"><a href="/sdk/index.html"
                  zh-tw-lang="相關工具"
                  zh-cn-lang="工具"
                  ru-lang="Инструменты"
                  ko-lang="도구"
                  ja-lang="ツール"
                  es-lang="Herramientas"
                  >Tools</a></li>
                <li class="google"><a href="/google/index.html"
                  >Google Services</a>
                </li>
                
                  <li class="samples"><a href="/samples/index.html"
                    >Samples</a>
                  </li>
                
            </ul>
        </div>
    </div>
    <!-- /Sendondary x-nav DEVELOP -->

  

    <div id="searchResults" class="wrap" style="display:none;">
      <h2 id="searchTitle">Results</h2>
      <div id="leftSearchControl" class="search-control">Loading...</div>
    </div>
  </div> <!--end header-wrapper -->

  <div id="sticky-header">
    <div>
      <a class="logo" href="#top"></a>
      <a class="top" href="#top"></a>
      <ul class="breadcrumb">
        
        <li class="current">TurnBasedMatchEntity</li>
      </ul>
    </div>
  </div>





  
  <div class="wrap clearfix" id="body-content">
    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
      <div id="devdoc-nav" class="scroll-pane">



<ul id="nav">

  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/index.html">
          <span class="en">Overview</span>
      </a></div>
  </li>

  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
          <span class="en">Games</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
          <span class="en">Location</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
          <span class="en">Google+</span>
                </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
          <span class="en">Maps</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
          <span class="en">Drive</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
          <span class="en">Cast</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/play-services/ads.html">
      <span class="en">Ads</span></a>
    </div>
    <ul>
      <li><a href="/google/play-services/id.html">
          <span class="en">Advertising ID</span></a>
      </li>
    </ul>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
          <span class="en">Wallet</span>
      </a></div>
  </li>


  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/play-services/index.html">
      <span class="en">Google Play Services</span></a>
    </div>
    <ul>
      <li><a href="/google/play-services/setup.html">
          <span class="en">Setting Up Google Play Services</span></a>
      </li>
      <li class="nav-section">
        <div class="nav-section-header"><a href="/google/auth/api-client.html">
          <span class="en">Accessing Google APIs</span></a>
        </div>
        <ul>
          <li>
            <a href="/google/auth/http-auth.html">
              <span class="en">Authorizing with Google for REST APIs</span>
            </a>
          </li>
        </ul>
      </li>
      <li id="gms-tree-list" class="nav-section">
        <div class="nav-section-header">
          <a href="/reference/gms-packages.html">
            <span class="en">Reference</span>
          </a>
        <div>
      </li>
    </ul>
  </li>


  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/play/billing/index.html">
      <span class="en">Google Play In-app Billing</span></a>
    </div>
    <ul>
      <li><a href="/google/play/billing/billing_overview.html">
              <span class="en">Overview</span></a>
      </li>
      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html">
              <span class="en">Version 3 API</span></a></div>
              <ul>
              <li><a href="/google/play/billing/billing_integrate.html">
              <span class="en">Implementing the API</span></a></li>
              <li><a href="/google/play/billing/billing_reference.html">
              <span class="en">Reference</span></a></li>
              </ul>
      </li>
      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
              <span class="en">Version 2 API</span></a></div>
              <ul>
              <li><a href="/google/play/billing/v2/billing_integrate.html">
              <span class="en">Implementing the API</span></a></li>
              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
              <span class="en">Subscriptions</span></a></li>
              <li><a href="/google/play/billing/v2/billing_reference.html">
              <span class="en">Reference</span></a></li>
              </ul>
      </li>
      <li><a href="/google/play/billing/billing_subscriptions.html">
              <span class="en">Subscriptions</span></a>
      </li>
      <li><a href="/google/play/billing/billing_best_practices.html">
              <span class="en">Security and Design</span></a>
      </li>
      <li><a href="/google/play/billing/billing_testing.html">
              <span class="en">Testing In-app Billing</span></a>
      </li>
      <li><a href="/google/play/billing/billing_admin.html">
              <span class="en">Administering In-app Billing</span></a>
      </li>
      <li><a href="/google/play/billing/versions.html">
              <span class="en">Version Notes</span></a>
      </li>
    </ul>
  </li>



   <li class="nav-section">
      <div class="nav-section-header"><a href="/google/gcm/index.html">
        <span class="en">Google Cloud Messaging</span></a>
      </div>
      <ul>
        <li><a href="/google/gcm/gcm.html">
            <span class="en">Overview</span></a>
        </li>
        <li><a href="/google/gcm/gs.html">
            <span class="en">Getting Started</span></a>
        </li>
        <li><a href="/google/gcm/client.html">
            <span class="en">Implementing GCM Client</span></a>
        </li>
        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
              <span class="en">Implementing GCM Server</span></a></div>
              <ul>
              <li><a href="/google/gcm/ccs.html">
              <span class="en">CCS (XMPP)</span></a></li>
              <li><a href="/google/gcm/http.html">
              <span class="en">HTTP</span></a></li>
              </ul>
        </li>
        <li><a href="/google/gcm/notifications.html">
              <span class="en">User Notifications</span></a>
        </li>
        <li><a href="/google/gcm/adv.html">
            <span class="en">Advanced Topics</span></a>
        </li>
        <li><a href="/google/gcm/c2dm.html">
            <span class="en">Migration</span></a>
        </li>
        <li id="gcm-tree-list" class="nav-section">
          <div class="nav-section-header">
            <a href="/reference/gcm-packages.html">
              <span class="en">Reference</span>
            </a>
          <div>
        </li>
      </ul>
  </li>

  <li class="nav-section">
  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
        <span class="en">Google Cloud Save</span></a>
      </div>
  </li>

  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/play/dist.html">
      <span class="en">Google Play Distribution</span></a>
    </div>
    <ul>
      <li><a href="/google/play/filters.html">
          <span class="en">Filters on Google Play</span></a>
      </li>
      <li><a href="/google/play/billing/gp-purchase-status-api.html">
              <span class="en">Google Play Developer API</span></a>
      </li>
      <li><a href="/google/play/publishing/multiple-apks.html">
          <span class="en">Multiple APK Support</span></a>
      </li>
      <li><a href="/google/play/expansion-files.html">
          <span class="en">APK Expansion Files</span></a>
      </li>
      <li class="nav-section">
        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
          <span class="en">Application Licensing</span></a>
        </div>
        <ul>
          <li><a href="/google/play/licensing/overview.html">
              <span class="en">Licensing Overview</span></a>
          </li>
          <li><a href="/google/play/licensing/setting-up.html">
              <span class="en">Setting Up for Licensing</span></a>
          </li>
          <li><a href="/google/play/licensing/adding-licensing.html">
              <span class="en">Adding Licensing to Your App</span></a>
          </li>
          <li><a href="/google/play/licensing/licensing-reference.html">
              <span class="en">Licensing Reference</span></a>
          </li>
        </ul>
      </li>

  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/backup/index.html">
      Android Backup Service</a>
    </div>
    <ul>
      <li><a href="/google/backup/signup.html">
          Register</a>
      </li>
    </ul>
  </li>

  </ul>

</li>



</ul>

<script type="text/javascript">
<!--
    buildToggleLists();
    changeNavLang(getLangPref());
//-->
</script>


        

      </div>
      <script type="text/javascript">
       showGoogleRefTree();
    
      </script>
    </div> <!-- end side-nav -->
    <script>
      $(document).ready(function() {
        scrollIntoView("devdoc-nav");
        });
    </script>


     



<div class="col-12"  id="doc-col">

<div id="api-info-block">



  
   
  
  
  
  

  
   
  
  
   
  
  
  

  
   
  
  
  
  

  
   
  
  
  
  

  
   
  
  
   
  
  
   
  
  


<div class="sum-details-links">

Summary:






  <a href="#inhconstants">Inherited Constants</a>
  


  &#124; <a href="#lfields">Fields</a>
  


  &#124; <a href="#inhfields">Inherited Fields</a>
  




  &#124; <a href="#pubmethods">Methods</a>
  



  &#124; <a href="#inhmethods">Inherited Methods</a>

&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>

</div><!-- end sum-details-links -->
<div class="api-level">
  
  
  

</div>
</div><!-- end api-info-block -->


<!-- ======== START OF CLASS DATA ======== -->

<div id="jd-header">
    public
     
    final 
    
    class
<h1 itemprop="name">TurnBasedMatchEntity</h1>



  
    extends Object<br/>
  
  
  

  
  
      implements 
      
        Parcelable 
      
        <a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html">TurnBasedMatch</a> 
      
  
  


    


</div><!-- end header -->

<div id="naMessage"></div>

<div id="jd-content" class="api apilevel-">
<table class="jd-inheritance-table">


    <tr>
         	
        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
    </tr>
    

    <tr>
        
            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
         	
        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatchEntity</td>
    </tr>
    

</table>







<div class="jd-descr">


<h2>Class Overview</h2>
<p itemprop="articleBody">Data object representing the data for a turn-based match. This is immutable, and therefore safe
 to cache or store. Note, however, that the data it represents may grow stale.
 <p>
 This class exists solely to support parceling these objects and should not be used directly.
</p>





</div><!-- jd-descr -->
















<div class="jd-descr">


<h2>Summary</h2>
















<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<table id="inhconstants" class="jd-sumtable"><tr><th>
  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
  <div style="clear:left;">Inherited Constants</div></th></tr>




<tr class="api apilevel-" >
<td colspan="12">

  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.os.Parcelable" class="jd-expando-trigger closed"
          ><img id="inherited-constants-android.os.Parcelable-trigger"
          src="/assets/images/triangle-closed.png"
          class="jd-expando-trigger-img" /></a>From interface
android.os.Parcelable
<div id="inherited-constants-android.os.Parcelable">
  <div id="inherited-constants-android.os.Parcelable-list"
        class="jd-inheritedlinks">
  </div>
  <div id="inherited-constants-android.os.Parcelable-summary" style="display: none;">
    <table class="jd-sumtable-expando">
    

    
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol">CONTENTS_FILE_DESCRIPTOR</td>
        <td class="jd-descrcol" width="100%">
          
          
    

        </td>
    </tr>
    
    
    <tr class=" api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol">PARCELABLE_WRITE_RETURN_VALUE</td>
        <td class="jd-descrcol" width="100%">
          
          
    

        </td>
    </tr>
    
    
</table>
  </div>
</div>
</td></tr>







<tr class="api apilevel-" >
<td colspan="12">

  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch" class="jd-expando-trigger closed"
          ><img id="inherited-constants-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch-trigger"
          src="/assets/images/triangle-closed.png"
          class="jd-expando-trigger-img" /></a>From interface
<a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html">com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch</a>
<div id="inherited-constants-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch">
  <div id="inherited-constants-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch-list"
        class="jd-inheritedlinks">
  </div>
  <div id="inherited-constants-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch-summary" style="display: none;">
    <table class="jd-sumtable-expando">
    

    
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_STATUS_ACTIVE">MATCH_STATUS_ACTIVE</a></td>
        <td class="jd-descrcol" width="100%">
          Constant returned by <code><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getStatus()">getStatus()</a></code> indicating that the match has started.
          
    

        </td>
    </tr>
    
    
    <tr class=" api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_STATUS_AUTO_MATCHING">MATCH_STATUS_AUTO_MATCHING</a></td>
        <td class="jd-descrcol" width="100%">
          Constant returned by <code><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getStatus()">getStatus()</a></code> indicating that one or more slots are waiting to be
 filled by auto-matching.
          
    

        </td>
    </tr>
    
    
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_STATUS_CANCELED">MATCH_STATUS_CANCELED</a></td>
        <td class="jd-descrcol" width="100%">
          Constant returned by <code><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getStatus()">getStatus()</a></code> indicating that the match was canceled by one of
 the participants.
          
    

        </td>
    </tr>
    
    
    <tr class=" api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_STATUS_COMPLETE">MATCH_STATUS_COMPLETE</a></td>
        <td class="jd-descrcol" width="100%">
          Constant returned by <code><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getStatus()">getStatus()</a></code> indicating that the match has finished.
          
    

        </td>
    </tr>
    
    
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_STATUS_EXPIRED">MATCH_STATUS_EXPIRED</a></td>
        <td class="jd-descrcol" width="100%">
          Constant returned by <code><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getStatus()">getStatus()</a></code> indicating that the match expired.
          
    

        </td>
    </tr>
    
    
    <tr class=" api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_TURN_STATUS_COMPLETE">MATCH_TURN_STATUS_COMPLETE</a></td>
        <td class="jd-descrcol" width="100%">
          Turn status constant for matches which have been completed.
          
    

        </td>
    </tr>
    
    
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_TURN_STATUS_INVITED">MATCH_TURN_STATUS_INVITED</a></td>
        <td class="jd-descrcol" width="100%">
          Turn status constant for matches which the current player has been invited to.
          
    

        </td>
    </tr>
    
    
    <tr class=" api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_TURN_STATUS_MY_TURN">MATCH_TURN_STATUS_MY_TURN</a></td>
        <td class="jd-descrcol" width="100%">
          Turn status constant for matches where it is the current player's turn.
          
    

        </td>
    </tr>
    
    
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_TURN_STATUS_THEIR_TURN">MATCH_TURN_STATUS_THEIR_TURN</a></td>
        <td class="jd-descrcol" width="100%">
          Turn status constant for matches where it is not the current player's turn.
          
    

        </td>
    </tr>
    
    
    <tr class=" api apilevel-" >
        <td class="jd-typecol">int</td>
        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_VARIANT_DEFAULT">MATCH_VARIANT_DEFAULT</a></td>
        <td class="jd-descrcol" width="100%">
          Constant used to indicate that the variant for a match is unspecified.
          
    

        </td>
    </tr>
    
    
</table>
  </div>
</div>
</td></tr>


</table>




<!-- =========== FIELD SUMMARY =========== -->
<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>


    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          TurnBasedMatchEntityCreator</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#CREATOR">CREATOR</a></td>
          <td class="jd-descrcol" width="100%">
            
            
    

          </td>
      </tr>
      
    

</table>





<!-- =========== FIELD SUMMARY =========== -->
<table id="inhfields" class="jd-sumtable"><tr><th>
  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
  <div style="clear:left;">Inherited Fields</div></th></tr>










<tr class="api apilevel-" >
<td colspan="12">

  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch" class="jd-expando-trigger closed"
          ><img id="inherited-fields-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch-trigger"
          src="/assets/images/triangle-closed.png"
          class="jd-expando-trigger-img" /></a>From interface
<a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html">com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch</a>
<div id="inherited-fields-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch">
  <div id="inherited-fields-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch-list"
        class="jd-inheritedlinks">
  </div>
  <div id="inherited-fields-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch-summary" style="display: none;">
    <table class="jd-sumtable-expando">
    

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#MATCH_TURN_STATUS_ALL">MATCH_TURN_STATUS_ALL</a></td>
          <td class="jd-descrcol" width="100%">
            Array of all the turn status constants.
            
    

          </td>
      </tr>
      
    
</table>
  </div>
</div>
</td></tr>


</table>








<!-- ========== METHOD SUMMARY =========== -->
<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>



	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#canRematch()">canRematch</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return whether or not this match can be rematched.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#describeContents()">describeContents</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#equals(java.lang.Object)">equals</a></span>(Object obj)</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            <a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html">TurnBasedMatch</a></nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#freeze()">freeze</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Freeze a volatile representation into an immutable representation.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            Bundle</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getAutoMatchCriteria()">getAutoMatchCriteria</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Retrieves the automatch criteria used to create or join this match, if any.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getAvailableAutoMatchSlots()">getAvailableAutoMatchSlots</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the maximum number of available automatch slots for this match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            long</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getCreationTimestamp()">getCreationTimestamp</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getCreatorId()">getCreatorId</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            byte[]</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getData()">getData</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the current (game-specific) data for this match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getDescription()">getDescription</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getDescription(android.database.CharArrayBuffer)">getDescription</a></span>(CharArrayBuffer dataOut)</nobr>
        
        <div class="jd-descrdiv">
          Loads the match description into the given <code><a href="/reference/android/database/CharArrayBuffer.html">CharArrayBuffer</a></code>.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            <a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a></nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getDescriptionParticipant()">getDescriptionParticipant</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Get the participant representing the primary opponent in the match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getDescriptionParticipantId()">getDescriptionParticipantId</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Get the ID of another participant in the match that can be used when describing the
 participants the user is playing with.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            <a href="/reference/com/google/android/gms/games/Game.html">Game</a></nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getGame()">getGame</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            long</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getLastUpdatedTimestamp()">getLastUpdatedTimestamp</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the timestamp at which the match was last modified.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getLastUpdaterId()">getLastUpdaterId</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the ID of the participant who updated the match most recently.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getMatchId()">getMatchId</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getMatchNumber()">getMatchNumber</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the match sequence number for this match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            <a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a></nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getParticipant(java.lang.String)">getParticipant</a></span>(String participantId)</nobr>
        
        <div class="jd-descrdiv">
          Get a participant in a match by its ID.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getParticipantId(java.lang.String)">getParticipantId</a></span>(String playerId)</nobr>
        
        <div class="jd-descrdiv">
          Get the participant ID for a given player.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            ArrayList&lt;String&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getParticipantIds()">getParticipantIds</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Get the IDs of the participants of the given match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getParticipantStatus(java.lang.String)">getParticipantStatus</a></span>(String participantId)</nobr>
        
        <div class="jd-descrdiv">
          Get the status of a participant in a match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            ArrayList&lt;<a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a>&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getParticipants()">getParticipants</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Retrieve the <code><a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a></code>s for this object.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getPendingParticipantId()">getPendingParticipantId</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the ID of the participant that is considered pending.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            byte[]</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getPreviousMatchData()">getPreviousMatchData</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the match data from the previous match, if available.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getRematchId()">getRematchId</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the match ID of the rematch that was created from this match, if any.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getStatus()">getStatus</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getTurnStatus()">getTurnStatus</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getVariant()">getVariant</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#getVersion()">getVersion</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the current version of the match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#hashCode()">hashCode</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#isDataValid()">isDataValid</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Check to see if this object is valid for use.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#isLocallyModified()">isLocallyModified</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return whether or not this match has been locally modified.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#toString()">toString</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html#writeToParcel(android.os.Parcel, int)">writeToParcel</a></span>(Parcel out, int flags)</nobr>
        
  </td></tr>



</table>







<!-- ========== METHOD SUMMARY =========== -->
<table id="inhmethods" class="jd-sumtable"><tr><th>
  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
  <div style="clear:left;">Inherited Methods</div></th></tr>


<tr class="api apilevel-" >
<td colspan="12">
  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
          ><img id="inherited-methods-java.lang.Object-trigger"
          src="/assets/images/triangle-closed.png"
          class="jd-expando-trigger-img" /></a>
From class

  java.lang.Object

<div id="inherited-methods-java.lang.Object">
  <div id="inherited-methods-java.lang.Object-list"
        class="jd-inheritedlinks">
  </div>
  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
    <table class="jd-sumtable-expando">
    


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            Object</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">clone</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">equals</span>(Object arg0)</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">finalize</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            Class&lt;?&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">getClass</span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">hashCode</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">notify</span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">notifyAll</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">toString</span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">wait</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">wait</span>(long arg0)</nobr>
        
  </td></tr>


</table>
  </div>
</div>
</td></tr>



<tr class="api apilevel-" >
<td colspan="12">
  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.os.Parcelable" class="jd-expando-trigger closed"
          ><img id="inherited-methods-android.os.Parcelable-trigger"
          src="/assets/images/triangle-closed.png"
          class="jd-expando-trigger-img" /></a>
From interface

  android.os.Parcelable

<div id="inherited-methods-android.os.Parcelable">
  <div id="inherited-methods-android.os.Parcelable-list"
        class="jd-inheritedlinks">
  </div>
  <div id="inherited-methods-android.os.Parcelable-summary" style="display: none;">
    <table class="jd-sumtable-expando">
    


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">describeContents</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">writeToParcel</span>(Parcel arg0, int arg1)</nobr>
        
  </td></tr>


</table>
  </div>
</div>
</td></tr>



<tr class="api apilevel-" >
<td colspan="12">
  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.data.Freezable" class="jd-expando-trigger closed"
          ><img id="inherited-methods-com.google.android.gms.common.data.Freezable-trigger"
          src="/assets/images/triangle-closed.png"
          class="jd-expando-trigger-img" /></a>
From interface

  <a href="/reference/com/google/android/gms/common/data/Freezable.html">com.google.android.gms.common.data.Freezable</a>

<div id="inherited-methods-com.google.android.gms.common.data.Freezable">
  <div id="inherited-methods-com.google.android.gms.common.data.Freezable-list"
        class="jd-inheritedlinks">
  </div>
  <div id="inherited-methods-com.google.android.gms.common.data.Freezable-summary" style="display: none;">
    <table class="jd-sumtable-expando">
    


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            T</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/common/data/Freezable.html#freeze()">freeze</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Freeze a volatile representation into an immutable representation.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/common/data/Freezable.html#isDataValid()">isDataValid</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Check to see if this object is valid for use.
          
    

        </div>
  
  </td></tr>


</table>
  </div>
</div>
</td></tr>



<tr class="api apilevel-" >
<td colspan="12">
  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.games.multiplayer.Participatable" class="jd-expando-trigger closed"
          ><img id="inherited-methods-com.google.android.gms.games.multiplayer.Participatable-trigger"
          src="/assets/images/triangle-closed.png"
          class="jd-expando-trigger-img" /></a>
From interface

  <a href="/reference/com/google/android/gms/games/multiplayer/Participatable.html">com.google.android.gms.games.multiplayer.Participatable</a>

<div id="inherited-methods-com.google.android.gms.games.multiplayer.Participatable">
  <div id="inherited-methods-com.google.android.gms.games.multiplayer.Participatable-list"
        class="jd-inheritedlinks">
  </div>
  <div id="inherited-methods-com.google.android.gms.games.multiplayer.Participatable-summary" style="display: none;">
    <table class="jd-sumtable-expando">
    


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            ArrayList&lt;<a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a>&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/Participatable.html#getParticipants()">getParticipants</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Retrieve the <code><a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a></code>s for this object.
          
    

        </div>
  
  </td></tr>


</table>
  </div>
</div>
</td></tr>



<tr class="api apilevel-" >
<td colspan="12">
  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch" class="jd-expando-trigger closed"
          ><img id="inherited-methods-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch-trigger"
          src="/assets/images/triangle-closed.png"
          class="jd-expando-trigger-img" /></a>
From interface

  <a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html">com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch</a>

<div id="inherited-methods-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch">
  <div id="inherited-methods-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch-list"
        class="jd-inheritedlinks">
  </div>
  <div id="inherited-methods-com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch-summary" style="display: none;">
    <table class="jd-sumtable-expando">
    


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#canRematch()">canRematch</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return whether or not this match can be rematched.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            Bundle</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getAutoMatchCriteria()">getAutoMatchCriteria</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Retrieves the automatch criteria used to create or join this match, if any.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getAvailableAutoMatchSlots()">getAvailableAutoMatchSlots</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the maximum number of available automatch slots for this match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            long</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getCreationTimestamp()">getCreationTimestamp</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getCreatorId()">getCreatorId</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            byte[]</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getData()">getData</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the current (game-specific) data for this match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getDescription()">getDescription</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getDescription(android.database.CharArrayBuffer)">getDescription</a></span>(CharArrayBuffer dataOut)</nobr>
        
        <div class="jd-descrdiv">
          Loads the match description into the given <code><a href="/reference/android/database/CharArrayBuffer.html">CharArrayBuffer</a></code>.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            <a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a></nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getDescriptionParticipant()">getDescriptionParticipant</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Get the participant representing the primary opponent in the match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getDescriptionParticipantId()">getDescriptionParticipantId</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Get the ID of another participant in the match that can be used when describing the
 participants the user is playing with.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            <a href="/reference/com/google/android/gms/games/Game.html">Game</a></nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getGame()">getGame</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            long</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getLastUpdatedTimestamp()">getLastUpdatedTimestamp</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the timestamp at which the match was last modified.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getLastUpdaterId()">getLastUpdaterId</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the ID of the participant who updated the match most recently.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getMatchId()">getMatchId</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getMatchNumber()">getMatchNumber</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the match sequence number for this match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            <a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a></nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getParticipant(java.lang.String)">getParticipant</a></span>(String participantId)</nobr>
        
        <div class="jd-descrdiv">
          Get a participant in a match by its ID.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getParticipantId(java.lang.String)">getParticipantId</a></span>(String playerId)</nobr>
        
        <div class="jd-descrdiv">
          Get the participant ID for a given player.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            ArrayList&lt;String&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getParticipantIds()">getParticipantIds</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Get the IDs of the participants of the given match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getParticipantStatus(java.lang.String)">getParticipantStatus</a></span>(String participantId)</nobr>
        
        <div class="jd-descrdiv">
          Get the status of a participant in a match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getPendingParticipantId()">getPendingParticipantId</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the ID of the participant that is considered pending.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            byte[]</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getPreviousMatchData()">getPreviousMatchData</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the match data from the previous match, if available.
          
    

        </div>
  
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getRematchId()">getRematchId</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the match ID of the rematch that was created from this match, if any.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getStatus()">getStatus</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getTurnStatus()">getTurnStatus</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getVariant()">getVariant</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#getVersion()">getVersion</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return the current version of the match.
          
    

        </div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            abstract
            
            
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html#isLocallyModified()">isLocallyModified</a></span>()</nobr>
        
        <div class="jd-descrdiv">
          Return whether or not this match has been locally modified.
          
    

        </div>
  
  </td></tr>


</table>
  </div>
</div>
</td></tr>


</table>


</div><!-- jd-descr (summary) -->

<!-- Details -->








<!-- XML Attributes -->


<!-- Enum Values -->


<!-- Constants -->


<!-- Fields -->


<!-- ========= FIELD DETAIL ======== -->
<h2>Fields</h2>




<A NAME="CREATOR"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        TurnBasedMatchEntityCreator
      </span>
        CREATOR
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    
    </div>
</div>




<!-- Public ctors -->



<!-- ========= CONSTRUCTOR DETAIL ======== -->
<!-- Protected ctors -->



<!-- ========= METHOD DETAIL ======== -->
<!-- Public methdos -->

<h2>Public Methods</h2>



<A NAME="canRematch()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        boolean
      </span>
      <span class="sympad">canRematch</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return whether or not this match can be rematched. This will return true when the match has
 complete and has not already been rematched.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>Whether or not this match can be rematched.
</li></ul>
  </div>

    </div>
</div>


<A NAME="describeContents()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        int
      </span>
      <span class="sympad">describeContents</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="equals(java.lang.Object)"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        boolean
      </span>
      <span class="sympad">equals</span>
      <span class="normal">(Object obj)</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="freeze()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        <a href="/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html">TurnBasedMatch</a>
      </span>
      <span class="sympad">freeze</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Freeze a volatile representation into an immutable representation. Objects returned from this
 call are safe to cache.
 <p>
 Note that the output of <code>freeze</code> may not be identical to the parent object, but should
 be equal. In other words:

 <pre>
 <code>
 Freezable f1 = new Freezable();
 Freezable f2 = f1.freeze();
 f1 == f2 may not be true.
 f1.equals(f2) will be true.
 </code>
 </pre></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>A concrete implementation of the data object.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getAutoMatchCriteria()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        Bundle
      </span>
      <span class="sympad">getAutoMatchCriteria</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Retrieves the automatch criteria used to create or join this match, if any. May be null if
 the match has no automatch properties.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>A bundle containing the automatch criteria for this match.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getAvailableAutoMatchSlots()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        int
      </span>
      <span class="sympad">getAvailableAutoMatchSlots</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return the maximum number of available automatch slots for this match. If automatch criteria
 were not specified during match creation, or if all slots have been filled, this will return
 0.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The maximum number of additional players that can be added to this match.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getCreationTimestamp()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        long
      </span>
      <span class="sympad">getCreationTimestamp</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="getCreatorId()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        String
      </span>
      <span class="sympad">getCreatorId</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="getData()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        byte[]
      </span>
      <span class="sympad">getData</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return the current (game-specific) data for this match.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>Byte array representing the current (game-specific) match state data.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getDescription()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        String
      </span>
      <span class="sympad">getDescription</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="getDescription(android.database.CharArrayBuffer)"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        void
      </span>
      <span class="sympad">getDescription</span>
      <span class="normal">(CharArrayBuffer dataOut)</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Loads the match description into the given <code><a href="/reference/android/database/CharArrayBuffer.html">CharArrayBuffer</a></code>.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Parameters</h5>
      <table class="jd-tagtable">
        <tr>
          <th>dataOut</td>
          <td>The buffer to load the data into.
</td>
        </tr>
      </table>
  </div>

    </div>
</div>


<A NAME="getDescriptionParticipant()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        <a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a>
      </span>
      <span class="sympad">getDescriptionParticipant</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Get the participant representing the primary opponent in the match.
 <p>
 Note that this will return <code>null</code> if there is no primary opponent. This could happen if
 an automatch slot has not been filled.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The participant representing the primary opponent in the match.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getDescriptionParticipantId()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        String
      </span>
      <span class="sympad">getDescriptionParticipantId</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Get the ID of another participant in the match that can be used when describing the
 participants the user is playing with. For example, in a four player match this might be used
 to state "Martha (and 2 others)".
 <p>
 Note that this will return <code>null</code> if there is no primary opponent. This could happen if
 an automatch slot has not been filled.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The participant ID of the primary opponent in the match.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getGame()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        <a href="/reference/com/google/android/gms/games/Game.html">Game</a>
      </span>
      <span class="sympad">getGame</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="getLastUpdatedTimestamp()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        long
      </span>
      <span class="sympad">getLastUpdatedTimestamp</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return the timestamp at which the match was last modified.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The server timestamp at which the match was last modified.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getLastUpdaterId()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        String
      </span>
      <span class="sympad">getLastUpdaterId</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return the ID of the participant who updated the match most recently.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The ID of the last participant who updated this Match object.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getMatchId()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        String
      </span>
      <span class="sympad">getMatchId</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="getMatchNumber()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        int
      </span>
      <span class="sympad">getMatchNumber</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return the match sequence number for this match. This number starts at 1, and increases every
 time a rematch is created.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The match sequence number for this match.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getParticipant(java.lang.String)"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        <a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a>
      </span>
      <span class="sympad">getParticipant</span>
      <span class="normal">(String participantId)</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Get a participant in a match by its ID. Note that the participant ID must correspond to a
 participant in this match, or this method will throw an exception.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Parameters</h5>
      <table class="jd-tagtable">
        <tr>
          <th>participantId</td>
          <td>Match-local ID of the participant to retrieve status for.</td>
        </tr>
      </table>
  </div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The participant corresponding to the given ID.</li></ul>
  </div>

    </div>
</div>


<A NAME="getParticipantId(java.lang.String)"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        String
      </span>
      <span class="sympad">getParticipantId</span>
      <span class="normal">(String playerId)</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Get the participant ID for a given player. This will only return a non-null ID if the player
 is actually a participant in the match and that player's identity is visible to the current
 player. Note that this will always return non-null for the current player.
 <p>
 To find the player ID for the current player, use <code><a href="/reference/com/google/android/gms/games/Players.html#getCurrentPlayerId(com.google.android.gms.common.api.GoogleApiClient)">getCurrentPlayerId(GoogleApiClient)</a></code>.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Parameters</h5>
      <table class="jd-tagtable">
        <tr>
          <th>playerId</td>
          <td>Player ID to find participant ID for.</td>
        </tr>
      </table>
  </div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The participant ID corresponding to given player, or null if none found.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getParticipantIds()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        ArrayList&lt;String&gt;
      </span>
      <span class="sympad">getParticipantIds</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Get the IDs of the participants of the given match.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The IDs of the participants in this match. These are returned in the participant
         order of the match. Note that these are not stable across matches.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getParticipantStatus(java.lang.String)"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        int
      </span>
      <span class="sympad">getParticipantStatus</span>
      <span class="normal">(String participantId)</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Get the status of a participant in a match. Note that the participant ID must correspond to a
 participant in this match, or this method will throw an exception.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Parameters</h5>
      <table class="jd-tagtable">
        <tr>
          <th>participantId</td>
          <td>Match-local ID of the participant to retrieve status for.</td>
        </tr>
      </table>
  </div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The current status of the participant in this match. One of
         <code><a href="/reference/com/google/android/gms/games/multiplayer/Participant.html#STATUS_INVITED">STATUS_INVITED</a></code>, <code><a href="/reference/com/google/android/gms/games/multiplayer/Participant.html#STATUS_JOINED">STATUS_JOINED</a></code>,
         <code><a href="/reference/com/google/android/gms/games/multiplayer/Participant.html#STATUS_DECLINED">STATUS_DECLINED</a></code>, <code><a href="/reference/com/google/android/gms/games/multiplayer/Participant.html#STATUS_LEFT">STATUS_LEFT</a></code>,
         or <code><a href="/reference/com/google/android/gms/games/multiplayer/Participant.html#STATUS_NOT_INVITED_YET">STATUS_NOT_INVITED_YET</a></code>.</li></ul>
  </div>

    </div>
</div>


<A NAME="getParticipants()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        ArrayList&lt;<a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a>&gt;
      </span>
      <span class="sympad">getParticipants</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Retrieve the <code><a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a></code>s for this object. This is a list of all Participants
 applicable to the given object.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>A list of <code><a href="/reference/com/google/android/gms/games/multiplayer/Participant.html">Participant</a></code>s for this object.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getPendingParticipantId()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        String
      </span>
      <span class="sympad">getPendingParticipantId</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return the ID of the participant that is considered pending. If no participant is considered
 pending (ie, the match is over, etc), this function will return null.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The ID of the participant that is considered pending, if any. Returns null if no
         participant is pending.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getPreviousMatchData()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        byte[]
      </span>
      <span class="sympad">getPreviousMatchData</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return the match data from the previous match, if available. Note that this is only provided
 on the first turn of a rematched match.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>Byte array of data from the previous match of a rematch, or null if not available.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getRematchId()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        String
      </span>
      <span class="sympad">getRematchId</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return the match ID of the rematch that was created from this match, if any. This will only
 be non-null if a rematch has been created.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The match ID of the rematch, or null if no rematch exists.
</li></ul>
  </div>

    </div>
</div>


<A NAME="getStatus()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        int
      </span>
      <span class="sympad">getStatus</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="getTurnStatus()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        int
      </span>
      <span class="sympad">getTurnStatus</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="getVariant()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        int
      </span>
      <span class="sympad">getVariant</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="getVersion()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        int
      </span>
      <span class="sympad">getVersion</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return the current version of the match.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>The current version of the match.
</li></ul>
  </div>

    </div>
</div>


<A NAME="hashCode()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        int
      </span>
      <span class="sympad">hashCode</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="isDataValid()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        boolean
      </span>
      <span class="sympad">isDataValid</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Check to see if this object is valid for use. If the object is still volatile, this method
 will indicate whether or not the object can be safely used. The output of a call to
 <code><a href="/reference/com/google/android/gms/common/data/Freezable.html#freeze()">freeze()</a></code> will always be valid.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>whether or not the object is valid for use.
</li></ul>
  </div>

    </div>
</div>


<A NAME="isLocallyModified()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        boolean
      </span>
      <span class="sympad">isLocallyModified</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p>Return whether or not this match has been locally modified. If this is true, the local device
 has match state which has not successfully synced to the server yet. In this state, further
 mutations to the match will fail with a status of
 <code><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_MATCH_ERROR_LOCALLY_MODIFIED">STATUS_MATCH_ERROR_LOCALLY_MODIFIED</a></code>.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Returns</h5>
      <ul class="nolist"><li>Whether this match has local modifications or not.
</li></ul>
  </div>

    </div>
</div>


<A NAME="toString()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        String
      </span>
      <span class="sympad">toString</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>


<A NAME="writeToParcel(android.os.Parcel, int)"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        void
      </span>
      <span class="sympad">writeToParcel</span>
      <span class="normal">(Parcel out, int flags)</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      
    

      
  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>





<!-- ========= METHOD DETAIL ======== -->



<!-- ========= END OF CLASS DATA ========= -->
<A NAME="navbar_top"></A>

<div id="footer" class="wrap" >
        

  <div id="copyright">
    
  Except as noted, this content is licensed under <a
  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>. 
  For details and restrictions, see the <a href="/license.html">
  Content License</a>.
  </div>
  <div id="build_info">
    
<script src="/timestamp.js" type="text/javascript"></script>
<script>document.write(BUILD_TIMESTAMP)</script>

  </div>


  <div id="footerlinks">
    
  <p>
    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
    <a href="/support.html">Support</a>
  </p>
  </div>

</div> <!-- end footer -->
</div> <!-- jd-content -->

</div><!-- end doc-content -->

</div> <!-- end body-content --> 






</body>
</html>
