Filter
-
Content Type
-
Category
Mobile/Wearable
Visual Display
Digital Appliance
Platform
Recommendations
Filter
Distribute Galaxy Store
docgalaxy self-check list this checklist includes the most frequent causes why galaxy apps fail review processing and are not published in galaxy store before registering your app in samsung seller portal, please ensure your app meets these requirements on all mobile devices to which the app will be distributed note you can remotely install and test your app on real mobile devices at the remote test lab check the debugging option of the app confirm that the debugging option is set to “false” for example, android debuggable="false” apps must not cause installation and execution errors under all operating conditions ensure the app installs properly and runs apps must not be forced to quit under all operating conditions test all functions implemented in the app and ensure the app is not forced to terminate for example, during sharing operations and after clicking a ‘back’ key apps must not cause display issues under all operating conditions ensure all app ui screens, including main and popup windows, properly display at the device screen resolution and no resolution errors occur while the app runs for example, when changing from landscape to portrait mode apps must properly play sounds under all operating conditions while the app is running • ensure all sounds played by the app are properly played by the device for example, ‘on’ and ‘off’ sounds • ensure the app does not play sounds when a phone call comes in, and the sound automatically starts playing again when the call ends • ensure the app does not play sounds when the device enters hold or sleep mode however, sounds may vary depending on the characteristics of the app such as a radio or music playback app registered app name and icon must be the same as displayed by mobile devices ensure the app name and icon registered in seller portal are the same as those displayed by the app and by the device ui such as, the app tray registered app description and screenshots must be accurate and the same as displayed by mobile devices ensure the app description and all app screenshots registered in seller portal accurately describe and portray the app, and are the same as displayed by the app and by the device ui such as, app information screens app terms must not confuse app users ensure all words and phrases presented by the app are relevant to the app, its functions, and it operations for example, names of famous people and popular items when a user account is required to use your app, you must submit a test account for app review processing when an app user must log in to use an app, you must register test account login information or attach an explanatory self-test video to the seller portal app registration ‘please enter comments to the review team’ field your app title and description must be in a proper language if your app is distributed to two or more countries • the default language for app registration must be english, and your app title and description must be in english • optionally, you can also add app registration language tabs, and enter app registration information in any of the supported languages if your app is distributed to only one country • the default registration language and registration information can be the most suitable, supported language including english • optionally, you can also add app registration language tabs, and enter app registration information in any of the supported languages to enter app registration information in a language other than the default language, click advanced, click + add, select one or more languages, click save, click select language > [alternate language], and enter the information apps must not infringe the intellectual property rights of others ensure your app content and app registration information including titles, descriptions, tags, and images do not violate the intellectual property rights of others such as, brand names, logos, trademarks, service marks, and copyrights app content or information that is similar to or suggestive of protected property can infringe on rights if you have the right to use content protected by intellectual property rights, attach the relevant documents to the app registration in samsung seller portal for more details, see http //developer samsung com/galaxy-store/ip-infringement html
Develop Samsung Blockchain
docfaq 1. what can users do with samsung blockchain keystore? with samsung blockchain keystore preloaded on select galaxy devices, users can now easily create a key storage in the secure file system for blockchain transactions. users can run samsung blockchain keystore to check the 12 mnemonic words that correspond to the root seed that is used to derive both public and private keys. when using a decentralized app (dapp) or cryptocurrency wallet that have integrated samsung blockchain keystore sdk, users will be able to confirm their transactions on a secure screen and sign the transaction with a private key. 2. what happens if a user switches from a non-samsung blockchain keystore-supported device to a samsung blockchain keystore-supported device? if the dapp is integrated with a wallet that supports bip39-standard hd-wallet (hierarchical deterministic wallet), such as metamask, dapps will need to make sure that users have saved the 12 to 24 mnemonic words from the wallet. afterwards, users can restore the same wallet on samsung blockchain keystore by entering the 12 to 24 mnemonic words. however, simply installing the same dapp or using smart switch from a non-samsung blockchain keystore supported device to a supported one will not move the user’s account directly. 3. how does the authentication method work? personal identification number (pin) and biometrics authentication like fingerprint are all executed on samsung devices, and are not dependent on any type of network. samsung blockchain keystore will authenticate users via pin or biometrics when a user’s confirmation is needed, such as signing a transaction. 4. how is the key pair generated? samsung blockchain keystore generates the key pair on the device itself and safely stores them on the device. samsung blockchain keystore does not rely on other network or third party to generate these keys. 5. what are mnemonic words? mnemonic words are compatible to bip-39 standard and is the root to creating public and private keys. users can check their mnemonic words, also known as recovery phrase, in samsung blockchain keystore settings. the recovery phrase is the only way a user can recover the wallet when a device is lost or stolen. 6. what is tui? trusted user interface: allows users to make an input and show display safely, in a trusted execution environment (tee). supported by samsung knox (a mobile security platform). samsung blockchain keystore leverages this tui to help users to enter a pin and confirm transactions with greater security. 7. what should i do if i get an error code, error_package_signature_verification_failed? it means your app does not have the authorization to access samsung blockchain keystore. developers can use developer mode to bypass the app verification and enable apis. however, for your release version, an api key, issued by samsung blockchain keystore team, will need to be included in your app to work properly. 8. how can i send a signed transaction? sending a signed transaction is not in the scope of samsung blockchain keystore. developers will need to setup their own nodes or use other public nodes. 9. can i test samsung blockchain keystore by downloading it from galaxy store? no, samsung blockchain keystore is preloaded on selected devices only. if your device is not supported, then you won’t be able to find it in the galaxy store either. developers will need to test and integrate on the supported devices, or try out the remote test lab in samsung developers site to experience devices needed for samsung blockchain keystore sdk integration. 10. what is the purpose of a seed hash? a seed hash aims to help developers distinguish if a user has setup samsung blockchain keystore and whether the root seed has been changed or not. every time a root seed (or a wallet) is created, a random string, or a “seed hash” value will be created and returned to the developers. this is not related to the contents of the seed, but developers can use the seed hash to check if a user’s root seed has been changed. if the root seed has been changed due to user deleting and re-creating a wallet, then the developers will need to get user’s address again from samsung blockchain keystore and link it to your android app, since a different root seed implies a different address. 11. is there a plan to support other cryptocurrencies as well as expand supported regions? yes, we plan to support more cryptocurrencies and expand supported regions in the near future.
Develop Galaxy Watch for Tizen
docfaq q01 why are my watch apps not available in the galaxy store for upgraded gear watches or new devices? you must specify in seller portal that your binary is compatible with all new devices a watch with an upgraded os is considered a new device and republish your app after your updated app is published, it will be available to those new devices on gear s3 and gear sport watches, the tizen os can be upgraded gear s3 can be upgraded from tizen 2 3 2 to tizen 3 0 or 4 0 gear sport can be upgraded from tizen 3 0 to tizen 4 0 if you published your app before these upgrades were available, the option to include the upgraded watch as a compatible device was not available in seller portal for example, if you published your app before tizen 4 0 was released, your selections for compatible gear sport watches in seller portal would have been for tizen 3 0 only likewise, your selections for compatible gear s3 devices would have been for tizen 2 3 2 and 3 0 as a result, a customer who has upgraded their watch to tizen 4 0 will not be able to view your app in the galaxy store in order to have your watch app recognized as compatible with an upgraded watch, you must update the compatible devices for the binary in seller portal in general, if a new device is released or an existing device becomes upgradable to a new os after you have published your app and you want your app available on these devices, you must update your binary to be compatible with these devices and republish your app to update the list of compatible devices for your binary file in seller portal log in to seller portal and open your watch face app click the binary tab at the top of the binary section, in the middle is a box with selected device s and the total number of selected compatible devices click on the number in the detailed device settings window, select each device with which the binary is compatible if your binary is compatible with all listed devices, click select all click save submit your app for validation and, after it has been successfully validated, republish it q02 create product images for galaxy watch detail pages make your galaxy watch face or app stand out in the galaxy store samsung recommends that you use portrait-orientation product images for your galaxy watch detail page users can just tap on a portrait image to open it in full-screen mode, creating an optimal phone experience and allowing your app to stand out in the galaxy store best practices use detailed, close-up images of the product we suggest that you use just the product and logo with minimal or no text for a strong image that shows the quality of your workmanship avoid using identical images for the icon, cover image, and screenshot in this case, the detail page shows three duplicate images rather than three separate views of the product screenshot resolution we suggest the following resolution guidelines for screenshots cover image = 1024 x 500 pixels horizontal screenshots = 1500 x 750 pixels vertical screenshots = 550 x 1100 pixels galaxy store asset creator you can use the galaxy store asset creator to easily export the assets you need to publish your watch face to the galaxy store to use this tool, you need photoshop version 16 0 cc 2015 or later a basic understanding of photoshop download the galaxy store watch asset creator template to get started! lifestyle photo asset packs show off your watch face designs on an actual watch using our "smart" photoshop files download lifestyle photo assets and save time! examples the following screenshot shows a galaxy watch detail page with three portrait screenshots that show detailed aspects of the galaxy watch face the following screenshot shows a galaxy watch detail page with landscape screenshots that are cut off on the sides, making them less visually appealing in the galaxy store q03 find, download, and export galaxy watch images use the lifestyle photo assets to show your watch face designs on an actual watch or, use the galaxy store asset creator to easily export the assets you need to publish your watch face to the galaxy store to use these tools, you need photoshop version 16 0 cc 2015 or later a basic understanding of photoshop download lifestyle photo assets and save time! download the galaxy store watch asset creator template to get started! q04 develop galaxy watch faces with galaxy watch studio you can use galaxy watch studio formerly galaxy watch designer to design your galaxy watch faces to download galaxy watch studio gws , go to /galaxy-watch-tizen/studio/overview html to develop watch faces using gws, see the galaxy watch studio tutorial q05 what is a distributor certificate and how is it used? the distributor certificate is used for signing and verifying your app it identifies the distributor for example, galaxy store and grants privileges to that distributor for testing purposes, it ensures that your signed application is installed on registered devices only in order to test your app on a device, the device must be registered in your personal distributor certificate then, you must build your app, which signs the app using your personal distributor certificate to generate a personal distributor certificate and register a samsung device, using the galaxy watch studio formerly galaxy watch designer , from the main menu bar, click project > distribute certificate for more information, see get your certificates using tizen studio, from the main menu bar, click tizen tools > certificate manager the samsung certificate extension must be installed in order to properly generate a personal distributor certificate for your samsung device for information about the samsung certificate extension, see installing certificate extension for information about the certificate manager, see creating certificates and managing certificate profile the personal distributor certificate is used for testing only when you release your app for sale in the galaxy store, your personal distributor certificate is replaced by an official distributor certificate if you upgrade a registered device for example, you upgrade the tizen os , you may need to re-register the device in your personal distributor certificate for example, if you upgrade your galaxy watch 3 or sport watch to tizen 4 0, you must re- register the device in your personal distributor certificate and rebuild your app before testing it on the device you may encounter one of the following error messages if there is a problem with the distributor certificate message message solution account in device profile mismatch with distributor certificate the device has been upgraded and the duid device unique identifier has changed re-register the device in your personal distributor certificate and rebuild your app launching appmanagerappid has encountered a problem the device is not found in your personal distributor certificate or your personal distributor certificate was not created properly register the device in your personal distributor certificate or re-create your personal distributor certificate and rebuild your app the application installation on the device has failed due to a signature error! error code -12 you used the tizen studio distributor certificate when building your app, not the distributor certificate generated by the samsung certificate extension select or create a distributor certificate for your samsung device using the certificate manager and rebuild your app for information about the samsung certificate extension, see installing certificate extension for information about the certificate manager, see creating certificates and managing certificate profile for more information about distributor certificates, see getting the certificates q06 how to test galaxy watch app in different devices? you can register up to 50 devices to one samsung certificate see creating certificates for more information developer certificate is made of author certificate and distributor certificate to change or add a new device to the certificate, you need to create a new distributor certificate again while keeping the same author certificate for more information, see managing certificate profile q07 what is the deeplink format to redirect users to download android app programmatically from inside galaxy watch app? linking to galaxy app store use the format below to deeplink directly to an app’s detail page, where users can see app description, screen shots etc and then install it to create a link, you need to know app’s fully qualified package name which is declared in android manifest file for android app or config xml / tizen manifest file for galaxy watch app from a galaxy watch app to android app’s store detail page samsungapps //productdetail/ example, samsungapps //productdetail/com example androidapp from a galaxy watch app to galaxy watch app’s store detail page samsungapps //productdetail/ example, samsungapps //productdetail/cnam8ugvz8 from a web site http //apps samsung com/gear/appdetail as?appid= example, http //apps samsung com/gear/appdetail as?appid=cnam8ugvz8 q08 how to update the tau library to the latest version? you can download the latest version of the tau library from downloading tau q09 how to launch android app from a galaxy watch app programmatically? see remote app control q10 when the time zone is changed, the value of the date object constructed in the callback keeps the time zone unchanged for example function test { var now = new date ; console log "hour "+now gethours ; // even when the time zone is changed, it remains unchanged } setinterval function {test ;}, 1000 ; to solve the problem, please see retrieving date and time q11 how to install my galaxy watch application to the device? see testing your app on galaxy watch if your device is galaxy watch s or older, there are 2 ways of transferring your application wgt to galaxy watch device first way is, create an android application -> copy your wgt file to assets folder of the android application -> generate apk -> install this apk through galaxy watch manager to your galaxy watch device second way is, go to command prompt -> go to the directory where the sdb exe tool is located -> make sure your wgt file is in this directory -> type command sdb install wgt q12 how to create an integrated/linked application? the integrated and linked type are deprecated on any samsung watch running tizen 2 3 1 or higher such as gear s2, gear s3, gear sport, and any galaxy watch and are only supported on gear 2, gear s, or any samsung watch running tizen 2 2 or earlier see the video how to create a basic integrated gear application q13 does gear 2 support native applications development? no it is available from the gear s2 based on the tizen 2 3 1 q14 i want to post notifications from my application to the galaxy watch device do i need to create a tizen application for this purpose? no, it is not necessary to create a galaxy watch app to send notifications from your phone every notification that the phone receives is automatically relayed to your galaxy watch device after you enable this functionality in samsung galaxy watch settings q15 does remote test lab support galaxy watch application testing? yes, more information can be found at about remote test lab q16 how do i specify meta data master_app_samsungapps_deeplink? see configuring galaxy watch application q17 where can i find tutorials for galaxy watch application development on the wearable side? see creating your first app q18 i have implemented tizen notification api in my app why are notifications posted by my app not shown in the notification panel of my galaxy watch? notification settings of a galaxy watch can be managed from the galaxy wearable app on your phone if your watch is paired to a phone, check the notification settings in the galaxy wearable app for example, in the galaxy wearable app, you can enable or disable permission for your app to send notifications to your watch also check if "show only when wearing" is enabled if this setting is enabled, notifications won't appear unless you are wearing the watch q19 can i launch the tizen emulator on a system that runs on an amd processor? no, hyper-v/whpx is not supported by amd processors instead, deploy your project directly on your galaxy watch q20 any tips and trick when connecting my galaxy watch to tizen studio? yes, consider the following the pc and watch must be on the same network developer options must be enabled on the watch galaxy watch only supports one sdb connection at a time the watch cannot connect to two different systems that are running tizen studio at the same time see testing your app on galaxy watch for more information q21 do i have to connect my galaxy watch to my pc when i deploy my app from tizen studio? yes, in order to deploy your app from tizen studio to your watch, your watch must be connected to your pc you can connect your watch over wifi
Distribute Galaxy Store Games
docget started in galaxy store the following is a list of tasks required, recommended, and optional , videos, and recommended reading to help you start selling your apps in galaxy store a link to more detailed information is provided, when available the icons represent the following required task recommended task optional task video recommended reading prepare before you do anything, sign up for a samsung account using your samsung account, you can register with samsung developers and seller portal and apply for commercial seller status then, understand what you need to do if you are submitting your app to more than one app store, and review the online resources provided by galaxy gamedev register with seller portal downloadable pdf seller portal is used to manage your applications that are distributed in galaxy store if you want to sell your app in galaxy store, you must have a seller portal account the seller portal user guide provides more information about seller portal registration also, watch the video about how to create a seller portal account apply for commercial seller status downloadable pdf in seller portal, you must apply for commercial seller status the seller portal user guide provides more information about commercial seller status review apk package naming and billing guidelines when you are submitting a game or app to more than one app store, you need to keep track of the package name and/or version codes you use in your apk for each app store and, if you have in-app purchases, the billing solution used add a galaxy store review link get feedback from your customers by adding a link from your app to your app's review page in galaxy store positive feedback can influence users to purchase your app explore the samsung developers portal samsung developers portal provides access to sdks, services, tools, and guides you can also sign up for a newsletter that keeps you up-to-date with the latest blogs, news, and events register using your samsung account how to create a seller portal account seller portal is used to manage your applications that are distributed in galaxy store if you want to sell your app in galaxy store, you must have a seller portal account explore the seller portal dashboard check out the top level menus, learn some of the basic tasks, and discover where to find additional information and support for seller portal learn about samsung seller portal a basic overview of the major features in seller portal learn about galaxy gamedev review technical support options for game developers monetize learn about requirements for in-app items and paid apps integrate with samsung in-app purchase iap downloadable pdf if you are selling your app and/or in-app items, samsung recommends that you use samsung iap as your billing solution samsung iap includes an sdk, guides, examples, and unity and unreal plugins maximize your revenue with samsung in-app purchase learn about the new features and improvements released in samsung in-app purchase iap 6 0 monetize your games with samsung in-app purchase introduction to samsung iap plug-in functionality for unity and unreal game engines learn more about samsung iap review the online samsung iap documentation make the most from your games discover different ways to generate revenue in galaxy store launch register your app and in-app items in seller portal, test your app, then launch your app in galaxy store all apps must be reviewed and approved by samsung before they are distributed to galaxy store for sale noteare you a developer of a popular game on galaxy smartphones? we can help you go live in five minutes in galaxy store contact us to learn more about our fast app review process register your app in seller portal downloadable pdf, by app type android, galaxy themes how to register your app in seller portal, based on the app type the seller portal user guide provides more information about app registration review the app distribution guide, intellectual property infringement checklist, and galaxy self-check list ensure that your app meets samsung's requirements and standards of quality to pass publication review set a publication date determine when your app becomes available in galaxy store your app can be published when it passes an initial review, on a set date, or you can manually control the release of your app in seller portal, set the publication date in the publication tab using the start publication field beta test your app learn how to deploy your app for beta testing and receive valuable feedback from testers test your in-app item transactions test your samsung iap integration, such as in-app item offering, purchase, and payment functionality available for closed beta testing only get started in instant plays 2 0 bring users directly from an ad click into your game using our mobile cloud gaming platform, your game becomes instantly available and accessible to all compatible samsung galaxy devices publish in five minutes contact us to find out if your games qualify for our fast app review process review the seller portal user guide review information about seller portal use the galaxy store developer api learn how to manage your apps and in-app items and view statistics about your apps programmatically seller portal android app binary registration device resolution lists the device resolutions most used by customers in galaxy store this is a required field when you register your android app in seller portal manage in-app items read more about how to manage your in-app items in seller portal test your app on a samsung device test your app on the latest samsung galaxy devices using remote test lab understand the review process check out the steps samsung takes to review your app level up after your app is published in galaxy store, learn more about tracking performance metrics, promoting your app, and tracking user data pre-certify your app if you are working with the samsung business development team and they are merchandizing your app, your apps must be pre-certified pre-certification helps to uncover issues if no issues are found, pre-certification can take around five days to complete engage on social media promote your content and attract new customers using our social media kits, hashtags, and guidelines create galaxy store badges directly link users from your web site or social media channels to your app product detail page generate badges from seller portal after the publication of your app request promotion for your galaxy themes promote your app and increase your downloads by being included in a collection in galaxy store discover user attribution data identify how a user finds your app's detail page in galaxy store using galaxy store statistics integrate with third-party attribution platforms track user data using third-party attribution platforms integrated with galaxy store become familiar with galaxy store statistics galaxy store statistics gss is a tool that is included with seller portal and allows you to see the performance metrics of all your apps learn about the valuable data available to you in gss u s partner onboarding guidelines the pdf content provided on this page was taken from the u s partner onboarding guidelines for your convenience, the entire guideline is provided in a single downloadable pdf for each app type you must log in or be logged in to your samsung account to download these pdfs u s partner onboarding guideline android 407kb pdf u s partner onboarding guideline galaxy themes 3 8mb pdf
Distribute Galaxy Store
docdiscover galaxy store galaxy store is a premium app store designed specifically for galaxy device users that offers a boutique store experience it is where users organically discover amazing games, and exclusive and differentiated applications created by samsung and third parties galaxy store is focused on providing quality app experiences, app promotions, campaigns, rewards, and exclusive offers marketing and promotions available in over 180 countries, market your app to the hundreds of millions of active galaxy device users who download billions of apps from galaxy store reach these users with promotions for galaxy themes you can request to promote your app in galaxy store when your app meets the selection criteria you may qualify to be part of a collection of apps that fit a trending topic example of collections in galaxy store that promote apps samsung also provides marketing resources, such as the galaxy store badge, that help you promote your app in social media or other areas outside of galaxy store link users directly to your app in galaxy store using the galaxy store badge positive customer reviews can help you grow sales by influencing users who consider other users’ reviews before downloading an app ask your customers to review your app by directly connecting them from your app to your galaxy store app review page using a galaxy store review link link your customers directly to your app review page community looking for like-minded people who share your passion for creating apps? connect with other developers in the samsung developer forums by asking or responding to questions or sharing ideas about the samsung app ecosystem read our blogs to learn about the latest technology and trends if you still can’t find the information you’re looking for, contact us by submitting a request to the developer support team in-app purchase and samsung galaxy sdks with samsung in-app purchase iap , galaxy store can provide you a new revenue stream and opens the opportunity to diversify your sales iap is samsung’s payment service that makes it possible to sell items, such as virtual goods or subscriptions, in your applications samsung provides examples, beta testing, and technical support to help with the integration of the sdk and server apis, reducing time-to-market samsung also provides a collection of sdks, services, and tools to help you create and develop your apps for galaxy devices access to galaxy devices if you don’t own a galaxy device, use the remote test lab service to test your applications on a real device these are actual devices that you access through the web save on hardware costs and test the compatibility of your app on multiple devices performance, metrics, and user attribution galaxy store statistics gss is a free and exclusive tool that can be used to track and monitor galaxy store app performance and metrics like downloads, conversion, subscription, top seo keywords, attribution channels, and galaxy store badge linking gss also provides user acquisition reports that measure user attribution and breaks down the numbers by channel, source, keywords, and featured placement attribution from galaxy store banners or icons track app performance using galaxy store statistics additionally, galaxy store is integrated with several third-party attribution platforms app publishers have used platforms such as adjust, appsflyer, branch, kochava, and singular for side-by-side conversion measurement galaxy games galaxy store has its own merchandising and marketing opportunities for game developers game developers who meet pre-requisites around quality, downloads, ratings, and reviews can be considered to be featured in galaxy store game collections, banners, marketing promotions, and campaigns games are featured in the samsung app ecosystem for example, pre-loaded on most galaxy devices, gaming hub is the high-engagement gaming experience where gamers discover new featured titles resulting in billions of page views games are also featured in galaxy themes store, samsung pay, bixby, samsung daily, and in regional push notifications, creating a high-engagement premium marketing channel reaching the global galaxy user base become one of our top sellers and you may qualify for the fast app review process, allowing you to publish your games in galaxy store in five minutes after submission learn more about the advantages of selling your game in galaxy store and how to get started in galaxy store games galaxy watch for tizen and themes have an idea for a watch face or theme for your galaxy device? use galaxy watch studio for tizen or galaxy themes studio to develop your designs without having to learn how to code when you’re ready to start selling your designs, you can direct users to your seller brand page, which is a portfolio of all of your offerings your loyal customers can check this page often to view your latest creations your galaxy store seller brand page highlights the newest and most popular designs in your portfolio galaxy store also provides a channel where customers can purchase galaxy watch for tizen apps for a galaxy watch synced with a non-samsung device the support available in each store channel may differ among countries and between paid apps and free apps get started are you ready to include your app to be part of the billions of global downloads? get started in galaxy store now! would you like to learn more? contact us by submitting a developer support request at https //developer samsung com/support
Learn Code Lab
codelabimplement flex mode on an unreal engine game objective learn how to implement flex mode on an unreal engine game using android jetpack windowmanager and raw java native interface jni overview the flexible hinge and glass display on galaxy foldable devices, such as the galaxy z fold4 and galaxy z flip4, let the phone remains propped open while you use apps when the phone is partially folded, it will go into flex mode apps will reorient to fit the screen, letting you watch videos or play games without holding the phone for example, you can set the device on a flat surface, like on a table, and use the bottom half of the screen to navigate unfold the phone to use the apps in full screen mode, and partially fold it again to return to flex mode to provide users with a convenient and versatile foldable experience, developers need to optimize their apps to meet the flex mode standard set up your environment you will need the following epic games launcher with unreal engine 4 or later visual studio or any source code editor samsung galaxy foldable device galaxy z fold2, z fold3, or newer galaxy z flip, z flip3, or newer remote test lab if physical device is not available requirements samsung account java runtime environment jre 7 or later with java web start internet environment where port 2600 is available create and set up your project after launching unreal engine from the epic games launcher, follow the steps below to start your project in the select or create new project window, choose games as a new project category and click next select third person as template, then click next to proceed noteyou can implement flex mode on any template or existing projects and use this code lab activity as a reference in the project settings window, set the following type of project c++ target platform mobile / tablet performance characteristics scalable 3d or 2d real-time raytracing raytracing disabled include an additional content pack no starter content project name tutorial_project click create project wait for the engine to finish loading and open the unreal editor once the project is loaded, go to edit > project settings > platforms > android click the configure now button if the project is not yet configured for the android platform then, proceed with the following apk packaging and build settings a apk packaging set target sdk version to 30 set orientation to full sensor change the maximum supported aspect ratio to 2 8 aspect ratio of galaxy z fold3 in decimal to prevent black bars from appearing on the cover display leave it if your game does not need to use the cover display enable use display cutout region?, to prevents black bars at the edge of the main screen otherwise, leave it unchecked b build disable support opengl es3 1 and enable support vulkan notecurrently, there is a problem with opengl es and the split-screen system being investigated the only option right now is to turn off opengl es and use vulkan instead enable native resize event the resize event of a game when switching between displays is disabled in the engine by default however, this behavior can be easily enabled by setting android enablenativeresizeevent=1 in the deviceprofile currently, the only way to create a profile for foldable devices is by creating a specific rule for each device to save time in this code lab, enable the native resize event for all android devices instead locate and open the tutorial_project > config folder in file explorer inside the config folder, create a new folder named android create a new file called androiddeviceprofiles ini and open this file in a text editor, such as visual studio copy below deviceprofile code to the newly created androiddeviceprofiles ini file [deviceprofiles] +deviceprofilenameandtypes=android,android [android deviceprofile] devicetype=android baseprofilename= +cvars=r mobilecontentscalefactor=1 0 +cvars=slate absoluteindices=1 +cvars=r vulkan delayacquirebackbuffer=2 +cvars=r vulkan robustbufferaccess=1 +cvars=r vulkan descriptorsetlayoutmode=2 ; don't enable vulkan by default specific device profiles can set this cvar to 0 to enable vulkan +cvars=r android disablevulkansupport=1 +cvars=r android disablevulkansm5support=1 ; pf_b8g8r8a8 +cvars=r defaultbackbufferpixelformat=0 +cvars=android enablenativeresizeevent=1 ; previewallowlistcvars and previewdenylistcvars are arrays of cvars that are included or excluded from being applied in mobile preview ; if any previewallowlistcvars is set, cvars are denied by default previewallowlistcvars=none this is a copy of the default android deviceprofile from the existing basedeviceprofiles ini file but with the enabled nativeresizeevent console variable cvars notethis step is not required when you only want to implement flex mode yet, it's recommended, to allow applications to run seamlessly from main to cover display without stretching and squashing the game, by enabling the nativeresizeevent create a new plugin and import the foldablehelper foldablehelper is a java file that you can use in different projects it provides an interface to the android jetpack windowmanager library, enabling application developers to support new device form factors and multi-window environments before proceeding, read how to use jetpack windowmanager in android game dev and learn the details of how foldablehelper uses windowmanager library to retrieve information about the folded state of the device flat for normal mode and half-opened for flex mode , window size, and orientation of the fold on the screen download the foldablehelper java file here foldablehelper java 5 64 kb to import the foldablehelper java file to the project, follow the steps below go to edit > plugins in the unreal editor click the new plugin button and select blank to create a blank plugin in the name field, type foldables_tutorial and click the create plugin button in file explorer, locate and open tutorial_project > plugins folder go to plugins > foldables_tutorial > source> foldables_tutorial > private and create a new folder called java copy the foldablehelper java file into java folder open the tutorial_project sln file in visual studio in the same private folder path, add a new filter called java right-click on the java filter and click add > existing item locate the foldablehelper java file, then click add to include this java file in the build modify java activity to use foldablehelper unreal plugin language upl is a simple xml-based language created by epic games for manipulating xml and returning strings using upl, you can utilize the foldablehelper java file by modifying the java activity and related gradle files as follows in visual studio, right-click on source > foldables_tutorial folder, then click add > new item > web > xml file xml create an xml file called foldables_tutorial_upl xml ensure that the file location is correct before clicking add in the newly created xml file, include the foldablehelper java file in the build by copying the java folder to the build directory <root xmlns android="http //schemas android com/apk/res/android"> <prebuildcopies> <copydir src="$s plugindir /private/java" dst="$s builddir /src/com/samsung/android/gamedev/foldable" /> </prebuildcopies> set up the gradle dependencies in the build gradle file by adding the following in the xml file <buildgradleadditions> <insert> dependencies { implementation filetree dir 'libs', include ['* jar'] implementation "org jetbrains kotlin kotlin-stdlib-jdk8 1 6 0" implementation "androidx core core 1 7 0" implementation "androidx core core-ktx 1 7 0" implementation "androidx appcompat appcompat 1 4 0" implementation "androidx window window 1 0 0" implementation "androidx window window-java 1 0 0" } android{ compileoptions{ sourcecompatibility javaversion version_1_8 targetcompatibility javaversion version_1_8 } } </insert> </buildgradleadditions> next, modify the gameactivity <gameactivityimportadditions> <insert> <!-- package name of foldablehelper --> import com samsung android gamedev foldable foldablehelper; </insert> </gameactivityimportadditions> <gameactivityoncreateadditions> <insert> foldablehelper init this ; </insert> </gameactivityoncreateadditions> <gameactivityonstartadditions> <insert> foldablehelper start this ; </insert> </gameactivityonstartadditions> <gameactivityonstopadditions> <insert> foldablehelper stop ; </insert> </gameactivityonstopadditions> </root> gameactivityimportadditions adds the com samsung android gamedev foldable foldablehelper into the gameactivity with the existing imports gameactivityoncreateadditions adds the code to the oncreate method inside the gameactivity gameactivityonstartadditions adds the code to the onstart method inside the gameactivity gameactivityonstopadditions adds the code to the onstop method inside the gameactivity save the xml file then, ensure that the engine uses the upl file by modifying the foldables_tutorial build cs script, located in the same folder as the foldables_tutorial_upl xml file after the dynamicallyloadedmodulenames addrange call, add the following if target platform == unrealtargetplatform android { additionalpropertiesforreceipt add "androidplugin", moduledirectory + "\\foldables_tutorial_upl xml" ; } this means that the game engine will use the upl file if the platform is android otherwise, the foldablehelper won’t work implement a storage struct the next thing to implement is a struct, the native version of java’s foldablelayoutinfo class to store the data retrieved from the java code using a struct, do the following in content browser of unreal editor, right-click on c++ classes > add/import content then, click new c++ class select none for the parent class and click next name the new class as foldablelayoutinfo assign it to the foldables_tutorial plugin then, click create class delete the created foldablelayoutinfo cpp file and only keep its header file in the header file called foldablelayoutinfo h, set up a struct to store all needed data from the windowmanager #pragma once #include "core h" enum efoldstate { undefined_state, flat, half_opened }; enum efoldorientation { undefined_orientation, horizontal, vertical }; enum efoldocclusiontype { undefined_occlusion, none, full }; struct ffoldablelayoutinfo { efoldstate state; efoldorientation orientation; efoldocclusiontype occlusiontype; fvector4 foldbounds; fvector4 currentmetrics; fvector4 maxmetrics; bool isseparating; ffoldablelayoutinfo state efoldstate undefined_state , orientation efoldorientation undefined_orientation , occlusiontype efoldocclusiontype undefined_occlusion , foldbounds -1, -1, -1, -1 , currentmetrics -1, -1, -1, -1 , maxmetrics -1, -1, -1, -1 , isseparating false { } }; implement jni code to implement jni, create a new c++ class with no parent and name it foldables_helper assign the class to the same plugin, then modify the c++ header and source files as follows in the created header file foldables_helper h , include foldablelayoutinfo h #include "foldablelayoutinfo h" then, declare a multicast_delegate to serve as a listener for passing the data from the java implementation to the rest of the engine declare_multicast_delegate_oneparam fonlayoutchangeddelegate, ffoldablelayoutinfo ; lastly, set up the methods and member variables class foldables_tutorial_api ffoldables_helper { public static void init ; static bool haslistener; static fonlayoutchangeddelegate onlayoutchanged; }; moving to the source file foldables_helper cpp , set up the definitions for the methods and member variables created in the header file bool ffoldables_helper haslistener = false; fonlayoutchangeddelegate ffoldables_helper onlayoutchanged; void ffoldables_helper init { haslistener = true; } now, in the same source file, create the native version of the onlayoutchanged function created in the foldablehelper java file since the java onlayoutchanged function only works on android, surround the function with an #if directive to ensure that it compiles only on android #if platform_android #endif within this directive, copy the code below to use the jni definition of the java onlayoutchanged function extern "c" jniexport void jnicall java_com_samsung_android_gamedev_foldable_foldablehelper_onlayoutchanged jnienv * env, jclass clazz, jobject jfoldablelayoutinfo { create the ffoldablelayoutinfo to store the data retrieved from java ffoldablelayoutinfo result; retrieve the field ids of the foldablelayoutinfo and rect objects created in the java file //java foldablelayoutinfo field ids jclass jfoldablelayoutinfocls = env->getobjectclass jfoldablelayoutinfo ; jfieldid currentmetricsid = env->getfieldid jfoldablelayoutinfocls, "currentmetrics", "landroid/graphics/rect;" ; jfieldid maxmetricsid = env->getfieldid jfoldablelayoutinfocls, "maxmetrics", "landroid/graphics/rect;" ; jfieldid hingeorientationid = env->getfieldid jfoldablelayoutinfocls, "hingeorientation", "i" ; jfieldid stateid = env->getfieldid jfoldablelayoutinfocls, "state", "i" ; jfieldid occlusiontypeid = env->getfieldid jfoldablelayoutinfocls, "occlusiontype", "i" ; jfieldid isseparatingid = env->getfieldid jfoldablelayoutinfocls, "isseparating", "z" ; jfieldid boundsid = env->getfieldid jfoldablelayoutinfocls, "bounds", "landroid/graphics/rect;" ; jobject currentmetricsrect = env->getobjectfield jfoldablelayoutinfo, currentmetricsid ; //java rect object field ids jclass rectcls = env->getobjectclass currentmetricsrect ; jfieldid leftid = env->getfieldid rectcls, "left", "i" ; jfieldid topid = env->getfieldid rectcls, "top", "i" ; jfieldid rightid = env->getfieldid rectcls, "right", "i" ; jfieldid bottomid = env->getfieldid rectcls, "bottom", "i" ; retrieve the current windowmetrics and store it in the ffoldablelayoutinfo as an fintvector4 // currentmetrics int left = env->getintfield currentmetricsrect, leftid ; int top = env->getintfield currentmetricsrect, topid ; int right = env->getintfield currentmetricsrect, rightid ; int bottom = env->getintfield currentmetricsrect, bottomid ; // store currentmetrics rect to fvector4 result currentmetrics = fintvector4{ left, top, right, bottom }; do the same for the other variables in the java foldablelayoutinfo // maxmetrics jobject maxmetricsrect = env->getobjectfield jfoldablelayoutinfo, maxmetricsid ; left = env->getintfield maxmetricsrect, leftid ; top = env->getintfield maxmetricsrect, topid ; right = env->getintfield maxmetricsrect, rightid ; bottom = env->getintfield maxmetricsrect, bottomid ; //store maxmetrics rect to fvector4 result maxmetrics = fintvector4{ left, top, right, bottom }; int hingeorientation = env->getintfield jfoldablelayoutinfo, hingeorientationid ; int state = env->getintfield jfoldablelayoutinfo, stateid ; int occlusiontype = env->getintfield jfoldablelayoutinfo, occlusiontypeid ; bool isseparating = env->getbooleanfield jfoldablelayoutinfo, isseparatingid ; // store the values to an object for unreal result orientation = tenumasbyte<efoldorientation> hingeorientation + 1 ; result state = tenumasbyte<efoldstate> state + 1 ; result occlusiontype = tenumasbyte<efoldocclusiontype> occlusiontype + 1 ; result isseparating = isseparating; // boundsrect jobject boundsrect = env->getobjectfield jfoldablelayoutinfo, boundsid ; left = env->getintfield boundsrect, leftid ; top = env->getintfield boundsrect, topid ; right = env->getintfield boundsrect, rightid ; bottom = env->getintfield boundsrect, bottomid ; // store maxmetrics rect to fvector4 result foldbounds = fintvector4{ left, top, right, bottom }; broadcast the result via the onlayoutchanged delegate for use in the engine if ffoldables_helper haslistener { ue_log logtemp, warning, text "broadcast" ; ffoldables_helper onlayoutchanged broadcast result ; } } create a player controller and two ui states this section focuses on adding a player controller and creating two user interface ui states for flat and flex modes these objects are needed for the flex mode logic implementation following are the steps to add a player controller and create two ui states add a new player controller blueprint in content browser, go to content > thirdpersoncpp and right-click on blueprints > add/import content > blueprint class pick player controller as its parent class rename it as flexplayercontroller notethe flexplayercontroller added is generic and can be replaced by your custom player controller in an actual project add a new c++ class with actor component as its parent class name it as foldables_manager and assign it to the foldables_tutorial plugin click the create class button open the flexplayercontroller blueprint by double-clicking it click open full blueprint editor attach the actor component to the flexplayercontroller in the left pane, click add component, then find and select the foldables_manager next, create a pair of userwidget classes for the ui layouts needed flat mode ui for the full screen or normal mode; and flex mode ui for split-screen in add c++ class window, select the show all classes checkbox find and pick userwidget as the parent class then, click next name the new user widget as flatui and attach it to the plugin click next repeat the process but name the new user widget as flexui you might get an error when trying to compile stating that the userwidget is an undeclared symbol to fix this, open the foldables_tutorial build cs file, and in the publicdependencymodulenames addrange call, add "inputcore" and "umg" to the list create a pair of blueprints made from subclasses of these two user widgets right-click on content and create a new folder called foldui inside the newly created folder, right-click to add a new blueprint class in all classes, choose flatui and click the select button rename the blueprint as bp_flatui in the same folder, repeat the process but choose the flexui class and rename the blueprint as bp_flexui double-click on bp_flatui and bp_flexui, then design your two uis like below to visualize switching between flat and flex mode flat ui flex ui notethis code lab activity does not cover the steps on how to create or design ui if you want to learn about how to create your own game design in unreal engine 4, refer to unreal motion graphics ui designer guide implement the flex mode logic after creating the flexplayercontroller and the two ui states bp_flatui and bp_flexui , you can now implement flex mode logic in the foldables_manager open the foldables_manager h and include the necessary c++ header files #pragma once #include "coreminimal h" #include "components/actorcomponent h" #include "engine h" #include "flatui h" #include "flexui h" #include "foldables_helper h" #include "foldables_manager generated h" remove the line below to save a little bit of performance as this component doesn't need to tick public // called every frame virtual void tickcomponent float deltatime, eleveltick ticktype, factorcomponenttickfunction* thistickfunction override; set up the functions needed in foldables_manager the constructor, a function to create the ui widgets the implementation of onlayoutchanged delegate public // sets default values for this component's properties ufoldables_manager ; void createwidgets ; protected // called when the game starts virtual void beginplay override; protected void onlayoutchanged ffoldablelayoutinfo foldablelayoutinfo ; then, set up the variables needed references to the flat and flex ui classes references to the flat and flex ui objects mark the pointers as uproperty to ensure that garbage collection does not delete the objects they point to tsubclassof<uuserwidget> flatuiclass; tsubclassof<uuserwidget> flexuiclass; uproperty class uflatui* flatui; uproperty class uflexui* flexui; finally, define a new private function restoreflatmode , to disable flex mode and return to normal mode private void restoreflatmode ; moving over to foldables_manager cpp, implement the constructor using the constructorhelpers, find the ui classes and set the variables to store these classes also, set the bcanevertick to false to prevent the component from ticking and remove the code block of tickcomponent function // sets default values for this component's properties ufoldables_manager ufoldables_manager { primarycomponenttick bcanevertick = false; static constructorhelpers fclassfinder<uflatui> flatuibpclass text "/game/foldui/bp_flatui" ; static constructorhelpers fclassfinder<uflexui> flexuibpclass text "/game/foldui/bp_flexui" ; if flatuibpclass succeeded { flatuiclass = flatuibpclass class; } if flexuibpclass succeeded { flexuiclass = flexuibpclass class; } } next, set up the beginplay function to link the delegate to the onlayoutchanged function, to initialize the foldables_helper, and to create the widgets ready for use in the first frame // called when the game starts void ufoldables_manager beginplay { super beginplay ; ffoldables_helper onlayoutchanged adduobject this, &ufoldables_manager onlayoutchanged ; ffoldables_helper init ; createwidgets ; } set up the createwidgets function to create the widgets using the ui classes acquired in the constructor add the flatui widget to the viewport, assuming the app opens in normal mode until it receives the foldablelayoutinfo void ufoldables_manager createwidgets { flatui = createwidget<uflatui> aplayercontroller* getowner , flatuiclass, fname text "flatui" ; flexui = createwidget<uflexui> aplayercontroller* getowner , flexuiclass, fname text "flexui" ; flatui->addtoviewport ; } afterward, create the onlayoutchanged function, which will be called via a delegate inside this function, check whether the device’s folded state is half_opened if so, check whether the orientation of the fold is horizontal void ufoldables_manager onlayoutchanged ffoldablelayoutinfo foldablelayoutinfo { //if state is now flex if foldablelayoutinfo state == efoldstate half_opened { if foldablelayoutinfo orientation == efoldorientation horizontal { notefor this third person template, splitting the screen vertically isn’t ideal from a user experience ux point of view for this code lab activity, split the screen only on the horizontal fold top and bottom screen if you want it vertically, you need to use the same principle in the next step but for the x-axis instead of the y-axis you must also ensure that you have a flex ui object for the vertical layout if the device is both on flex mode and horizontal fold, change the viewport to only render on the top screen using the normalized position of the folding feature then in an asynctask on the game thread, disable the flatui and enable the flexui however, if the device is on normal mode, then return to flat ui using restoreflatmode function //horizontal split float foldratio = float foldablelayoutinfo foldbounds y / foldablelayoutinfo currentmetrics w - foldablelayoutinfo currentmetrics y ; gengine->gameviewport->splitscreeninfo[0] playerdata[0] sizex = 1 0f; gengine->gameviewport->splitscreeninfo[0] playerdata[0] sizey = foldratio; asynctask enamedthreads gamethread, [=] { if flatui->isinviewport { flatui->removefromparent ; } if !flexui->isinviewport { flexui->addtoviewport 0 ; } } ; } else { restoreflatmode ; } } else { restoreflatmode ; } } reverse the flex mode implementation logic to create the restoreflatmode function by setting the viewport to fill the screen, then disable the flexui and enable the flatui void ufoldables_manager restoreflatmode { gengine->gameviewport->splitscreeninfo[0] playerdata[0] sizex = 1 0f; gengine->gameviewport->splitscreeninfo[0] playerdata[0] sizey = 1 0f; asynctask enamedthreads gamethread, [=] { if !flatui->isinviewport { flatui->addtoviewport 0 ; } if flexui->isinviewport { flexui->removefromparent ; } } ; } set up a game mode and attach the flexplayercontroller the game mode defines the game rules, scoring, and any game-specific behavior set up the game mode in unreal editor by creating a blueprint class in the content > thirdpersoncpp > blueprints folder pick game mode base as the parent class and rename it as flexgamemode double-click on flexgamemode in the drop-down menu next to player controller class, choose the flexplayercontroller lastly, go to edit > project settings > project > maps & modes and select flexgamemode as the default gamemode build and run the app go to edit > package project > android to build the apk ensure that the android development environment for unreal is already set up to your computer noteif the build failed due to corrupted build tools, consider downgrading the version to 30 or lower using the sdk manager or, simply rename d8 bat to the name of the missing file dx bat in sdk path > build-tools > version number directory and, in lib folder of the same directory, rename d8 jar to dx jar after packaging your android project, run the game app on a foldable galaxy device and see how the ui switches from normal to flex mode if you don’t have any physical device, you can also test it on a remote test lab device tipwatch this tutorial video and know how to easily test your app via remote test lab you're done! congratulations! you have successfully achieved the goal of this code lab now, you can implement flex mode in your unreal engine game app by yourself! if you're having trouble, you may download this file flex mode on unreal complete code 20 16 mb to learn more, visit www developer samsung com/galaxy-z www developer samsung com/galaxy-gamedev
Learn Code Lab
codelaboptimize game performance with adaptive performance in unity objective learn how to optimize the performance of a demo game on samsung galaxy devices using the adaptive performance in unity the adaptive performance package provides you with tools to properly adjust you’re game and improve its overall game performance overview galaxy gamesdk delivers an interface between game application and device which helps developers optimize their games integrating unity adaptive performance with galaxy gamesdk allows unity developers to use this feature on unity editor within unity package manager and also customize their game contents by c# scripting game performance and quality settings can be adjusted in real time by identifying device performance status and heat trends moreover, using a set of simple ui controls, you can scale the quality of the game to match the device platform the latest version of adaptive performance, now uses new android apis that gather information from samsung hardware to provide more detailed insights into the device's thermal components and cpu optimization there are two providers for adaptive performance the samsung provider 5 0 utilizes apis from the gamesdk, which is supported from samsung galaxy s10 or note10 devices until newer models on the other hand, the android provider 1 2 uses the android dynamic performance framework adpf apis and is supported on devices running android 12 or higher this code lab focuses on using the samsung provider of adaptive performance thermal throttling mobile devices lack active cooling systems, causing temperatures to rise this triggers a warning to the unity subsystems, which lowers hardware demand to control heat and avoid performance degradation the ideal goal is to make performance stable with low temperature adaptive performance, primarily for performance and quality balance management, can help achieve this thermal warning the warning system implemented in gamesdk can trigger both internal unity systems and developer-defined behavior, such as disabling custom scripts and shaders quality settings it also provides you with the option to adjust the quality of the game to maintain stable performance at different warning levels you can scale the quality of your game in real time to meet the desired performance this includes changes in level of detail, animation, physics, and visual effects scalers with adaptive performance enabled, the game's fps becomes more stable and consistently higher over time this is because the game adapts its contents based on thermal warnings provided by samsung's thermal callback system the adaptive performance in unity provides developers with scalers that affect various aspects of the game frame rate resolution batching level of detail lod lookup texture lut multisample anti-aliasing msaa shadow cascade shadow distance shadow map resolution shadow quality sorting transparency view distance physics decals layer culling these general scalers can be used to scale the content based on your settings in the editor however, you may also create custom scalers that integrate with your own systems for instance, your own scalers can disable cpu-expensive scripts from running when thermal warnings are reached the latest version of adaptive performance, v5 0, includes new additions to the scalers decal scaler changes the draw distance of decals it controls how far a decal can be before not being rendered layer culling scaler adjusts the distance that expensive layers, such as transparency or water, when they start being culled it’s a useful scaler for scenes with more expensive shader calculations in every frame, unity calculates how all the physics in a level interacts with everything else, such as when the ball is dropping to the floor physics scaler adjusts the frequency at which this calculation is performed a lower frequency means fewer cpu calculations per second set up your environment you will need the following unity editor version 2022 3 visual studio or any source code editor supported samsung galaxy device remote test lab if physical device is not available requirements samsung account java runtime environment jre 7 or later with java web start internet environment where port 2600 is available sample code here is a sample project for you to start coding in this code lab download it and start your learning experience! adaptive performance sample code 903 96 mb demo game the sample project contains a demo game named boat attack it is an open-source demo game provided by unity it has the following features triangles 800,000 vertices 771,000 shadow casters 133 start your project after downloading the sample project, follow the steps to open your project launch the unity hub click projects > open after locating the unzipped project folder, you can open it in unity editor it initially downloads the needed resources for your project open benchmark_island-flythrough scene found under assets notethe project was tested in unity 2022 3 it is recommended to use this version in this code lab set up adaptive performance components in window > package manager > adaptive performance, you can check if the adaptive performance is already included in the project go to edit > project settings > adaptive performance enable the initialize adaptive performance on startup and select samsung android provider enable the scalers by going to adaptive performance > samsung android > indexer settings check the scaler settings and just use the default values add adaptive performance script to your project you are going to use a script that contains examples of the adaptive performance api code it gives you access to the frame time information, thermal information, and cpu/gpu bottlenecks this script adjusts the performance based on the device's thermal state, allowing longer game time by reducing in-game demands download the adaptive performance script adaptiveperformanceconroller cs 6 15 kb simply drag and drop the script into assets folder create a new object and attach the script to the object change the frame rate based on thermal warnings get to know about thermal warnings throttling warnings allow you to know when your game is about to be forcibly throttled and have sections of lag and lowered frame rate adaptive performance provides these thermal alerts that allow you to take control and adjust settings before the performance downgrades check the registered event handler to trigger thermal status ithermalstatus thermalstatus thermalevent then, check thermalmetrics information in the handler name description value nowarning no warning is the normal warning level during standard thermal state 0 throttlingimminent if throttling is imminent, the application should perform adjustments to avoid thermal throttling 1 throttling if the application is in the throttling state, it should make adjustments to go back to normal temperature levels 2 temperaturelevel 0 0 ~ 1 0 current normalized temperature level in the range of [0, 1] a value of 0 means standard operation temperature and the device is not in a throttling state a value of 1 means that the maximum temperature of the device is reached and the device is going into or is already in throttling state temperaturetrend -1 0 ~ 1 0 current normalized temperature trend in the range of [-1, 1] a value of 1 describes a rapid increase in temperature a value of 0 describes a constant temperature a value of -1 describes a rapid decrease in temperature it takes at least 10s until the temperature trend may reflect any changes adjust the frame rate in the adaptiveperformancecontroller cs, the following code is responsible for changing the frame rate depending on the current thermal alert void onthermalevent thermalmetrics ev { switch ev warninglevel { case warninglevel nowarning application targetframerate = 30; break; case warninglevel throttlingimminent application targetframerate = 25; break; case warninglevel throttling application targetframerate = 15; break; } } change the quality settings the performance bottleneck api informs you via an enum value if there is a bottleneck so you can adjust the workload iadaptiveperformance performancestatus performancemetrics performancebottleneck namespace unityengine adaptiveperformance { public enum performancebottleneck { unknown = 0, cpu = 1, gpu = 2, targetframerate = 3 } } in the adaptiveperformancecontroller cs script, the code below is responsible for controlling the lod of the models depending on the performance bottleneck a model with multiple lod is a prime example of a quality setting that can heavily affect the games performance lowering it lessens the load on the gpu, frees up resources, and eventually prevents thermal throttling change the quality setting by adjusting lod in real time by using the performancebottleneck api switch ap performancestatus performancemetrics performancebottleneck // iadaptiveperformance performancestatus performancemetrics performancebottleneck { case performancebottleneck gpu debug logformat "[adp] performancebottleneck gpu " ; lowerlod ; break; case performancebottleneck cpu debug logformat "[adp] performancebottleneck cpu " ; break; case performancebottleneck targetframerate debug logformat "[adp] performancebottleneck targetframerate " ; break; case performancebottleneck unknown debug logformat "[adp] performancebottleneck unknown" ; break; } create a custom scaler to create custom scalers, you need to create a new class that inherits from adaptiveperformancescaler the adaptive performance package includes this class that can be added to the adaptive performance framework, which adjusts quality settings based on unity's thermal settings download this custom scaler to control the texture quality of the demo game texturescaler cs 1 17 kb simply drag and drop the downloaded file into the project test using device simulator in unity the device simulator in unity allows you to test out adaptive performance functionality without a physical mobile device go to window > general > device simulator go to edit > project settings > adaptive performance enable the initialize adaptive performance on startup and select device simulator provider in the device simulator, you can try to send thermal warnings and create artificial bottlenecks to test different behaviors of the demo game the visual scripts display the scalers available and show if it is enabled enabling a specific scaler means that the adaptive performance w you can override the scalers to test their impact on the demo game's performance and scene some scalers may not affect the scene but may improve the performance in the long run build and launch the apk go to file > build settings connect your galaxy device enable development build and select scripts only build option make sure that the autoconnect profiler is enabled to check the profiler in unity and measure the performance in build to device, click the patch button to install or update the apk in your device test using unity profiler unity has also introduced a new module in its profiler that allows you to monitor the scalers changes and extract frame time information to your editor the profiler allows you to get real-time information from the adaptive performance plugin navigate to windows > analysis > profiler set the play mode to your connected galaxy device once connected, you can analyze the frame time stats and check the state of the scalers during runtime scalers in this profiler are reacting to the thermal trend and are being raised or lowered in response to the thermal warning observe the scalers when enabled or disabled texture scaler the texture scaler is the custom script to lower the texture quality based on thermal levels when enabled and maxed out, the texture fidelity has been lowered this lowers the gpu load and memory usage lod scaler you may notice a subtle change in the appearance of the rocks, trees, and umbrella models this is due to the adaptation of the lod bias that determines which version of the models to use as the thermal levels rise, lower poly models are selected to reduce the number of triangles rendered this reduces the gpu load and minimizes thermal build-up shadow map resolution shadow map resolution creates a blurring effect on the shadows which incidentally lowers the performance load required to render them basically, lower shadow detail means fewer gpu calculations, which lead to less heat build-up check the game performance using gpuwatch gpuwatch is a profiling tool for observing gpu activity in your app the following are the common information shown by the gpuwatch fps counters current average cpu and gpu load cpu load gpu load it is very helpful in profiling your game during the post-development stage so you can further optimize to enable gpuwatch on your galaxy device you can easily reposition the gpuwatch widgets on the screen by enabling unlock widgets under the notification menu of gpuwatch you’re done! congratulations! you have successfully achieved the goal of this code lab now, you can improve and optimize your android game on samsung galaxy devices using adaptive performance in unity by learning about scalers, thermal warnings, and bottleneck apis the performance of your mobile games can be pushed further by utilizing these tools if you face any trouble, you may download this file adaptive performance complete project 1 06 gb to learn more, visit developer samsung com/galaxy-gamedev
Learn Code Lab
codelabtransfer heart rate data from galaxy watch to a mobile device objective create a health app for galaxy watch, operating on wear os powered by samsung, to measure heart rate and inter-beat interval ibi , send data to a paired android phone, and create an android application for receiving data sent from a paired galaxy watch overview with this code lab, you can measure various health data using samsung health sensor sdk and send it to a paired android mobile device for further processing samsung health sensor sdk tracks various health data, but it cannot save or send collected results meanwhile, wearable data layer allows you to synchronize data from your galaxy watch to an android mobile device using a paired mobile device allows the data to be more organized by taking advantage of a bigger screen and better performance see samsung health sensor sdk descriptions for detailed information set up your environment you will need the following galaxy watch4 or newer android mobile device android studio latest version recommended java se development kit jdk 17 or later sample code here is a sample code for you to start coding in this code lab download it and start your learning experience! heart rate data transfer sample code 213 7 kb connect your galaxy watch to wi-fi go to settings > connection > wi-fi and make sure that the wi-fi is enabled from the list of available wi-fi networks, choose and connect to the same one as your pc turn on developer mode and adjust its settings on your watch, go to settings > about watch > software and tap on software version 5 times upon successful activation of developer mode, a toast message will display as on the image below afterwards, developer options will be visible under settings tap developer options and enable the following options adb debugging in developer options find wireless debugging turn on wireless debugging check always allow on this network and tap allow go back to developer options and click turn off automatic wi-fi notethere may be differences in settings depending on your one ui version connect your galaxy watch to android studio go to settings > developer options > wireless debugging and choose pair new device take note of the wi-fi pairing code, ip address & port in android studio, go to terminal and type adb pair <ip address> <port> <wi-fi pairing code> when prompted, tap always allow from this computer to allow debugging after successfully pairing, type adb connect <ip address of your watch> <port> upon successful connection, you will see the following message in the terminal connected to <ip address of your watch> now, you can run the app directly on your watch turn on developer mode for health platform to use the app, you need to enable developer mode in the health platform on your watch go to settings > apps > health platform quickly tap health platform title for 10 times this enables developer mode and displays [dev mode] below the title to stop using developer mode, quickly tap health platform title for 10 times to disable it set up your android device click on the following links to setup your android device enable developer options run apps on a hardware device connect the galaxy watch with you samsung mobile phone start your project in android studio, click open to open an existing project locate the downloaded android project hrdatatransfer-code-lab from the directory and click ok you should see both devices and applications available in android studio as in the screenshots below initiate heart rate tracking noteyou may refer to this blog post for more detailed analysis of the heart rate tracking using samsung health sensor sdk first, you need to connect to the healthtrackingservice to do that create connectionlistener, create healthtrackingservice object by invoking healthtrackingservice connectionlistener, context invoke healthtrackingservice connectservice when connected to the health tracking service, check the tracking capability the available trackers may vary depending on samsung health sensor sdk, health platform versions or watch hardware version use the gettrackingcapability function of the healthtrackingservice object obtain heart rate tracker object using the function healthtrackingservice gethealthtracker healthtrackertype heart_rate_continuous define event listener healthtracker trackereventlistener, where the heart rate values will be collected start tracking the tracker starts collecting heart rate data when healthtracker seteventlistener updatelistener is invoked, using the event listener collect heart data from the watch the updatelistener collects datapoint instances from the watch, which contains a collection of valuekey objects those objects contain heart rate, ibi values, and ibi statuses there's always one value for heart rate while the number of ibi values vary from 0-4 both ibi value and ibi status lists have the same size go to wear > java > data > com samsung health hrdatatransfer > data under ibidataparsing kt, provide the implementation for the function below /******************************************************************************* * [practice 1] get list of valid inter-beat interval values from a datapoint * - return arraylist<int> of valid ibi values validibilist * - if no ibi value is valid, return an empty arraylist * * var ibivalues is a list representing ibivalues up to 4 * var ibistatuses is a list of their statuses has the same size as ibivalues ------------------------------------------------------------------------------- * - hints * use local function isibivalid status, value to check validity of ibi * ****************************************************************************/ fun getvalidibilist datapoint datapoint arraylist<int> { val ibivalues = datapoint getvalue valuekey heartrateset ibi_list val ibistatuses = datapoint getvalue valuekey heartrateset ibi_status_list val validibilist = arraylist<int> //todo 1 return validibilist } check data sending capabilities for the watch once the heart rate tracker can collect data, set up the wearable data layer so it can send data to a paired android mobile device wearable data layer api provides data synchronization between wear os and android devices noteto know more about wearable data layer api, go here to determine if a remote mobile device is available, the wearable data layer api uses concept of capabilities not to be confused with samsung health sensor sdk’s tracking capabilities, providing information about available tracker types using the wearable data layer's capabilityclient, you can get information about nodes remote devices being able to consume messages from the watch go to wear > java > com samsung health hrdatatransfer > data in capabilityrepositoryimpl kt, and fill in the function below the purpose of this part is to filter all capabilities represented by allcapabilities argument by capability argument and return the set of nodes set<node> having this capability later on, we need those nodes to send the message to them /************************************************************************************** * [practice 2] check capabilities for reachable remote nodes devices * - return a set of node objects out of all capabilities represented by 2nd function * argument, having the capability represented by 1st function argument * - return empty set if no node has the capability -------------------------------------------------------------------------------------- * - hints * you might want to use filtervalues function on the given allcapabilities map * ***********************************************************************************/ override suspend fun getnodesforcapability capability string, allcapabilities map<node, set<string>> set<node> { //todo 2 } encode message for the watch before sending the results of the heart rate and ibi to the paired mobile device, you need to encode the message into a string for sending data to the paired mobile device we are using wearable data layer api’s messageclient object and its function sendmessage string nodeid, string path, byte[] message go to wear > java > com samsung health hrdatatransfer > domain in sendmessageusecase kt, fill in the function below and use json format to encode the list of results arraylist<trackeddata> into a string /*********************************************************************** * [practice 3] - encode heart rate & inter-beat interval into string * - encode function argument trackeddata into json format * - return the encoded string ----------------------------------------------------------------------- * - hint * use json encodetostring function **********************************************************************/ fun encodemessage trackeddata arraylist<trackeddata> string { //todo 3 } notetrackeddata is an object, containing data received from heart rate tracker’s single datapoint object @serializable data class trackeddata var hr int, var ibi arraylist<int> = arraylist run unit tests for your convenience, you will find an additional unit tests package this will let you verify your code changes even without using a physical watch or mobile device see the instruction below on how to run unit tests right click on com samsung health hrdatatransfer test , and execute run 'tests in 'com samsung health hrdatatransfer" command if you have completed all the tasks correctly, you will see all the unit tests pass successfully run the app after building the apks, you can run the applications on your watch to measure heart rate and ibi values, and on your mobile device to collect the data from your watch once the app starts, allow the app to receive data from the body sensors afterwards, it shows the application's main screen to get the heart rate and ibi values, tap the start button tap the send button to send the data to your mobile device notethe watch keeps last ~40 values of heart rate and ibi you’re done! congratulations! you have successfully achieved the goal of this code lab now, you can create a health app on a watch to measure heart rate and ibi, and develop a mobile app that receives that health data! if you face any trouble, you may download this file heart rate data transfer complete code 213 9 kb to learn more about samsung health, visit developer samsung com/health
Learn Code Lab
codelabestablish a health research system using samsung health research stack objective learn how to create a health research system that collects data from mobile and wearable devices and visualizes the collected data in a web portal using samsung health research stack overview samsung health research stack is an open-source toolset that helps collect and analyze data from devices in android and wear os environments it provides tools and infrastructure for developing and deploying health studies, ranging from medical research to clinician services and more the framework consists of four components backend services - offers api endpoints to access and interact with a robust data engine web portal - a customizable interface for creating surveys, managing team members, tracking subjects, and analyzing data app sdk - an sdk for building android and wear os apps capable of collecting data from wearable devices starter app - a health research app with mobile and wearable versions created using basic features provided by the app sdk for detailed information, see samsung health research stack set up your environment you will need the following android studio latest version recommended samsung galaxy mobile device with updated health connect app and samsung health app installed samsung galaxy watch synced to the mobile device docker desktop sample code to start your learning experience, download the project files of the samsung health research stack starter mobile and wearable app notedepending on your preferred development style, you can either download or clone the repository of the project files to your local computer feel free to edit and customize this project for your own purposes, including this code lab activity set up your galaxy mobile and watch device connect your galaxy mobile device to your pc and enable adb debugging next, connect your galaxy watch to android studio over wi-fi lastly, enable the developer mode of the health platform app on your watch by following these steps a go to settings b tap on apps c select health platform d quickly tap on health platform several times until [dev mode] appears notethe samsung health developer mode is only intended for testing or debugging your application it is not for application users deploy the backend and web portal locally download the backend-config-files zip file and unzip it the folder contains the docker-compose yaml file open the terminal window of docker desktop in the terminal, go to the directory where your docker-compose yaml file is located, and run the following command $ docker compose up –d the script deploys the backend and the web portal to your local computer, and it includes 6 services redis - redis watcher for the backend casbin service mongo - for saving data from the backend postgres - for supertokens database and the backend casbin database supertokens - for username and password authentication backend - backend for the samsung health research stack portal - web portal for the samsung health research stack you can change the port number, username, and password for each database with the default setting, you can access the web portal in your browser at localhost 80 the script file has simple settings for easy deployment to add more features, you can change the environment in the docker-compose yaml file's services > backend > environment part set the aws environment variables optional you can enable uploading and downloading features by setting the following aws environment variables aws_bucket_name aws_region aws_access_key_id aws_secret_access_key aws_session_token you can follow the instructions in using the default credential provider chain for setting up aws credentials set google openid connect optional to enable google openid connect oidc login, you can set the following environment variables oidc_google_oauth2_url default "https //oauth2 googleapis com" oidc_google_client_id oidc_google_client_secret oidc_google_redirect_uri you can refer to openid connect for more information about setting google oidc create a new study the health research system has two user groups investigators - conduct research studies and use the web portal for managing studies and analyzing data subjects - participate in studies by answering surveys and performing tasks through the mobile app, as well as collecting health data from wearable apps to start your research study, as an investigator, follow the steps below create an account and sign in to the web portal page you deployed fill out the form with your information on the study collection page, click the create study button noteall enrolled investigators can create a study the creator becomes the study admin in the basic info tab, input the details of the study 5 for the study scope, choose public noteyou can set the study scope as either public or private if you choose private, you need to input a participation code that subjects must enter into the mobile app to join however, for the ease of testing in this code lab, it is recommended to set the scope as public for the study requirements field, you can input any text and click next go to participation requirements tab and select the data types to collect in wear category for this code lab, choose wear accelerometer wear ecg wear heart rate the logo and title of the created study show on the study collection page connect the mobile app to backend system to connect the starter mobile app to the backend system, follow these steps noteto ensure that the galaxy mobile device can connect to the machine where the backend system is deployed, it is recommended to connect both the machine and the mobile device to the same network open the downloaded project file in android studio and go to samples > starter-mobile-app in the local properties file, set the server_address to the ip address of the machine where the backend system is deployed server_address ="input ip address here" tipyou can check your ip address using the command line windows in command prompt, type ipconfig and find the ip address under ipv4 address mac in terminal, type ifconfig and look for the ip address under inet next to en0 next, set the server_port to 50001 if you used the default values in the provided docker-compose yaml file for deployment if not, use the port number you set server_port=50001 set authentication method the app sdk supports three types of authentication methods for registration samsung utilizes samsung account cognito incorporates amazon cognito authentication super-tokens enables anonymous login to allow research participants to register and log in using their personal emails, set the sign_in_mode as super-tokens in the local properties file sign_in_mode="super-tokens" upload wearable data via grpc when synchronizing wearable device data, the app sdk offers two approaches utilizing grpc for high-performance remote procedure calls or synchronization through files each approach has advantages and disadvantages regarding factors such as battery life and server workload however, it is advisable to utilize grpc during local development to configure the mobile application to upload wearable data via grpc rather than files, add the following code in the local properties file enable_upload_wearble_data_by_file=false show the sync button in starter wearable app after configuring the mobile app, modify the wearable app to meet the requirements of your study go to samples > starter-wearable-app and open the local properties file the wearable app features a sync button, which can be displayed or hidden when this button is pressed, it synchronizes the collected data with the backend system instantly to show the sync button, set the value of enable_instant_sync_button as below enable_instant_sync_button=true notethis instant sync feature can negatively affect the battery consumption of both apps, so it is recommended to remove the sync button when you publish your app the samsung health research stack has an optimized data synchronization process that minimizes battery consumption set data measurement parameters you can customize the data collection and storage process of the wearable app by setting the values of the following data measurement parameters passive_data_insert_interval_in_seconds sets the data measurement buffer the buffer saves data in an in-memory database before the interval expires then, at regular intervals, the data from the buffer is stored in persistent memory data_split_interval_in_millis specifies the size of segmented data in persistent memory if these values are not specified, the wearable app uses its default values to verify that the data is being measured and synchronized instantly, you can set the values as follows passive_data_insert_interval_in_seconds=12 data_split_interval_in_millis=30000 run the starter mobile and wearable app after configuring the local properties of both starter apps, build and run your app in android studio by following these steps run the starter mobile app select your mobile app starter-mobile-app from the run configurations menu in the toolbar choose a connected galaxy mobile device as the target device for running the app click run to install the app after installation, clear the app's data run the starter mobile app follow the same steps as for the starter mobile app but select starter-wearable-app instead choose a connected galaxy watch device for running the app allow the app to access physical activity, sensor data, and send notifications when prompted ensure that the galaxy watch is connected with the galaxy mobile device register and join a study since you have set super-tokens as the authentication method, you can now register and log into the app at once open the starter mobile app and sign up with an unregistered email address after logging in and accepting permissions, the app displays the study you created from the web portal tap on the study card to view its details and click join study noteif a study is set to private and you wish to join it, press enter the study code located at the top of the screen and input the assigned participation code in the study code field agree to data collection and terms of research you can see that the sensor data to be collected are dependent upon the selection made in the web portal while creating the study sign and click next to complete the study onboarding process measure and collect health data in the starter wearable app, you can see a list of on-demand measurements that you can contribute to health research for this code lab, choose ecg and click measure follow the onscreen measurement instruction after measuring successfully, scroll to the bottom of the wearable app and press the sync button to synchronize the data with the mobile app in the mobile app, go to data tab, click the more button, and click sync to transfer the collected data to the web portal visualize the collected data in web portal you can display the collected data as a graph in any way you choose for further analysis of the study from the overview page of the study in the web portal, navigate to the dashboard page click on the add chart button provide a title for the chart and select the desired chart type then, edit the chart source choose the database where the data is stored for this code lab, enter the following query to display only the first ten heart rate data from wearheartrate table select * from wearheartrate limit 10 click run query and save select value and timestamp for the value and category columns respectively check the preview of the graph finally, click save to display the graph into the dashboard you're done! congratulations! you have successfully achieved the goal of this code lab now, you can create your own health research system by yourself! to learn more, see samsung health research stack
Learn Developers Podcast
docseason 3, episode 7 previous episode | episode index | next episode this is a transcript of one episode of the samsung developers podcast, hosted by and produced by tony morelan a listing of all podcast transcripts can be found here host tony morelan senior developer evangelist, samsung developers instagram - twitter - linkedin guests guy merin, senior director of engineering, surface duo developer experience, microsoft ade oshineye, senior staff developer advocate, google søren lambæk, developer relations engineer, samsung foldables, games not only do we chat about the emerging trends in the foldable industry but how companies are working together to help developers create for this new and innovative technology listen download to this episode topics covered foldable industry trends growth of foldables target audience making foldables mainstream benefits of the foldable form factor extending a traditional app to a foldable device process for supporting foldables foldable device example apps consumer adoption challenges developer opportunities resources for developers companies working together on foldables helpful links large screen/foldable guidance large screen app quality jetpack windowmanager jetpack slidingpanelayout jetpack windowmanager foldable/dual-screens surface duo layout libraries surface duo android emulator figma - surface duo design kit surface duo blog surface duo twitch surface duo twitter adopting native language discover quality apps on large screens foldables design/development perspectives learn about foldables case studies 5 steps to large screen designing understanding layout code lab testing window size classes jetnews different screen sizes migrate to responsive layouts compose/activity embedding unfolding gaming potential samsung remote test lab samsung developer program website samsung developer program newsletter samsung developer program blog samsung developer program news samsung developer program facebook samsung developer program instagram samsung developer program twitter samsung developer program youtube samsung developer program linkedin tony morelan linkedin guy merin, microsoft, linkedin ade oshineye, google, linkedin søren lambæk, samsung, linkedin transcript note transcripts are provided by an automated service and reviewed by the samsung developers web team inaccuracies from the transcription process do occur, so please refer to the audio if you are in doubt about the transcript tony morelan 00 01 hey, i'm tony morelan and this is the samsung developers podcast, where we chat with innovators using samsung technologies, award winning app developers and designers, as well as insiders working on the latest samsung tools welcome to season three, episode seven recently i hosted a roundtable discussion on developing for foldable devices not only do we chat about the emerging trends in the foldable industry, but how companies are working together to help developers create for this new and innovative technology enjoy today's show, we're doing something pretty special i've got three guests on the podcast all from leading companies in the foldable space i've got guy merin, senior director of engineering on the surface duo developer experience team at microsoft guy merin 00 53 hi tony, good morning great to be here tony morelan 00 55 excellent i've also got ade oshineye, senior staff developer advocate at google ade oshineye 01 00 hi nice to be here tony morelan 01 03 and i've also got søren lambæk, developer relations engineer at samsung søren lambæk 01 09 hello good to be here tony morelan 01 11 this is amazing i've got all of you on the podcast at the same time we actually haven't tried this format before so let's take him for a ride and see how much fun we can have let me start with guy over at microsoft tell me who is guy merin? guy merin 01 25 hey, yeah, hey, folks so i'm guy the journey in microsoft a few years back started that windows went through the windows mobile, because mobile gadgets and devices are really my passion and then the last five or so years, i've been working full time on android, building a couple of software products, and recently the surface duo so this mobile and android is really my passion and i'm really at my dream job now working with developers, you know, reaching out really great on the personal level, i got recently into mountain climbing so just last weekend, we had a big expedition to summit, one of the washington mountains i live in seattle in washington, okay and that was a very, very fun experience that i found a lot of similarities to, you know, projects we have at work, climbing a mountain and summit thing is really a project on its own with preparation and planning and found a lot of interesting similarities tony morelan 02 29 it gives you a lot of time to think also, i'm sure that when you're climbing so are you like with ropes and rappelling or yeah, rope really guy merin 02 38 is, is more snow so it's ropes and ice axes and stuff but oh, gosh tony morelan 02 45 that is great how many feet would you say? was the summit? guy merin 02 50 close to 11,000 tony morelan 02 52 wow, that is absolutely impressive what was your journey to get to the state of washington? were you born there? or is this? the accent i'm picking up? i'm not quite sure is from the northwest? guy merin 03 07 no, no so no, i was born and raised in israel okay and i moved over to washington eight years ago, i've been working at microsoft in israel, actually doing some fun stuff with windows phone in israel and then pretty much my wife wanted to move over to seattle and that that made us take the trip and we love it here tony morelan 03 32 so now let's move over to google tell me who is ade oshineye? ade oshineye 03 38 so i work in android developer relations i've worked all over the different aspects of google over the last 15 years before that was in consultancy, when i'm not at a desk in front of cameras and things i'm out with a camera, taking photos in zurich, where we have really nice mountains that i like to climb them by sitting in a train that just gently takes you to the top and then i also play badminton and play go so between that i'm pretty busy i tony morelan 04 05 wonder if i understand you actually were born and raised in england is that correct? yes ade oshineye 04 09 so i'm an east londoner but now i live in switzerland, which is strange and very different to east london but i also live in the middle of a whole collection of british shops, so that i can get british food very easily really? okay yes tony morelan 04 27 tell me how did you get involved with foldables at google? ade oshineye 04 30 well, let's see well, me specifically, i mean, i started out with the samsung flip and then we've got this planet of surface duo for us as a company, it's more around the whole beat together not the same idea that the point of the entity ecosystem is that all of these oem can try different things users can try different kinds of experiences developer can try to serve all of them and we power all of that with the platform tony morelan 04 57 and from samsung tell me who is søren lambæk? søren lambæk 05 02 hello, i work at samsung as a developer relations engineer and basically, i building relationships between the games industry and samsung there are so many mobile games out there so we were reaching out to them at a technical level and try to help their games to run smooth on certain devices on a more personal level, i am one of those artists that just got obsessed with programming sure so my background is actually a lot of with art, drawing and music and that kind of thing but i just could see, the programming hat was so powerful so i just, i got this obsession is programming tony morelan 05 48 excellent and i know that you guys can't see on the podcast but soren has some beautiful guitars behind him and before we hit the record button, we were all having a nice conversation about music now, i understand you were born in chile, but raised in england that correct søren lambæk 06 04 and so i was born i was born in chile that's correct and i was raised up in denmark, hence my name and my name is danish and okay because then i guess such a small country and at the time, i wanted to do get a career we didn't have any games industry in denmark so i decided i wanted to go to england and when university studying games design, because there was art, but then i realized programming that's where the future is, for me and then so i was one of the only students that went from art to programming is usually the other way around yeah, tony morelan 06 47 so yeah, i would definitely think so so let's talk foldables back in 2019, samsung released the galaxy fold, which was the first foldable device to really hit the mainstream market since then, other companies like microsoft, motorola, huawei, have released foldable devices and in such a short amount of time, we've seen some really great improvements with this technology guy, you've been from microsoft, what are some of the trends that you've noticed in the foldable industry? guy merin 07 17 some of the trends one we're seeing, as you said, more, more oems picking those up? are you seeing more and more companies bringing for the world? and it's really starting to become a commodity but the cool thing about it that each one has their own different angle to it so you know, for the microsoft one, it's, you know, mainly around productivity and two screens, for others is mainly around more real estate or something that is a small form that can then go to, to a bigger form and it's all really about the form factors and the posters that you can really do with it so how does the phone react when it's folded when it's open when it's tilted 90 degrees? and i think we'll see more of those in the future tony morelan 08 07 are they are you seeing different trends for the way developers are designing and building apps? ade oshineye 08 12 so i think we're seeing three main trends one is the oems exploring the space of possible designs, does the device folding fold out full vertically filled horizontally full three times, there's so many different things oems are doing second stylus is becoming more and more mainstream, that's changing the set of available postures and then the final thing is the way keyboards and trackpads are blurring the distinctions between phones, phablets tablets so the whole notion of what is an android app is becoming this flexible, multi-dimensional space and there's always people exploring that space and trying new things yeah, tony morelan 08 55 yeah soren, what about the growth in this industry? is this been something that you think, you know, over the past several years, it's really been, you know, going much higher? søren lambæk 09 04 yeah so last year, we had 150% growth, and we are expecting that in the future, more and more people seem to get foldable phones and when it comes to games, it does have like quite a lot of benefits because you can use the second screen if you're put it in like a folder but sure you can you can change this from full screen to a two completely different mode where the bottom screen, you can use it for items or mini map and that kind of thing tony morelan 09 35 yeah, yeah you know, this technology is so new that it's at this time, i think we're still trying to figure out what is this this target audience a day? what are your thoughts on who is the target audience for foldables? ade oshineye 09 49 well, i think a good way of thinking about it would be to look at the flips and the surface drill as capturing the two sets of ordinances we see there are very often younger people woohoo, looking for cool new experiences, i tend to see a lot of those people walking around with a samsung flip but then you also see a set of people at the high end with a lot more money tend to be more business people, they tend to have the larger the fold or a duel or something like that, that has a stylus that runs multiple apps at the same time, that sort of almost a replacement laptop and those are the two sets of people i tend to see using foldables tony morelan 10 25 guy, do you have any thoughts on them? on the demographic of who is attracted to foldables? guy merin 10 31 i don't see it as a demographic thing i think i think it will become a commodity that more and more users across the world will? we'll see i think right now we're still seeing trends, because he's on the higher end, of course, yeah so we're seeing trend around there but when this becomes more of a commodity, and i think it will, and more of a mainstream device, i don't think it's going to be a demographic thing, just like we've seen with other form, form factors that are spread across the world tony morelan 11 00 yeah, yeah in certain you'd mentioned about gamers and tell me your thoughts on you know why something like foldable device would be attracted to the gaming community? søren lambæk 11 09 well, obviously, a big screen will have a big effect, not only can you see like a lot of graphics do you like and can change and you can have like, a different benefits doing tony morelan 11 20 that so what would it take for foldables to become more mainstream? søren lambæk 11 24 the price is it's a major one for reforms are quite pricey sure, reducing the price wouldn't make it more accessible for a lot of people tony morelan 11 34 yeah and i also think that really trying to teach developers how to build apps, you know, more education on app adoption is also important søren lambæk 11 43 yeah, definitely, we see a lot of games developer don't even consider foldable phones yet so i hope that is something that is going to change, where they could like start maybe changing the ui before they actually building the game guy merin 11 58 i think it would only if i may add one thing i think it's is a triangle of three things there is, you know, the users and the users’ need to see the benefit of why they should, you know, try a foldable phone or a large screen and then what drives that is apps so the more apps that we see that utilize it, that gives them benefits over using just a single screen, smaller device, the more apps that will use things like side by side or split screen or drag and drop between and just productivity and thinks that users can get more out of these apps when running on these new form factors i think that's another key factor and i think the third piece of this triangle is, in order to make the app better on those, you need to support it, that sdk level and the platform yeah, that's a lot of work that has been done by everybody here so mainly by google, because they of course, own the platform so the more we will see those things as standard like jetpack compose so how do you support foldables? there? how do you support all the other sdks, the more they will come native, the better the apps will get, the better the users will benefit from them? and i think that triangle, doing it correctly, will make it much more mainstream in the future ade oshineye 13 20 i agree with that i think one other thing that we've been pushing is getting developers across the chasm of thinking about this so we have a code lab, we put together with microsoft shows developers how to build for a world where the devices can be radically different sizes i mean, on my desk here, i have a samsung flip and a samsung ultra and they are radically different sizes, one of them can fold to be even smaller so if you want to build for both of these devices, and all the things in between, you have to think about am i going to be a responsive design app or when adaptive app, i had to think about which layouts i'm going to support which postures are going to support which aspect ratios, which resolutions, and developers for a long time, we've been able to sort of not really think very hard about that because most phones for a long time were fairly similar sizes now, the same kindle app that has to fold nicely on a surface duo has to also work on a giant tablet, for example, we have duo and meet and the same apk more or less that runs on your phone also runs on your television when we think of this as large screens, the screens can be very tony morelan 14 35 large what about google's quality guidelines? so the challenge for ade oshineye 14 39 us with quality guidelines is we don't want to stifle innovation but we do want to make sure that when a user downloads an app from our store, that it works well on the device, and that there are there's a well-lit path for developers in how do i give users the best possible experience so we have fatal guidelines and implemented shouldn't advice on what is a high-quality experience and then we have tiers of quality, so that you don't have to take a big jump, you don't have to eat the elephant in one bite you can, i think it's eat the rhinoceros in one bite, you can do it in, in lots of little bites so there are steps you can take to improve your quality and we have an easy-to-understand website that shows you, here's all the things you haven't done yet and you can decide which ones to invest in and when tony morelan 15 29 yeah, and i'll mention here that i know throughout this podcast that you guys will be referencing lots of resources for developers to really learn more about how to create for foldables, i'll be sure to include links in the show notes so that you guys can easily find this content so guy, tell me who do you think would benefit by developing for the foldable form factor and why guy merin 15 52 i think everybody will benefit from it the bottom of the funnel is the apps and the user so the users would benefit the most but i think you're asking more about the developers, i think every developer should look at is how they said here before my app is not going to run now only on a single screen, small device, it will span across others, every developer should think about their app what else can i do now that i have more real estate? and again, if it's a game, okay, what do i do with the second screen? how will my game maybe if i run the game, in a split screen with discord on the other side, because i'm using that for gaming as well, to start thinking about all these new scenarios that your app can now do? how can i provide content to the app that sits just beside me with drag and drop functionalities with these kinds of things? and i think every app, every developer, can benefit from those and you should start thinking about that, because this is preparing for, for the future and for more and more of these devices showing in market yeah, tony morelan 17 02 and i know the other day, a day and i were actually having a conversation about multi app user journeys ade oshineye 17 08 so we've tried to move away from thinking of use cases or scenarios to what we call cjs critical user journeys and part of that is because if i'm at home during the pandemic, i tend to have google docs open with meeting notes and then google meat open that if you move that to a foldable, well, that's one screen each but then i need to drag and drop things across them which means both developers need to think, am i a good citizen? does my app play well with others? historically, developers have tended to think about the user journey only within their own app but if you're a video chat app, you need to think okay, how do i work well, with a game with video content, somebody's watching, if i'm a video app, do i have picture in picture, if i have picture and picture, it unlocks all sorts of interesting new user journeys for the user if i'm a game, and i support multi window scenarios, it becomes possible somebody to play a game and live, stream it or play a game and have a chat conversation going on at the same time so trying to think about the user journey that's not just inside your one app, but it's across your app and other apps or even across multiple instances of your app tony morelan 18 17 store and tell me, what should the developer with an existing app do to extend it to foldables? søren lambæk 18 23 so there's quite a lot of sdk is that can be used already jetpack? windows manager is an android library that can help you with detecting if your app is expanding over multiple screens or not tony morelan 18 39 what about specifically game developers? maybe someone who's developing, you know, for unity or for unreal? are there resources out there to help them? søren lambæk 18 47 yeah, so samsung got like, some tutorials that will help you to set up phone apps for unity and unreal, boston guy merin 18 56 tony, if i may i can add one thing on the first question, what can developers do with an existing app, we put up a three-step guide and it's not specifically for the microsoft surface device for large screen on older foldables and the really the three steps are crawl, walk, run so you should start with taking your app and just trying it out on these new form factors if you have access to one of these devices, just try it there if you don't, there is emulators for everything for foldables for a duo for a large screen so just try your app on the emulator that's step one just see that it behaves well on these new form factors using an email lender step two is what we call the low hanging fruit so don't super invest but start small, as they say, maybe think about how can my app behave when it's running within other apps? so maybe support drag and drop either is a source of or is or is a destination cause doing picture and picture, things like that these are things that are super easy that you know, there's samples, there's code snippets, and you can just go in and copy paste into your app and just support that these are really small additions you can do and then it will really shine on those new devices and step three, is where really all the magic can happen you know, you have more real estate now so there's many new design patterns, you can think about lease details, you can think about a companion plane and a few others so what now will you do in your app that, you know, you have more real estate, you can do things differently? this is step three, which is i think, you know, where all the big value will come but it's a journey towards getting there ade oshineye 20 43 definitely, i think one other thing you may want to include is, at the most basic level, you check things like if i rotate my phone, does your device crash? does the app crash? or does it handle it? and then use thing? okay, so you handle rotation, you don't lose state if i'm halfway through typing a message, and i accidentally rotate my tablet, do you lose my message? that's bad yeah so that continuity is an important thing, all the way up to things like handling hinge occlusion so if you've got a surface duo, there's a hinge down the middle, you've got to remember that there we have an api for that, handling different postures of the device, and even trying to see if you can use those postures to offer new functionality but for a lot of developers, it's stepping back thinking about all the different contexts in which people are going to try to use your app and then making sure that you've handled them tony morelan 21 31 yeah, and guy you had mentioned about them testing, i wanted to also bring up that samsung has their remote tests lab, where you can online access a real device for testing your app so another great resource for developers to, to work with guy merin 21 49 definitely, it's also that in the emulator, the emulator is also an amazing resource, because you can run it locally, you can run it on the cloud, we have some workflows that connect to a cloud emulator so every time you know we have a few samples, so every time we do a check in for the sample, it spins off an emulator and test it looks great so we have all these test steps and none of that is specific to us to the to the demo, you can run it with any other devices well, tony morelan 22 15 tell me what is the figma design kit guy merin 22 18 figma design kit is a tool for designers to start thinking about foldables and large screens and dual screens so when we started the journey with developers, we first were thinking about the developers, how do we support you with sdks and with samples and with documentation, that's step two, actually, step one is thinking about your designs and then we started looking at what are the tools that designers use so figma is one of them and there are others so we just created figma design kit for foldables so it lists out all the layouts that are possible again, the list detail, the companion pane and a few others, gives you all the frames and really helps you think about the scenarios you want to cover in your in your app for these new form factors and then you start working with the developers and the sdk, there's actually a step three that we're trying to do in the future, which is, how do we make it easy? taking a figma design kit or another slope and making that into code? that's going to be the next step in the future? tony morelan 23 30 are they tell me about the jetpack window manager and the jet news demo app? ade oshineye 23 36 so like many people, we have quite some quite old demos that were written in a world where you had a phone and you had a tablet and so we like everybody else had to think about, okay, how do we change this to handle different postures, different aspect ratios so we have an article where we walked through the process we went through to use jetpack window manager to handle a lot of these configuration changes to handle continuity, rotation, a lot of those things so we got actually pretty good article about this i think one of the things we don't touch on in that article that i think is really important, is if i have an existing app that people like, and it's too expensive for me to do a complete rewrite, how do i start adding some of the new things into it so we have a new thing called activity embedding, which lets you get a foot in the door of compose, or we're starting to add these new, more complex layouts so maybe your app was just, oh, i have a bunch of cards that go vertically up and down the screen but it's actually no longer a phone it's a device that folds out is not twice the size so now i need to think, okay, i need to go to a list detail view gmail is a good example of this you do that unfold or you rotate and now you have so much more screen estate the challenge is, how do i embed the new more complex layout index? system set of layouts i already have without having to do a rewrite so there's a lot of that functionality that we're trying to show people because we don't want to fall in the trap of the only way you can get to the new world is to burn everything down and start again we want to give people an incremental path from where they are to where they need to get tony morelan 25 18 i was at gdc, this past year in samsung had a great presentation this morning did you get a chance to see that that presentation at gdc? where they talked about developing for foldables? søren lambæk 25 30 yeah, yeah yeah, yeah, it was one of our team members, mike there was doing a presentation tony morelan 25 37 yeah, i'll make sure to include a link to that to that presentation it was great because they covered foldable optimizations for game engines like unity and unreal, talked about android jetpack apis, and window manager showed examples of things like flex mode and ui scaling, and even had an engineer from unity talk about adaptive performance 4 0 ade tell me what should a developer consider when writing a new app for foldables? ade oshineye 25 46 my immediate reaction to this is, first of all, should i use views? or should i use compose, but i'm talking to more and more of my colleagues, they all go? well, obviously, they should compose because composers the future so the official google recommendation, if you're starting from scratch, start with compose, it will mature as your app matures the other things to think about is what makes foldable special, it's the fact they have all these postures, they have all of these different kinds of usage scenarios that they offer and then you want to avoid littering your code with designs that are attached to a specific screen size, or a specific aspect ratio, or a specific resolution and instead, you've got to decide am i adaptive or responsive? will i try to scale the same design? or will i move the components around when the posture or the orientation or the size changes? it's a difference between an app with a list of cards and the cards just get bigger? and an app that says, well, when you rotate me, i go to a list detail view? tony morelan 26 52 guy, what are your thoughts on what a developer should consider when they're writing a new app for foldables guy merin 26 59 so i think a developer should consider a couple of things one, there's folding features specifically for duo, we have, we have a hinge in the middle so if you have like controls, do you want to put them in the middle, or maybe you want to lay them out a little? a little differently for game developers, we did a lot of work for example, with xbox so when you play a game, you can have the controls on one screen and the game on the other screen so the controls, you know, are now have their own dedicated space so maybe you can do some stuff with it so for example, the one thing we did is depending on where you are in the game itself, the controller themes and the way they look change so if you're now a pirate on a ship, and you're in a sword fight or something, the controller is changed to be a sword, for example, or things like that and then other considerations are the posters so what happens when the device is folded? what happens when it's open? what happens when you rotate it? and all these will change the layout of the app and show different controls and options for the use of yeah, tony morelan 28 12 yeah soren, what would you say are some of the common issues that could come up when designing around foldables? søren lambæk 28 22 i think it's important for developers to consider the ui because on the samsung fold, when the phone is folded, we got like a single display so the aspect ratio on that one is very different to when you're when you got it unfolded so the ui, you will have much less space for ui so that is something that's very important that the transition from going from single display to what's the display, that the ui will change so it fits, there's no point on like, you can see all the ui on when it's when it's unfolded and then when you go to the single screen, half of the ui is not a clickable or you can see it so that's very, very important that you test that on your on your phone tony morelan 29 11 yeah, and i know it's a gdc presentation that's one of the things that mike covered was how to have your game go from the single screen and then when you open up the device, how it transitions to the to the door screen søren lambæk 29 25 yeah, exactly ade oshineye 29 26 oh, actually, that reminds me one thing i, i keep mentioning continuity and mostly people think, oh, i have my device, let's say to tablet like this ultra i have in my hand and in in the vertical orientation that's easy and if i rotate, i don't want to lose my state that's typically what we've always meant by continuity but once you have a device that falls, especially if you've got something that has three screens and how to screen them into screens, i may launch something on the outer screen then i open it up and then the app has to move on or the activity as we found that out the screen to now maybe spread out across both screens and then if i fold it the other way, so i'm now on one of the inner screens, the app has to not lose state now we have a bunch of guidance on how you define normal apps, where it gets especially tricky is when it's things like camera, where you may not just be moving an activity across screens, but it may actually move it across cameras okay, so this is one of those places where, if you have a real device in your hand, you can see it and you can see how for a user, this would be a very comfortable, obvious thing, they would expect holding the device in their hands but for you sitting behind your keyboard, it might not leap out as you as an obvious thing for a user to do yeah, so if you sit with erica, with us a samsung flip, you can take a selfie on it, but you might just very easily rotating your hand and because you want to take a selfie with the other camera for your app that's a very complicated thing for the user it's the most natural thing in the world sure so it's important to think about continuity across the different surfaces of the foldable yeah, guy merin 31 07 yeah and let me give, let me give another example with an email app can be gmail, it can be outlook, it can be whatever it whatever you're using and i think foldable or dual screen is really a great way to read emails so if, if until now, i was used to, you know, in the morning to get to my emails on a single screen device so i just have a list of emails, and then i go into each one of them, read it, go back, go to each one of them, read it, go back reply, what have you, if you don't have a larger screen, you can have the least detail so i see all the emails in one place, i click them and then the other side, i see the actual email that i need to address and now if i have to, is a lengthy email, if i have to read it, i can rotate the device and then i get into this a form, that i across the whole screen, i just see the whole email as detail and then when i hit the reply button, it can go into this laptop mode that you know, the keyboard goes from the bottom and then i could start replying to it and when i'm done, i get back to the least detail up to my next email so it really can serve as a laptop replacement yeah, because you have a larger screen, you can do pretty much in a productive manner, which you can do with your regular pc or mac tony morelan 32 27 yeah, for sure so guy, do you think it's a misconception that developers need to do a lot of custom work, that's only going to be that's only going to add value to a foldable device guy merin 32 38 i think it's a misconception, definitely, there's actually not a lot of work you need to do as i said before, you could start small with just adding drag and drop functionality or picture in picture and that will work across every place, every form factor around large screen small screen, and you're using native api's and sdk to support a foldable, you don't need to pick up another sdk for it it's all supported natively and whatever you do will work across all these devices and again, in the future, it can work on the tv or other on a watch so whatever your app will do, consider all these layouts provide layout screens, for each one of those new form factors, a single app will work on all of it ade oshineye 33 28 yeah, i think something i did this weekend is i went and dug up all my old android devices, i have android devices, going back to the g one and even the ones before the g one that i'm not sure i'm allowed to talk about in public, all the way to the latest ones from today and as developer, handling all of these different scenarios, is actually increasing the maintainability of your app because if i think about the screen on the g one and the resolution of that, and i think about that, compared to the resolution, the pixel six, it's a huge jump, and the screens are so much bigger so think about the kinds of devices we'll have five years from now, how much bigger how much higher resolution will those screens be? how often do you want to rewrite your app between now and then? versus oh, it's just a bigger screen at all it's a different posture and being able to make it a relatively simple migration or maintenance that versus a yet another rewrite tony morelan 34 31 so tell me, soren, what are some good examples of existing apps that are taking advantage of the foldable form factor? søren lambæk 34 39 so we have seen a lot of retro games actually, you are utilizing the phone a lot so because retro games don't really have that much heavy graphics so they've got like, plenty of space that they can use so we have seen where people are using a virtual gamepad on one screen and using live small mini maps and that kind of thing so that's okay seems but i also think that like when you're watching it like a video and you start like folding it, and you just see the video slide up on just one screen, because it assumes that you want to put it on tape or something i think that is really clever and i would like to see more of that thinking tony morelan 35 19 in a day, what are some great examples of existing apps that are taking advantage of the foldable form factor? ade oshineye 35 24 so we see a lot, but actually, my two favorites were shown to me by guy, one was a battleships game where you basically have the device in a tabletop posture, and you basically rotate it the other way for the other person to play oh, i thought that was beautiful yes love that and the second thing he showed me was just the kindle yes so basically be able to have the kindle open like a book, but also be able to fold it the other way so like a like a cheap paperback, where you fold it and you hold him in one hand exactly i would never do that for any of my books, but been able to do that and like surface to that field like that is so nicely that i think was really compelling tony morelan 36 02 and that was the first thing when i when i pulled out the surface duo showed my wife, the first thing she did was grab it in, folded it around like it was a traditional paperback book that was so easy to hold she absolutely loved that that aspect of it guy tell me, what are some other examples of some great apps that are already taking advantage of a foldable, guy merin 36 25 i think two kinds of app one is apps for consuming and i think the kindle is a good example of flipping a page, which is supernatural i really liked that experience as well, but also apps around creation so for example, if you need to edit a video, or edit your photos, or edit the blog post, it's very easy with dual screen or with the foldable or our screen to have the actual video or photo on one side, and on the other side, all the controls, and then you hit a control and you see it real time, what happens, how does it change the other, it's really, really helpful to create and edit your memories that way so it's really a great creation tool, as well, not just for consuming tony morelan 37 12 yeah, i could definitely see that also be a great value with a program like adobe acrobat you know, i'm often editing pdfs and so i could see that would be a great use case for, you know, not only being able to read documents, but then you know, making edits ade oshineye 37 28 i can also imagine with that sort of notebook, passport, sort of novel types, device, where if it's light enough and thin enough, you can sort of fold it in half with a stylus, and just scribble it like you would have a normal notebook, basically, like a moleskin but it's a moleskin with an infinite number of pages there's, guy merin 37 49 there's also psychological sense here, about the folding, and that you can close it so for example, if i'm writing or scribbling or journaling with a stylus on the device, when it's open, when i'm done, consider if you're doing it on a regular notebook, what are you doing, you're closing it, and it gives you a sense that you're done you accomplished something and i think this is where foldables really shine because you're doing something you're reading an email, you're journaling, you're even playing a game, once you're done, you close it, even you hear that little click yes and it gives you a sense, you know, it's like checking a box in your to do and i think this is something that you don't see in other form factors and you see it only on this folding devices that really helps users stay in their flow and then move away to, you know, do something else that is not related to the phone so leave it off and you know, digital wellbeing and stuff tony morelan 38 46 yeah, it's funny that you say that, because that was the one of the first things i noticed when i closed my duo hearing that little click sound it's sitting on my desk i was like, ah, okay, put that away ade oshineye 38 56 yeah, yeah, that's actually not the interesting effectiveness is that with the foldables, initially, because of weight, and then eventually, because of new user journeys, they switch from being in your trouser pocket, at least for me to being in a jacket pocket and that's something changes all the places i use them tony morelan 39 14 interesting yeah and i know when i first got my hands on the z flip, folding it to that such small form factor and putting it in my pocket just felt so much better than some of the bulky devices that i seem to carry around with me søren lambæk 39 30 i actually heard that people who using the ac flip, use the phone less because they have to open it manually so for them, it actually helps them a lot to not like spend too much time on the phone so there, i guess there's some psychological effect ade oshineye 39 47 i mean, i've had the opposite with my flip in that because it's so small, and because it sorts of made me take more selfies i don't usually take selfies because well, i usually have a real camera with me, but i have this thing, it's small enough that it's in the back pocket of my jeans and it's just arms were nice and i would normally just take a photo of the place but as thing i can pull it out, then basically without having to unfold it, or unlock it just pointed on my face, click selfie, put it in my pocket again so for that one particular user journey, i use it more tony morelan 40 20 interesting yeah, i could, i could totally see that but tell me a day, what are some of the challenges that foldable technology needs to overcome to increase consumer adoption? ade oshineye 40 31 i mean, if i look at the variety of devices, i have the flip back pocket of jeans every time when it comes to the fold, i have to sort of look at the jacket i'm wearing and think about, okay, will the material the lining handles the weight, or should it go into my bag, if i'm carrying this surface duo, it's light enough that i can just casually put it in my jacket pocket, it'll be fine but it's too bulky for me to put in the front pocket of any of my jeans and it feels dangerous to put in the back pocket so weight is an issue cost is also an issue because the more expensive it is, the more careful you have to be when you put it away to think, will it be safe in this pocket but as these things get thinner, lighter, cheaper, and we discover more and more user journeys, i think that's going to be really interesting if i give an example, i have the surface level one, and it's great but every now and again, i see somebody surface two or two and i go, oh, they have a pen oh, that's interesting and i find myself thinking, well, that might be an interesting upgrade if it were thin enough and light enough, but then i'm thinking, but will it fit in my jacket? pocket? tony morelan 41 37 sure that's interesting guy tell me what do you think are some of the challenges that the foldable technology needs to overcome? i guy merin 41 45 think the first obvious one is the price point, they're still more expensive than other form factors so i think we're going to see the prices, the prices go down? for sure i think that would be probably my biggest one i think we did not hit the point of, you know, apps, enough apps are there, we'll see more and more apps, and then everybody will want to join the party i don't think we are in that stage yet and i think that will come soon tony morelan 42 13 and so on, what are your thoughts on what sort of challenges that the foldable technology needs to overcome? søren lambæk 42 19 the foldable phone at the moment is very bulky, and it's very heavy, it will be great that it was if it's lighter, i'd know that people that it actually puts people off some people that it is so bulky and heavy, where they will rather i get the flip phone for that reason i also think speaking of the flip, i think battery life is an it's very important i don't know how much bigger battery they can put in them without even giving more bulky and heavier but when you have like on the samsung one, there are three displays and if you use it for game watching films, it's really draining battery so that is i will say that is the big ones for me tony morelan 43 03 so guy, what resources would you recommend for developers interested in creating foldable apps, guy merin 43 09 i think you know; our modal is really meeting the developers where they're at so continue using whatever you're using if you're using a mac or pc, we have emulators for each one of those things so i would start with just following the recommendations you know, we have documentation samsung has google, start there, download an emulator, try it out and then just write a sample app, there was a code lab that we built with google, you could try there to test some of these new capabilities on the emulator on a specific device and then start your journey from there to commutations samples emulator we post a weekly blog, a weekly developer blog every thursday, that brings new information, for example, how to write again, how to use drag and drop, how to run side by side with another app, how to address the post changes, well, layout changes so we have a blog every week that covers code it's a developer blog with specific code and tips and tricks, try those resources and just reach out if you have a question and if you're blocked on anything, we are really here to help you out with your journey because we're creating the future and we want you to be successful with your app on all these new form factors tony morelan 44 34 yeah are there any conferences or events the that you know that you'll be attending? guy merin 44 40 definitely so google io was just completed a few weeks back, a lot of talks around large screens, you can still follow that and see some of the talks droidcon is coming up we just had droidcon san francisco a couple of days ago, and the next one is in berlin, and it's a worldwide conference google's probably going to have a few to prevent samsung has a few events microsoft build was just a couple of weeks ago and we also had to talk about tony morelan 45 08 foldables excellent and i know a day you shared with me a large list of links tells me, you know, what are some of these resources the developers can utilize ade oshineye 45 19 so for us, it's really three buckets there are introductory materials, such as our quality guidelines that i think are really important to sort of absorb into your bones so you can feel what a good experience will be like, and it will nudge you as you go on then we have a large collection of design resources, often at the material design website, but also woven through developers@android com and then the final piece is a set of resources for the developers things like how do i do testing the code library with microsoft but those three buckets of resources are the right ones for you to start with i'd also recommend come to door con berlin, were given a talk a teammate of mine, romano, france will be their co presenting with somebody from microsoft and again, you can go grill those people get lots of questions and of course, there will be future android events, where we'll have more stuff to share tony morelan 46 14 wonderful insight on what does samsung have to offer to help developers søren lambæk 46 20 so sometimes we got our own a game dev space where we posted blocks and tutorials, articles and we will have some when this podcast is out, we should have some tutorials available we also got the gdc presentation that mike did tony morelan 46 37 excellent so any more thoughts as we close the podcasts on this new technology in foldables ade oshineye 46 45 from my perspective, looking at my desk, i've got a flip duo, a samsung tab and that really captures just the variety of form factors that are happening on the android platform and i look forward to seeing more i think that's one of the things i learned here is that there's so much going on and there's so much more to come søren lambæk 47 06 i'm really looking forward to the future to see what new technology and what new devices coming out how the foldable phones will hopefully be more like lighter and more affordable and yeah, i'm really looking forward to see how developers is going to utilize them for all kinds of different apps guy merin 47 28 i think i think this is super exciting times, we are really in a pivotal point of, you know, something new, something a new generation of four factors evolving, and it's happening right now we started seeing the version one of the foldables and tools, we're now seeing a second version and a third version and i think we're going to see more of that and this is just amazing we are creating the future right now and i think developers are the most important part of it, because it will succeed based on the apps, and what developers will do with it and this is a great time now to join this ride and really create the future because i think 10 years from now, we will see things that really start happening right now with apps that take you to the next steps with foldables yeah, tony morelan 48 21 my key takeaway with the foldable industry is how many of these big companies in this industry are working together to further the technology it was great to have you know, someone from google from microsoft, and of course, from samsung, all on the podcast today before we close this out, i want to ask a question of each of you soren, what is it that you do for fun and when you're not at your desk working for samsung? søren lambæk 48 46 as i already said that i do like art to play music and draw and i have an eight-month-old son that's taking up a lot of my time at the moment tony morelan 49 00 wonderful wonderful yeah, congratulations on that thank you in a day, what is it the you do for fun when you can step away from your role at ade oshineye 49 09 google? so i do a lot of things but i think the main thing that occupies my time nowadays has been playing badminton it's an it's a huge part of the swiss culture and there's just a lot of people who play badminton, so it's a great game you can actually get seriously injured in it but you can also get very good at it so i'd recommend it tony morelan 49 32 in guy what is it that you do for fun up in the great northwest? when you get to put aside your responsibilities at microsoft i can see in your background now i noticed on your wall, you've got your own indoor rock-climbing gym guy merin 49 45 yeah, exactly so trivia in the last six months i've been training really, really hard to climb and summit some of the mountains around north washington goal is to get even bigger mountains but we did a couple of summits last weekend and really into climbing and something mountains now wow takes a lot of mental prep, nutrition, fitness level and i've seen a lot of similarities between the experiences i have with preparing for a climb, to even things i do at work it's really managing a project, a lot of insights i got from climbing that i apply in other places tony morelan 50 25 that's great that's great hey, i wanted to thank all of you for being on the podcast today it was wonderful to hear the different voices and get a chance to chat with you all ade oshineye 50 34 thank you very much for having us you closing 50 35 just looking to start creating for samsung download the latest tools to code your next app, or get software for designing apps without coding at all sell your apps to the world on the samsung galaxy store check out developer samsung com today and start your journey with samsung the samsung developers podcast is hosted by tony morelan and produced by jeanne hsu
We use cookies to improve your experience on our website and to show you relevant advertising. Manage you settings for our cookies below.
These cookies are essential as they enable you to move around the website. This category cannot be disabled.
These cookies collect information about how you use our website. for example which pages you visit most often. All information these cookies collect is used to improve how the website works.
These cookies allow our website to remember choices you make (such as your user name, language or the region your are in) and tailor the website to provide enhanced features and content for you.
These cookies gather information about your browser habits. They remember that you've visited our website and share this information with other organizations such as advertisers.
You have successfully updated your cookie preferences.