{"id":219111,"date":"2024-04-01T14:40:42","date_gmt":"2024-04-01T14:40:42","guid":{"rendered":"https:\/\/michigandigitalnews.com\/index.php\/2024\/04\/01\/enhanced-screen-sharing-capabilities-in-android-14-and-google-meet-improve-meeting-productivity\/"},"modified":"2025-06-25T17:19:33","modified_gmt":"2025-06-25T17:19:33","slug":"enhanced-screen-sharing-capabilities-in-android-14-and-google-meet-improve-meeting-productivity","status":"publish","type":"post","link":"https:\/\/michigandigitalnews.com\/index.php\/2024\/04\/01\/enhanced-screen-sharing-capabilities-in-android-14-and-google-meet-improve-meeting-productivity\/","title":{"rendered":"Enhanced screen sharing capabilities in Android 14 (and Google Meet) improve meeting productivity"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div>\n<meta content=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEj_sdASOx_frDm-yazYXC4aKeqWikdYk2buvvFtHk6HO7wg1QuLjkIuo9DDQKuPJ1e1TlHYNGK9znxZgPd8CSLzB-7oYQHsbz4BUOdzB332l1CSKgVX9yho-S3hm8z0FUUb-K08P8DHXaI1sz59udOPgIun_HUpUOfKFIKtBkeqAwxEkRhJX3yTqhtBCgc\/s1600\/Android-13-Desktop-AVD-Social.png\" name=\"twitter:image\"\/><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEj_sdASOx_frDm-yazYXC4aKeqWikdYk2buvvFtHk6HO7wg1QuLjkIuo9DDQKuPJ1e1TlHYNGK9znxZgPd8CSLzB-7oYQHsbz4BUOdzB332l1CSKgVX9yho-S3hm8z0FUUb-K08P8DHXaI1sz59udOPgIun_HUpUOfKFIKtBkeqAwxEkRhJX3yTqhtBCgc\/s1600\/Android-13-Desktop-AVD-Social.png\" style=\"display: none;\"\/><\/p>\n<p><em>Posted by Francesco Romano \u2013 Developer Relations Engineer on Android<\/em><\/p>\n<p><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhxlVH6A7vyTdl1iUORCTBBC5Z2_5P-Up_WplvQ8OUjgib3yG3yyGWX8kEcAhC1Rzfr5ym4yWrCrQiT5wUGFqG7HCvub8ix0a1np7sYR8ePr_dLaXCo1GrIrE_KAjl3ACBTRodEemNwHqRDEZKPTNIGkJkXi3ECBfyFn6FPCytQ_1GzSPQ6j676JEoKWOE\/s1600\/Android-13-Desktop-AVD-Header.png\"><img decoding=\"async\" border=\"0\" data-original-height=\"800\" data-original-width=\"100%\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhxlVH6A7vyTdl1iUORCTBBC5Z2_5P-Up_WplvQ8OUjgib3yG3yyGWX8kEcAhC1Rzfr5ym4yWrCrQiT5wUGFqG7HCvub8ix0a1np7sYR8ePr_dLaXCo1GrIrE_KAjl3ACBTRodEemNwHqRDEZKPTNIGkJkXi3ECBfyFn6FPCytQ_1GzSPQ6j676JEoKWOE\/s1600\/Android-13-Desktop-AVD-Header.png\"\/><\/a><\/p>\n<h2 style=\"text-align: left;\"><span style=\"font-size: x-large;\">App screen sharing improves privacy and productivity<\/span><\/h2>\n<p>Android 14 QPR2 brings exciting advancements in user privacy and streamlined multitasking with app screen sharing. No longer do users have to broadcast their entire screen while screen sharing or casting, ensuring they share exactly what they want to share.<\/p>\n<p>Leverage the new <a href=\"https:\/\/developer.android.com\/reference\/kotlin\/android\/media\/projection\/MediaProjection\" target=\"_blank\" rel=\"noopener\">MediaProjection APIs<\/a> to customize the screen sharing experience and deliver even greater utility to your users.<\/p>\n<h3 style=\"text-align: left;\"><span style=\"font-size: large;\">What is app screen sharing?<\/span><\/h3>\n<p>Prior to Android 14, users could only share or record their entire screen on Android devices, which could expose private information in other apps or notifications.<\/p>\n<p>App screen sharing is a new platform feature that lets users restrict sharing and recording to a single app window, mitigating the risk of oversharing private messages or notifications. With app screen sharing, the status bar, navigation bar, notifications, and other system UI elements are excluded from the shared display. Only the content of the selected app is shared.<\/p>\n<p>This not only enhances security for screen sharing, but also enables new use cases on large screens. Users can improve multitasking productivity \u2013 such as screen sharing while attending a meeting \u2013 by taking advantage of extra screen space on these larger devices.<\/p>\n<h3 style=\"text-align: left;\"><span style=\"font-size: large;\">How does it work?<\/span><\/h3>\n<p>There are three different entry points for users to start app screen sharing:<\/p>\n<ol>\n<li>Start casting from Quick Settings<\/li>\n<li>Start screen recording from Quick Settings<\/li>\n<li>Launch from an app with screen sharing or recording capabilities via the MediaProjection API<\/li>\n<\/ol>\n<p>Let\u2019s consider an example where a host user wants to share a single app to the participants of a video call.<\/p>\n<p>The host user starts screen sharing as usual, but now in Android 14 they are presented with an updated dialog that allows them to choose whether to share a single app instead of their entire screen.<\/p>\n<p>The host user decides to share a single app, and they select the app from the App Selector.<\/p>\n<p>During screen sharing, the video call participants can see only the content from the selected app.<\/p>\n<p>The host user can end the screen capture in a few ways: from the app where sharing started, in the notification shade, by closing the app being shared, or by ending the video call.<\/p>\n<p><image><\/p>\n<div style=\"text-align: center;\"><img decoding=\"async\" alt=\"visual journey of host sharing a single app to the participants in a video call across four panels\" border=\"0\" id=\"imgCaption\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjyFA8txeUeB4A3r51f5Iv1uf9fIpbiQHODGbtwWEo1Jlcj1mTwOGGv5kcpFcypBCiLeepwmPMiod-sF5f_b9j6oa-iRwNIRgl9EuNv_4gDoCWnum_h4VqokCrxmIqW5bJrB9I4lGFCc0P8Fo7ot_-jL_Z5NHhi7BGXv3_DDJcd-y6CtoK3P0NKSyXXMH4\/s1600\/App-screen-sharing-inline.png\" width=\"auto\"\/><\/div>\n<p><\/image><\/p>\n<h3 style=\"text-align: left;\"><span style=\"font-size: large;\">How to support app screen sharing?<\/span><\/h3>\n<p>Apps that use the <a href=\"https:\/\/developer.android.com\/reference\/kotlin\/android\/media\/projection\/MediaProjection?_gl=1*192c0v6*_up*MQ..*_ga*MTIxNjAwMjcxOC4xNzA4MDgwMDIx*_ga_6HH9YJMN9M*MTcwODA4MDAyMC4xLjAuMTcwODA4MDAyMC4wLjAuMA..\" target=\"_blank\" rel=\"noopener\">MediaProjection APIs<\/a> are capable of starting app screen sharing <b>without any code changes<\/b>. However, it\u2019s important to test your app to ensure that the screen sharing experience works as intended, since the user flow changes with this new behavior. Previously, the user would stay in the host app after the permission dialog. With app screen sharing the user is not returned to the host app, but the target app to be shared is launched instead. If the target app was already running in foreground (e.g. in multi window mode), then it simply becomes the top focused app.<\/p>\n<p>Android 14 also introduces two callback methods to empower you to customize the sharing experience:<\/p>\n<p><span style=\"font-family: Courier;\"><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/android\/media\/projection\/MediaProjection.Callback?_gl=1*1dwltys*_up*MQ..*_ga*MTIxNjAwMjcxOC4xNzA4MDgwMDIx*_ga_6HH9YJMN9M*MTcwODA4MDAyMC4xLjAuMTcwODA4MDAyMC4wLjAuMA..#oncapturedcontentresize\" target=\"_blank\" rel=\"noopener\">MediaProjection.Callback#onCapturedContentResize(width, height)<\/a><\/span> is invoked immediately after capture begins or when the size of the captured region changes. The method arguments provide the accurate sizing for the streamed capture.<\/p>\n<p><b>Note:<\/b> The given width and height correspond to the same width and height that would be returned from <span style=\"font-family: Courier;\"><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/android\/view\/WindowMetrics.html?_gl=1*fzz62x*_up*MQ..*_ga*MTIxNjAwMjcxOC4xNzA4MDgwMDIx*_ga_6HH9YJMN9M*MTcwODA4MDAyMC4xLjAuMTcwODA4MDE4OS4wLjAuMA..#getBounds%28%29\" target=\"_blank\" rel=\"noopener\">android.view.WindowMetrics#getBounds()<\/a><\/span> of the captured region.<\/p>\n<p>If the recorded content has a different aspect ratio from either the <span style=\"font-family: Courier;\"><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/android\/hardware\/display\/VirtualDisplay.html?_gl=1*fzz62x*_up*MQ..*_ga*MTIxNjAwMjcxOC4xNzA4MDgwMDIx*_ga_6HH9YJMN9M*MTcwODA4MDAyMC4xLjAuMTcwODA4MDE4OS4wLjAuMA..\" target=\"_blank\" rel=\"noopener\">VirtualDisplay<\/a><\/span> or output <span style=\"font-family: Courier;\"><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/android\/view\/Surface.html?_gl=1*fzz62x*_up*MQ..*_ga*MTIxNjAwMjcxOC4xNzA4MDgwMDIx*_ga_6HH9YJMN9M*MTcwODA4MDAyMC4xLjAuMTcwODA4MDE4OS4wLjAuMA..\" target=\"_blank\" rel=\"noopener\">Surface<\/a><\/span>, the captured stream has black bars around the recorded content. The application can avoid the black bars around the recorded content by updating the size of both the <span style=\"color: #0d904f; font-family: Courier;\">VirtualDisplay<\/span> and output <span style=\"color: #0d904f; font-family: Courier;\">Surface<\/span>:<\/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;\">override<\/span> <span style=\"color: green; font-weight: bold;\">fun<\/span> <span style=\"color: blue;\">onCapturedContentResize<\/span>(width: Int, height: Int): String {\n    <span style=\"color: #408080; font-style: italic;\">\/\/ VirtualDisplay instance from MediaProjection#createVirtualDisplay().<\/span>\n    virtualDisplay.resize(width, height, dpi)\n\n    <span style=\"color: #408080; font-style: italic;\">\/\/ Create a new Surface with the updated size.<\/span>\n    <span style=\"color: green; font-weight: bold;\">val<\/span> textureName: Int <span style=\"color: #408080; font-style: italic;\">\/\/ the OpenGL texture object name<\/span>\n    <span style=\"color: green; font-weight: bold;\">val<\/span> surfaceTexture = SurfaceTexture(textureName)\n    surfaceTexture.setDefaultBufferSize(width, height)\n    <span style=\"color: green; font-weight: bold;\">val<\/span> surface = Surface(surfaceTexture)\n\n    <span style=\"color: #408080; font-style: italic;\">\/\/ Ensure the VirtualDisplay has the updated Surface to send the capture to.<\/span>\n    virtualDisplay.setSurface(surface)\n}\n<\/pre>\n<\/div>\n<p>The other API is <span style=\"font-family: Courier;\"><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/android\/media\/projection\/MediaProjection.Callback?_gl=1*1rggbp6*_up*MQ..*_ga*MTIxNjAwMjcxOC4xNzA4MDgwMDIx*_ga_6HH9YJMN9M*MTcwODA4MDAyMC4xLjAuMTcwODA4MDAyMC4wLjAuMA..#oncapturedcontentvisibilitychanged\" target=\"_blank\" rel=\"noopener\">MediaProjection.Callback#onCapturedContentVisibilityChanged(isVisible)<\/a><\/span>, which is invoked after capture begins or when the visibility of the captured region changes. The method argument indicates the current visibility of the captured region.<\/p>\n<p>The callback is triggered when:<\/p>\n<ul>\n<ul>\n<li>The captured region becomes invisible <span style=\"color: #0d904f; font-family: Courier;\">(isVisible==False)<\/span>.This may happen when the projected app is not topmost anymore, like when another app entirely covers it, or the user navigates away from the captured app.<\/li>\n<li>The captured region becomes visible again <span style=\"color: #0d904f; font-family: Courier;\">(isVisible==True)<\/span>.This may happen if the user moves the covering app to show at least some portion of the captured app (for example, the user has multiple apps visible in  multi-window mode).<\/li>\n<\/ul>\n<\/ul>\n<p>Applications can take advantage of this callback by showing or hiding the captured content from the output <span style=\"font-family: Courier;\"><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/android\/view\/Surface.html\" target=\"_blank\" rel=\"noopener\">Surface<\/a><\/span> based on whether the captured region is currently visible to the user. You should pause or resume the sharing accordingly in order to conserve resources.<\/p>\n<h3 style=\"text-align: left;\"><span style=\"font-size: large;\">How Google Meet is improving meeting productivity<\/span><\/h3>\n<blockquote><p><span style=\"font-size: large;\"><i>\u201cApp screen sharing enables users to share specific information in a Meet call without oversharing private information on the screen like messages and notifications. Users can choose specific apps to share, or they  can share the whole screen as before. Additionally, users can leverage split-screen mode on large screen devices to share content while still seeing the faces of friends, families, coworkers, and other meeting participants.\u201d\u00a0<\/i><\/span><b>&#8211; Product Manager at Google Meet<\/b><\/p><\/blockquote>\n<p>Let\u2019s see app screen sharing in action during a video call, in this coming-soon version of Google Meet!<\/p>\n<p><image><\/p>\n<div style=\"text-align: center;\"><img decoding=\"async\" alt=\"moving image of app screen sharing in action during a video call on Google Meet\" border=\"0\" id=\"imgCaption\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi0_voCiK0Puj-DzOezfUac_cI7SZ8oiRMm-0y4UKRrfvNr3iyPk-4u6DK8hXpPykOiPZp3idl73ky7zztsh3v_XvH9qRLg-mFTNPWe1xTUq2cjyb3da0J0j4NMuuVJQP0iQFJv6J0TTYuRZdCb7o06PLmCAajZ940i2sgMOQ7IIYH-edRHtzjfw1PDJuQ\/s1600\/image1.gif\" width=\"auto\"\/><\/div>\n<p><\/image><\/p>\n<h3 style=\"text-align: left;\"><span style=\"font-size: large;\">Window on the world<\/span><\/h3>\n<p>App screen sharing opens doors (and windows) for more focused and secure app experiences within the Android ecosystem.<\/p>\n<p>This new feature enhances several use cases:<\/p>\n<ul>\n<ul>\n<li><b>Collaboration apps<\/b> can facilitate focused discussion on specific design elements, documents, or spreadsheets without including distracting background details.<\/li>\n<li><b>Tech support<\/b> agents can remotely view the user&#8217;s problem app without seeing potentially sensitive content in other areas.<\/li>\n<li><b>Video conferencing tools<\/b> can share a presentation window selectively rather than the entire screen.<\/li>\n<li><b>Educational apps<\/b> can demonstrate functionality without compromising student privacy, and students can share projects without fear of showing sensitive information.<\/li>\n<\/ul>\n<\/ul>\n<p>By thoughtfully implementing app screen sharing, you can establish your app as a champion of user privacy and convenience.<\/p>\n<\/div>\n<p>[ad_2]<br \/>\n<br \/><a href=\"http:\/\/android-developers.googleblog.com\/2024\/03\/enhanced-screen-sharing-capabilities-in-android-14.html\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Posted by Francesco Romano \u2013 Developer Relations Engineer on Android App screen sharing improves privacy and productivity Android 14 QPR2 brings exciting advancements in<\/p>\n","protected":false},"author":1,"featured_media":219112,"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\/219111"}],"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=219111"}],"version-history":[{"count":4,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/posts\/219111\/revisions"}],"predecessor-version":[{"id":332180,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/posts\/219111\/revisions\/332180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/media\/219112"}],"wp:attachment":[{"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/media?parent=219111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/categories?post=219111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michigandigitalnews.com\/index.php\/wp-json\/wp\/v2\/tags?post=219111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}