{"id":207323,"date":"2024-02-23T18:40:39","date_gmt":"2024-02-23T18:40:39","guid":{"rendered":"https:\/\/michigandigitalnews.com\/index.php\/2024\/02\/23\/whats-new-with-google-cast\/"},"modified":"2025-06-25T17:21:41","modified_gmt":"2025-06-25T17:21:41","slug":"whats-new-with-google-cast","status":"publish","type":"post","link":"https:\/\/michigandigitalnews.com\/index.php\/2024\/02\/23\/whats-new-with-google-cast\/","title":{"rendered":"What&#8217;s new with Google Cast?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div>\n<meta content=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhwRh6XkG-2_miLGjyCAc8GqPaN2dMcur3bO2IOeu5x2v-MGWdSw2cjhZ_04gasYpveRvqS-2OagiNyGXhfE62dH2Rmd4JhYyS1fjVhh9E9FYD0zFIaQc6wciuapt7uebdR3JhexSB9vEfa7qQZ8CXPiu-YExk5w31hBwdhOalwaE6uu3QAoHxb3-wxzTA\/s1600\/Social-whats-new-in-google-cast.png\" name=\"twitter:image\"\/><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhwRh6XkG-2_miLGjyCAc8GqPaN2dMcur3bO2IOeu5x2v-MGWdSw2cjhZ_04gasYpveRvqS-2OagiNyGXhfE62dH2Rmd4JhYyS1fjVhh9E9FYD0zFIaQc6wciuapt7uebdR3JhexSB9vEfa7qQZ8CXPiu-YExk5w31hBwdhOalwaE6uu3QAoHxb3-wxzTA\/s1600\/Social-whats-new-in-google-cast.png\" style=\"display: none;\"\/><\/p>\n<p><em>Posted by Meher Vurimi, Product Manager<\/em><\/p>\n<p><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEht1ZL_b5ZKMRcqW5FdyCiSnnwQyJ1LNTNuTb6sxx3hyphenhyphenHiNcBbyFEJvwq3iyKmR5cyrqozHnUp5u2TXMg2KZfyPfaXQdK0HOE6nHgSgh3ixuUWfY6WbtTf0o1jkIdQcjlAviO-k8VbRoSFGERxPQ6UkNcrI5Km_l9zjz2m6LqeT0NNok_9IL9Ba2n4L3Pw\/s1600\/Banner-whats-new-in-google-cast-AD.png\"><img decoding=\"async\" border=\"0\" data-original-height=\"800\" data-original-width=\"100%\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEht1ZL_b5ZKMRcqW5FdyCiSnnwQyJ1LNTNuTb6sxx3hyphenhyphenHiNcBbyFEJvwq3iyKmR5cyrqozHnUp5u2TXMg2KZfyPfaXQdK0HOE6nHgSgh3ixuUWfY6WbtTf0o1jkIdQcjlAviO-k8VbRoSFGERxPQ6UkNcrI5Km_l9zjz2m6LqeT0NNok_9IL9Ba2n4L3Pw\/s1600\/Banner-whats-new-in-google-cast-AD.png\"\/><\/a><\/p>\n<p>Since we launched Google Cast in 2013, we&#8217;ve been working to bring casting capabilities to more apps and devices. We have come a long way. Now, users can cast to many new devices, like TVs, speakers, smart displays, and even the latest Pixel Tablet.  We are very excited to launch new features that make it more seamless to cast on Android. <\/p>\n<h3>Output Switcher<\/h3>\n<p><image><\/p>\n<div style=\"text-align: center;\"><img decoding=\"async\" alt=\"Moving image of output switcher showing various device categories\" border=\"0\" id=\"imgCaption\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjlykTzAkbIgbFIzmyGda33mYBUFHP7kbLitqjTJk2zMaTfQ_-wGw84Ez9gw1VBdYDCCbmE6m-JpQHIV4axhd8AueGMltcR9NNz3n21rCIHDiCg59OI86sQD4GnqzmFlB6EQ3MO5C7F9rIx6rcRZFm3I33_glWVeGMy-16mwFttn3jPxYlTIsNS9f0VZig\/s1600\/image4.gif\" width=\"35%\"\/><\/div>\n<p><imgcaption><center><em>Figure 1: Output Switcher showing various device categories<\/em><\/center><\/imgcaption><\/image><\/p>\n<p>Android makes moving media between various devices\u2013 including phones to TVs, tablets, speakers, and smart displays\u2013easy with Output Switcher. Output Switcher is easily accessible from the Android System UI and aims to allow cross-device transfer and control in one place for different technical protocols. With Output Switcher 2.0 on Android U, you can also see improved volume control, device categories, and support for devices with custom protocols.<\/p>\n<p>More information can be found in the <a href=\"https:\/\/developers.google.com\/cast\/docs\/android_sender\/output_switcher\" target=\"_blank\" rel=\"noopener\">Google Cast developer guide<\/a> and <a href=\"https:\/\/developer.android.com\/reference\/androidx\/mediarouter\/media\/MediaRouter#setRouteListingPreference%28androidx.mediarouter.media.RouteListingPreference%29\" target=\"_blank\" rel=\"noopener\">Media router<\/a>.<\/p>\n<ul>\n<ul>\n<li>Enable Output Switcher in AndroidManifest.xml<\/li>\n<\/ul>\n<\/ul>\n<div style=\"background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;\">\n<pre style=\"line-height: 125%; margin: 0px;\">&lt;application&gt;\n    ...\n    &lt;receiver\n         android:name=<span style=\"color: #ba2121;\">\"androidx.mediarouter.media.MediaTransferReceiver\"<\/span>\n         android:exported=<span style=\"color: #ba2121;\">\"true\"<\/span>&gt;\n    &lt;\/receiver&gt;\n    ...\n&lt;\/application&gt;\n<\/pre>\n<\/div>\n<ul>\n<ul>\n<li>Update SessionManagerListener for background casting<\/li>\n<\/ul>\n<\/ul>\n<div style=\"background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;\">\n<pre style=\"line-height: 125%; margin: 0px;\"><span style=\"color: green;\">class<\/span> <span style=\"color: blue;\">MyService<\/span> : Service() {\n    <span style=\"color: green;\">private<\/span> <span style=\"color: green;\">var<\/span> castContext: CastContext? = <span style=\"color: green;\">null<\/span>\n    <span style=\"color: green;\">protected<\/span> <span style=\"color: green;\">fun<\/span> <span style=\"color: blue;\">onCreate<\/span>() {\n        castContext = CastContext.getSharedInstance(<span style=\"color: green;\">this<\/span>)\n        castContext\n            .getSessionManager()\n            .addSessionManagerListener(sessionManagerListener, \n<span style=\"color: #2b00fe;\">CastSession<\/span>::<span style=\"color: #0d904f;\">class<\/span>.java)\n    }\n\n    <span style=\"color: green;\">protected<\/span> <span style=\"color: green;\">fun<\/span> <span style=\"color: blue;\">onDestroy<\/span>() {\n        <span style=\"color: green;\">if<\/span> (castContext != <span style=\"color: green;\">null<\/span>) {\n            castContext\n                .getSessionManager()\n                .removeSessionManagerListener(sessionManagerListener, \n<span style=\"color: #2b00fe;\">CastSession<\/span>::<span style=\"color: #0d904f;\">class<\/span>.java)\n        }\n    }\n}\n<\/pre>\n<\/div>\n<ul>\n<ul>\n<li>Support Remote-to-Local playback<\/li>\n<\/ul>\n<\/ul>\n<div style=\"background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;\">\n<pre style=\"line-height: 125%; margin: 0px;\"><span style=\"color: green; font-weight: bold;\">class<\/span> <span style=\"color: blue; font-weight: bold;\">MySessionTransferCallback<\/span> : SessionTransferCallback() {\n        <span style=\"color: green; font-weight: bold;\">fun<\/span> <span style=\"color: blue;\">onTransferring<\/span>(@SessionTransferCallback.TransferType transferType: \nInt) {\n            <span style=\"color: #408080; font-style: italic;\">\/\/ Perform necessary steps prior to onTransferred<\/span>\n        }\n\n        <span style=\"color: green; font-weight: bold;\">fun<\/span> <span style=\"color: blue;\">onTransferred<\/span>(@SessionTransferCallback.TransferType transferType: \nInt,\n                          sessionState: SessionState?) {\n            <span style=\"color: green; font-weight: bold;\">if<\/span> (transferType == SessionTransferCallback.TRANSFER_TYPE_FROM_REMOTE_TO_LOCAL) {\n                <span style=\"color: #408080; font-style: italic;\">\/\/ Remote stream is transferred to the local device.<\/span>\n                <span style=\"color: #408080; font-style: italic;\">\/\/ Retrieve information from the SessionState to continue playback on the local player.<\/span>\n            }\n        }\n\n        <span style=\"color: green; font-weight: bold;\">fun<\/span> <span style=\"color: blue;\">onTransferFailed<\/span>(@SessionTransferCallback.TransferType transferType: \nInt,\n                             @SessionTransferCallback.TransferFailedReason \ntransferFailedReason: Int) {\n            <span style=\"color: #408080; font-style: italic;\">\/\/ Handle transfer failure.<\/span>\n        }\n    }\n<\/pre>\n<\/div>\n<p><\/p>\n<h3>Cast to devices nearby<\/h3>\n<p><image><\/p>\n<div style=\"text-align: center;\"><img decoding=\"async\" alt=\"Moving image showing bringing an Android phone close to the docked Pixel Tablet to transfer media\" border=\"0\" id=\"imgCaption\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiFkz0dXUIS9SXy04iLnpj_GEeHCNIptIDacpbhW9slU34L04I1S4zjWWYaifRlXwnR5ya1NK2KjZkoqyaBHNrwY0j_o4o4EkxciNZNJ1aL2WqKEQVxHXAxTW54J8RI904aYMG5nuijUfnz1k6D9M-F3ui_o7y5oz86b_ZKSEuw-xR8OjRY79CntpSjrC8\/s1600\/CasttoNearbyDevices.gif\" width=\"80%\"\/><\/div>\n<p><imgcaption><center><em>Figure 2: Bring your Android phone close to the docked Pixel Tablet to transfer media<\/em><\/center><\/imgcaption><\/image><\/p>\n<p>It will soon be possible to cast to devices nearby in a whole new way when you have a Pixel Pro phone and a docked Pixel Tablet. Users can transfer ongoing music from their Pixel Pro phone to a docked Pixel Tablet just by bringing the phone closer to the docked tablet. Similarly, they can transfer the music to their phone from a docked Pixel Tablet just by holding the phone closer to the tablet. This feature needs Output Switcher integration as a prerequisite.<\/p>\n<h3>Cast from short-form video apps<\/h3>\n<p><image><\/p>\n<div style=\"text-align: center;\"><img decoding=\"async\" alt=\"Moving image showing enabling and disabling autoplay for short-form content\" border=\"0\" id=\"imgCaption\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhwFG9F-t2Uz6E1szpq7Bc9a86ZmzcQ_g4x277N_Q1m5XIZBVNsUPPczrNzjPiEmIT1fIsBQGR9MYg4-LScLUoRtaixRoD_NQllCF3dtlo5bJlo5hU_-8PXdj6q-Cd8zQzTJGHpzJYBMvJmQW7GE3STtuvM442DQoaUv6Jk5Pd60IvpXPCiCF5a97eAkTk\/s1600\/image3.gif\" width=\"100%\"\/><\/div>\n<p><imgcaption><center><em>Figure 3: Enabling and disabling autoplay for short-form content (autoplay is enabled by default)<\/em><\/center><\/imgcaption><\/image><\/p>\n<p>Short-form content is extremely popular and growing in use. Google Cast can make it easy for users to watch their favorite short-form content on TVs or other cast-enabled devices.  Now, you can easily extend Google Cast support into your apps. These are the guidelines we put together to provide a great user experience to your users.<\/p>\n<p><i>cast from your phone<\/i><\/p>\n<p>Ensure that the Google Cast icon is prominently displayed on every screen with playable content on the top right corner. Users automatically understand they can cast media to a TV just by seeing the Cast icon.<\/p>\n<p><i>cast with autoplay<\/i><\/p>\n<p>Users will also have an option to disable autoplay to cast a specific video. When autoplay is enabled, playback automatically transitions to the next video without any user intervention.<\/p>\n<h3>Persistent Cast icon<\/h3>\n<p><image><\/p>\n<div style=\"text-align: center;\"><img decoding=\"async\" alt=\"Moving image showing cast icon and error message for users to troubleshoot if no devices  are found\" border=\"0\" id=\"imgCaption\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi_w2G8Fr6VwpET2k8xQ4W84CQXD7FxRz5NDwvxIXakaIVzpggl-MuWeACWAey0ysqe3CAFZ-R_TEjA-Sok7X_HrIL6MXI7NV6iS_RH4DqaBNwsIEcPDdeYpD2dM2xcyWw4gDVtqj6-Ruke82N_v-EXmQCOUN5ZDpQ5Cx3NpGeR3PY2Lf2qKIopJdfp8qE\/s1600\/image6.gif\" width=\"35%\"\/><\/div>\n<p><imgcaption><center><em>Figure 4: Cast icon is shown even if the sender device is not connected to Wi-Fi, showcasing an error message for users to troubleshoot if no devices are found.<\/em><\/center><\/imgcaption><\/image><\/p>\n<p>We&#8217;ve heard feedback that when users don&#8217;t see the cast icon, they assume their Chromecast built-in devices haven&#8217;t been discovered. To improve user experience and discovery, we have introduced the \u201cPersistent cast icon\u201d. With this support, users will see the cast icon whenever they need and can receive better help and guidance on why they don\u2019t see a specific device. In addition, we&#8217;ve updated when device discovery starts. More information can be found in the <a href=\"https:\/\/developers.devsite.corp.google.com\/cast\/docs\/android_sender\/integrate#configure_device_discovery\" target=\"_blank\" rel=\"noopener\">Google Cast Developer Guide<\/a>.<\/p>\n<h3>Shaka Player<\/h3>\n<p>For any Web Receiver applications streaming HLS content, we recommend looking into migrating to Shaka Player for playback. The current player (MPL) will no longer adopt feature updates. As a result, the Web Receiver SDK has increased support for HLS playback using Shaka Player on the device targets and has introduced an opt-in flag to enable it. Refer to the <a href=\"https:\/\/developers.google.com\/cast\/docs\/web_receiver\/shaka_migration\" target=\"_blank\" rel=\"noopener\">Shaka Player migration guide<\/a> hosted on the DevSite for more information and implementation details.<\/p>\n<p>To opt-in to use Shaka Player for HLS content use the following snippet in your Google Cast Receiver application:<\/p>\n<div style=\"background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;\">\n<pre style=\"line-height: 125%; margin: 0px;\"><span style=\"color: green; font-weight: bold;\">const<\/span> context <span style=\"color: #666666;\">=<\/span> cast.framework.CastReceiverContext.getInstance();\n\n<span style=\"color: green; font-weight: bold;\">const<\/span> castReceiverOptions <span style=\"color: #666666;\">=<\/span> <span style=\"color: green; font-weight: bold;\">new<\/span> cast.framework.CastReceiverOptions();\ncastReceiverOptions.useShakaForHls <span style=\"color: #666666;\">=<\/span> <span style=\"color: green; font-weight: bold;\">true<\/span>;\n\ncontext.start(castReceiverOptions);\n<\/pre>\n<\/div>\n<p><\/p>\n<h3>Cast to new devices <\/h3>\n<p><image><\/p>\n<div style=\"text-align: center;\"><img decoding=\"async\" alt=\"Moving image showing the experience of casting to an LG TV as a first time user\" border=\"0\" id=\"imgCaption\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgNyewY_cDu4GeiqKwX3hKMcjxAY5ODHyiu4JaehGs0uo8B8_TpePJF3oKhdWlXsPBqwdiK8WQ5-H9LyPT8GbfZoGDK3HO_tWCQK57v45BVnj98oZSAFOXFffJ6JEPn5xrBgftpLFB1hNz4-BWoKpiSnhvffec6gewO4uRsutti2N0-nf6fkXS82BpnTfE\/s1600\/image2.gif\" width=\"100%\"\/><\/div>\n<p><imgcaption><center><em>Figure 5: Casting to LG TVs for a first time user<\/em><\/center><\/imgcaption><\/image><\/p>\n<p>We have been continuously working with various OEMs to bring Chromecast built-in to new devices. Last year, we launched Chromecast built-in to new speakers, while also introducing the receiver support on docked Pixel Tablets. <\/p>\n<p>As always, Google TVs come with Chromecast built-in, including the new Hisense ULED and ULED X Series, latest TCL Q Class models, and new TCL QM7 line. In fact, there are now over 220 million monthly active Google TV and other Android TV OS devices, and we\u2019re just getting started. More devices are launching with Chromecast built-in, like the 2024 LG TV series.  <\/p>\n<\/div>\n<p>[ad_2]<br \/>\n<br \/><a href=\"http:\/\/android-developers.googleblog.com\/2024\/01\/whats-new-with-google-cast.html\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Posted by Meher Vurimi, Product Manager Since we launched Google Cast in 2013, we&#8217;ve been working to bring casting capabilities to more apps and<\/p>\n","protected":false},"author":1,"featured_media":207324,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[146],"tags":[],"_links":{"self":[{"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/posts\/207323"}],"collection":[{"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/comments?post=207323"}],"version-history":[{"count":4,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/posts\/207323\/revisions"}],"predecessor-version":[{"id":342782,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/posts\/207323\/revisions\/342782"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/media\/207324"}],"wp:attachment":[{"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/media?parent=207323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/categories?post=207323"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/tags?post=207323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}