«Intent to Join» یکی از ویژگیهای جدید فرستنده Android است که به برنامه فرستنده اجازه میدهد به جلسه Cast که توسط برنامهها یا صداهای دیگر آغاز شده است، «پیوسته» شود. شما برنامه فرستنده خود را طوری تنظیم کرده اید که با هدف ایجاد شده توسط Cast SDK راه اندازی شود.
برای مثال، هنگام استفاده از صدا برای شروع یک جلسه Cast، Cast SDK اعلانی ایجاد میکند که به کاربر امکان میدهد پخش را در همه تلفنهای Android در یک شبکه کنترل کند. وقتی روی اعلان ضربه میزنید، Cast SDK قصد راهاندازی برنامه شما را برای پیوستن به جلسه Cast ایجاد میکند.
نمونه CastVideos-Android را برای اجرای کاری Intent to Join ببینید.
استفاده از فرستنده اندروید
برای فعال کردن این ویژگی، مراحل زیر را در برنامه خود انجام دهید:
مطمئن شوید که برنامه شما قبلاً از نسخه Android Sender SDK بالاتر از 11.4.0 استفاده می کند. در build.gradle
:
dependencies {
api 'com.google.android.gms:play-services-cast-framework:11.4.0'
}
یک فیلتر قصد جدید به فعالیتی اضافه کنید که در آن قصد مدیریت آن را دارید. این هدف توسط اعلانهای کنترل از راه دور (RCN) برای راهاندازی برنامه شما و پیوستن به جلسه Cast استفاده میشود. توصیه می کنیم از اکتیویتی استفاده کنید که در آن SessionManagerListener
میزبانی می شود و onSessionStarted()
یا onSessionStartFailed()
فراخوانی می شود. مطمئن شوید که فیلتر قصد جدید در کل سیستم اندروید منحصر به فرد است. توصیه می کنیم برای انجام این کار از تگ <data>
به شرح زیر استفاده کنید:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="your_app_scheme" android:host="your_app_host"
android:path="your_app_path"/>
</intent-filter>
نمونه هایی از تگ <data>
:
<data android:scheme="https" android:host="example.com"
android:path="/cast/join"/>
در فعالیتی که فیلتر قصد جدید را تعریف میکنید، SessionManager.startSession(Intent)
را در onResume()
فراخوانی کنید:
override fun onResume() { ... val intent = intent // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>" val intentToJoinUri = Uri.parse("https://example.com/cast/join") if (intent.data != null && intent.data == intentToJoinUri) { mCastContext.sessionManager.startSession(intent) } ... }
@Override protected void onResume() { ... Intent intent = getIntent(); // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>" Uri intentToJoinUri = Uri.parse("https://example.com/cast/join"); if (intent.getData() != null && intent.getData().equals(intentToJoinUri)) { mCastContext.getSessionManager().startSession(intent); } ... }
راهاندازی کنسول برنامهنویس Google Cast
برای استفاده از ویژگی Intent to Join، URI برنامه و نام بسته باید در Google Cast Developer Console اضافه شود.
گیرنده شما نیز باید فهرست شده و منتشر شود تا Intent to Join به درستی کار کند.
برای فهرست کردن برنامه خود، گزینه فهرست را روی "YES" تغییر دهید و عنوان، توضیحات و یک گرافیک 512x512 برای برنامه خود ارائه دهید.
پس از راه اندازی، می توانید پیاده سازی را با Remote Control Notifications (RCN) به صورت زیر آزمایش کنید:
- برنامه Google Home را روی تلفن Android نصب کنید و به Wi-Fi تلفن متصل شوید.
- دستگاه دارای Cast-enabled دستگاه Google Home را تحت همان شبکه راهاندازی میکند.
- یک جلسه Cast را با دستگاه Google Home با استفاده از ابزار Command and Control (CaC) ، دستگاه Android یا iOS دیگر، یا از طریق صدا شروع کنید و بررسی کنید که آیا برنامه Web Receiver راه اندازی شده است یا خیر.
- چند ثانیه منتظر بمانید تا RCN روی تلفن دریافت شود، و روی اعلان ضربه بزنید تا intent فعال شود. هدف باید برای هر برنامه ای که قصد را با داده های مورد نیاز برای پیوستن به جلسه ثبت می کند، پخش شود.
SessionManagerListener.onSessionStarted(T, String)
راه اندازی می شود و به جلسه ملحق می شود.
تأیید
اگر برنامه شما با موفقیت به جلسه ملحق شود، SessionManagerListener.onSessionStarted(T, String)
فراخوانی می شود. در غیر این صورت، SessionManagerListener.onSessionStartFailed(T, int)
فراخوانی می شود. با فرض اینکه برنامه شما قبلاً آن رویدادها را به درستی مدیریت می کند (به عنوان مثال، راه اندازی کنترلر یا مینی کنترلر)، دیگر نیازی به انجام کاری ندارید.