• Learn
    • Code Lab
    • Foldables and Large Screens
    • One UI Beta
    • Samsung Developers Podcasts
  • Develop
    • Mobile/Wearable
    • Galaxy GameDev
    • Galaxy Themes
    • Galaxy Watch
    • Health
    • Samsung Blockchain
    • Samsung DeX
    • Samsung IAP
    • Samsung Internet
    • Samsung Pay
    • Samsung Wallet
    • View All
      • Galaxy AR Emoji
      • Galaxy Accessory
      • Galaxy Edge
      • Galaxy Z
      • Galaxy Performance
      • Galaxy FM Radio
      • Galaxy S Pen Remote
      • Galaxy Sensor Extension
      • PENUP
      • Samsung Automation
      • Samsung Neural
      • Samsung TEEGRIS
      • Samsung eSE SDK
    • Visual Display
    • Smart TV
    • Smart Hospitality Display
    • Smart Signage
    • Digital Appliance
    • Family Hub
    • Platform
    • Bixby
    • Knox
    • SmartThings
    • Tizen.NET
  • Design
    • Design System
    • One UI
    • One UI Watch
    • Smart TV
  • Distribute
    • Galaxy Store
    • TV Seller Office
    • Galaxy Store Games
    • Samsung Podcasts
  • Support
    • Developer Support
    • Remote Test Lab
    • Issues and Bugs Channel
    • Samsung Android USB Driver
    • Galaxy Emulator Skin
  • Connect
    • Blog
    • News
    • Forums
    • Events
    • Samsung Developer Conference
    • SDC22
    • SDC21
    • SDC19 and Previous Events
  • Sign In
Top Global Search Form
Recommendation
  • Blog
  • Code Lab
  • Foldable and Large Screen Optimization
  • Forums
  • Galaxy Emulator Skin
  • Galaxy GameDev
  • Health
  • Remote Test Lab
  • Samsung Developer Conference
  • SDC22
  • Watch Face Studio
All Search Form
Recommendation
    Suggestion
      All Search Form
      Filter
      Filter
      Filter
      • ALL (85)
      • DOCS
      • SDK
      • API REFERENCE
      • CODE LAB
      • BLOG
      • NEWS/EVENTS
      • OTHERS
        api reference code lab blog news/events
      1. events | game, uiux, health, mobile, galaxy watch, smarttv, marketplace, foldable

      blog

      Remembering the Top Moments of SDC from Years Past

      it's almost time again for the samsung developer conference (aka sdc). after a few years of limited travel, virtual-only events, and nasal swabs, we're excited to get back to a live event, if only for one day. as you may have seen on this site and in our social media accounts, sdc is scheduled for october 12, at the moscone conference center in san francisco. the keynote address and technical sessions from the live event will be streamed via youtube, and there will be additional virtual content available to view beginning october 13, on the conference web site. sdc is a special time for us at the samsung developers team worldwide. internally, we have members in many countries: south korea, philippines, the united kingdom, vietnam, brazil, poland, bangladesh, and the united states. we're all excited to come together each year to bring useful and informative content to you. we enjoy planning and staging the event each year and we all have great memories. in this post, we'll share some of our favorite experiences with you. behind the scenes we understand the boring details behind the scenes isn't as exciting to most, but for our events team, the challenge of planning and pulling off a major event is a thrill. most years, planning for sdc begins almost the moment the previous event is completed. the planners begin executing contracts with the venue, caterers, and the experiential vendor that handles all the small details. they meet weekly on a conference call, usually in the evenings for those in the us to talk with our counterparts in south korea. as the months move along, the teams secure contractors with audio-visual teams to run the massive wall of displays on the keynote stage, as well as the cameras in the rooms where sessions are held. we look through dozens of clothing catalogs to find apparel for attendees as well as employees. during these times, we plan out the social media notices, come up with topics for blog posts, and design the email campaigns that go out to hundreds of thousands of developers. we discuss the colors of signs in great detail to make sure each shade is exactly the right color. we talk to the technical teams to understand which new tech is ready for developers to use. we track down guest speakers from other companies to show how samsung works with so many partners. as the months go by, we're working more and more on sdc tasks. a few days prior to showtime, you will see many of our team on-site at the venue, setting up demo stations, wiping down counters, and making sure everything is "just right," so that you're amazed the moment you walk through those doors. best of galaxy store awards beginning in 2018, the samsung developers team started the best of galaxy store awards program as a way to show our appreciation for those developers and designers who bring their products to galaxy store. some of the top names in the world of gaming, productivity, and social media have received the awards. to name a few: riot games' league of legends: wild rift (2021 best strategy game) epic games' fortnite (2020 game of the year) spotify (2020 bixby capsule of the year) gameloft asphalt 9 (2019 best racing game) tiktok (2019 best social app) disney heroes (2018 best game) best of galaxy store winners at sdc while the 2018 and 2019 awards were presented live at sdc, the covid pandemic required us to make the awards show a virtual event. you can watch the 2020 and 2021 awards on youtube. the 2022 awards are scheduled for december 6, 2022, on youtube. stay tuned to the samsung developers channels on twitter, facebook, linkedin, and youtube to watch the awards show when it premieres. for a full list of samsung best of galaxy store awards winners, click here. before and after hours sdc isn't just all business though—the organizers and attendees also love to have fun. before the keynote, attendees could join groups stretching and going for a run through the city streets. others opted for calm and quiet with yoga at the expo hall stage. staying fit at sdc a tech conference wouldn't be complete without an after-hours party and sdc is no different. in 2014, the sdc crowd went to san francisco's famed exploratorium, where they experimented with science projects among tables of excellent food and drinks. attendees in 2016 experienced the beautiful asian art museum in san francisco. in 2017, attendees walked virtually through a murder mystery with samsung gear vr headsets. the 2019 sdc brought more excitement to the after-hours party. as the event was held at the end of october, the theme was "day of the dev," playing on the name of the holiday celebrated in november. a vr-powered interactive journey led players through a spooky experience, while halloween-themed goodies were available throughout the expo hall. a foggy mist permeated the place, while characters from the vr journey appeared in real life to the delight of the crowd. day of the dev at sdc technical sessions no matter your interests, if you're into tech, sdc probably has a topic that will pique your curiosity. whether you are into mobile design, voice control, smart devices, enterprise security, streaming media, or a good old-fashioned shoot-em-up game, you will find plenty of technical sessions to satisfy your need to know more. foldables and security are popular topics at sdc after you've taken in the experts' ideas in the technical sessions, you can start building your own ideas on samsung's platforms in the code lab area of the expo hall. at the code lab, you can talk with the actual developers of many of samsung's best products and learn from them. this interactive experience is also available to anyone at any time on the samsung developers web site. keynote and spotlight session the keynote presentation is always the subject of great speculation on the internet for days prior to sdc. samsung electronics president and ceo dj koh is a favorite each year. do you remember the 2018 sdc at moscone west, when senior vice president justin denison walked on stage to present the galaxy fold, the first foldable mobile device? that is one of many exciting moments on the first day of the event. revealing the galaxy fold the sdc keynote includes other memorable moments, such as the announcement of one ui, which brought a sensible and consistent design ethos to samsung mobile and wearable devices. bixby cto adam cheyer used his time on stage to show the power of ai, while also amazing and amusing the audience with his sleight-of-hand. the second day starts off with the spotlight session. the spotlight session is where samsung focuses on companies making a successful partnership with samsung platforms and products. compared to the flash and excitement of the keynote, the spotlight session is where executives and developers share their experiences with their peers. spotlight session highlights—behind the scenes with vitalik buterin; on stage with tim sweeney and john hanke some of the more memorable moments of the spotlight sessions include hosting a fireside chat of games and how to monetize them on mobile platforms. this session included epic games ceo tim sweeney and niantic labs ceo john hanke. another memorable spotlight session brought ethereum co-founder vitalik buterin to the stage with samsung's john jun to talk about the possibilities of blockchain for mobile devices. one final memory of the sdc spotlight session that's special to those of us on the samsung developers team, aside from putting all this together for you, was from 2018. the week before the event, one of the teams' members proposed to use the note9 with s pen to take a photo on stage and send the photo to twitter. in three days, they had the prototype working and tested. the team convinced vp yoon lee to perform this live demo on stage to close the event. as you can see below, the demo worked flawlessly. wrapping up after sdc is finished, the samsung developers team is there to put everything away. demo machines are disassembled and our booth is sent to the warehouse. we pack up leftover t-shirts and make sure we left the venue cleaner than we found it. after that, we have a well-earned party for ourselves and a good night's sleep. thank you for reading through our memories of sdc events in the past. please join us online, october 12, 2022, at 10 am pt, for the next samsung developer conference keynote. let us know your favorite moments from sdc. join us on twitter, facebook, linkedin, and youtube to continue the discussion.

      https://developer.samsung.com/sdp/blog/en-us/2022/10/05/remembering-the-top-moments-of-sdc-from-years-past
      1. tutorials | game, mobile

      blog

      Foldable Device Features with Unity and Unreal Engine 4

      intro foldable technology for mobile is a ground-breaking experience not only for users, but also for developers. the presence of many form factors, like immersive display, app continuity, flex mode, and ux optimization, challenge developers to think outside of the box to adapt to this technology. there are already a large number of blogs talking about general application considerations, but what about gaming on a foldable device? in this blog, we look at the challenges and new opportunities foldable devices present for mobile game development. this blog focuses on unity and unreal engine as they are the most common game engines for mobile development. however, a lot of the information applies to other engines as well. app continuity and multi-window mode firstly, let's establish that the large internal display is called the main display whilst the smaller external display is called the cover display. app continuity and multi-window mode are two key features of foldable smartphones. with app continuity, you can seamlessly transition between the cover display to the main display without needing to reopen the app. with multi-window, you can run multiple apps at once and multitask like never before. app continuity moving an app between the two displays affects the size, density, and aspect ratio of the display it can use. app continuity is enabled and disabled from the android manifest of the app: the <activity> element has a new attribute called resizeableactivity. if not set, this attribute defaults to true, thus enabling app continuity and assuming the app fully supports both app continuity and multi-window mode. if set to true then the application automatically attempts to resize when moving between displays, as shown in the video below. if set to false then the system still allows you to transition from the cover display to the main display but does not attempt to resize the application. instead, a new button appears, allowing the user to restart the application at a time of their choosing, as shown below. when the app transitions between the two displays, the activity is destroyed and recreated. as such, the app data needs to be stored and then used to restore the previous state. from testing, both unity and unreal engine appear to handle this process already. however, if you are developing on a custom engine, it is worth confirming that your engine/app can handle this. continue on cover screen by default, foldable devices simply lock the device when closing the main display. however, it is possible for users to disable this functionality for certain apps. in the device's display settings, there is an option called "continue on cover screen" that has to be enabled by the user. entering this menu displays a list of all applications on the device and enables users to set specific applications to not lock the device when closing the main display. if an application has resizeableactivity set to false then the option to enable this functionality is greyed out and is not available. if your application supports resizing and app continuity then you should make sure to test that this works as users may wish to enable this functionality on their device. multi-window mode multi-window mode can allow up to three apps to run at the same time in a split-screen arrangement (see left image) or for two apps to run in pop-up mode which keeps one app full-screen but creates another app in a smaller pop-up window (see right image). just like app continuity, this is enabled using the attribute resizeableactivity in the android manifest. if resizeableactivity is not set then it defaults to true. so again, it is recommended that you set this yourself to ensure that your app works as intended. app continuity without multi-window mode if you would like your app to support app continuity but don't want it to be used by the multi-window mode, then this is possible. first, you should set the resizableactivity attribute to false to disable both app continuity and multi-window mode. next use the following <meta-data> element in your <activity> element: <meta-data android:name="android.supports_size_changes" android:value="true" /> this re-enables the app continuity feature without enabling multi-window mode. game engine features to use if using existing game engines then there are several existing features that are useful if developing for foldable devices. this section provides a high-level look at these features. for more in-depth information, i recommend visiting the engine's documentation. unity unity is a very good engine for developing on foldable devices, requiring little to no setup to enable features for foldable devices. the engine automatically handles resizing of the application without any modifications required. the resizeableactivity attribute is controlled by an option in the player settings: resizable window. when enabled, resizeableactivity appears to be set to true; when disabled, resizeableactivity appears to be set to false. note this option is not available in older versions of unity. if this option is not present then you have to set the resizeableactivity manually. the engine also provides a very robust ui scaling system that helps to reduce the amount of work required to create a ui that works across both the cover display and main display. the canvas scaler and anchor system work very well with foldable devices and work to resize and position elements consistently across the two displays, thus preventing developers from having to create two ui designs (one for cover display and one for main display). unreal engine 4 unreal engine 4 is another good engine for developing on foldable devices, although it requires a little more work to get it set up for foldable devices. first of all, unreal engine 4 by default disables the resize event on android devices, however, it is possible to re-enable it in device profiles using the console variable: r.enablenativeresizeevent = 1 unreal engine 4 by default also has a max aspect ratio of 2.1. this is, however, too small for the cover display of some foldable devices which can result in black bars on either side of the image. fortunately, unreal engine makes this value easily changeable in the project settings: platform -> android -> max aspect ratio from my testing, 2.8 is a good value. however, i recommend users experiment to find the best value. unreal engine's umg (unreal motion graphics ui designer) has a comprehensive set of tools for creating responsive ui designs. this system automatically scales ui elements to fit the screen size, and the anchor system is also very useful for ensuring the ui elements are positioned correctly between the two displays. samsung remote test lab no matter what engine you use, the best way to ensure your app works well on a foldable device is to test it on a foldable device. samsung remote test lab has a range of foldable devices available for developers to test their applications on if getting hold of a physical device is too difficult or expensive. all you need to do is create a samsung account and you can start using these devices for testing. android jetpack windowmanager despite being very good engines for foldable game development, neither unity nor unreal currently provide information about the current state of the foldable device (that is, is it open/closed/halfway?, where is the fold positioned?, what is the fold's orientation? and so forth). however, android has recently created a new library as a part of their android jetpack libraries that enables developers to access this information and make use of it in their apps. android jetpack in their own words is "a suite of libraries to help developers follow best practices, reduce boilerplate code, and write code that works consistently across android versions and devices so that developers can focus on the code they care about." windowmanager is a new library from the android jetpack suite, intended to help application developers support new device form factors and multi-window environments. the library had its 1.0.0 release in january 2022, and targeted foldable devices but—according to the documentation—future versions will extend to more display types and window features. more technical resources this blogpost has an accompanying technical blogpost and code lab tutorial, demonstrating how to use the android jetpack windowmanager with both unity and unreal to take advantage of the flex mode feature of samsung's foldable devices. i recommend starting with the jetpack windowmanager blogpost to learn how to set up the windowmanager in java: https://developer.samsung.com/galaxy-gamedev/blog/en-us/2022/07/20/how-to-use-jetpack-window-manager-in-android-game-dev then, follow it up with the code labs to learn how to make use of the windowmanager to implement a simple flex mode setup in either unreal or unity: https://developer.samsung.com/codelab/gamedev/flex-mode-unreal.html https://developer.samsung.com/codelab/gamedev/flex-mode-unity.html also, visit our game developer community to join the discussion around mobile gaming and foldable devices. click here to find out more about other design considerations when designing apps for foldable devices and large screens. final thoughts foldable devices provide a richer experience than regular phones. hopefully, this blogpost and accompanying tutorial have provided you with the necessary information to begin taking advantage of these new form factors and start providing users a richer foldable experience. additional resources on the samsung developers site the samsung developers site has many resources for developers looking to build for and integrate with samsung devices and services. stay in touch with the latest news by creating a free account and subscribing to our monthly newsletter. visit the galaxy store games page for information on bringing your game to galaxy store and visit the marketing resources page for information on promoting and distributing your android apps. finally, our developer forum is an excellent way to stay up-to-date on all things related to the galaxy ecosystem.

      Lochlann Henry Ramsay-Edwards

      https://developer.samsung.com/galaxy-gamedev/blog/en-us/2022/09/16/foldable-device-features-with-unity-and-unreal-engine-4
      1. events

      blog

      Last Chance to Register! Don't Miss These Awesome Experiences at SDC19.

      we're sure you've heard about the exciting sessions and speakers at samsung developer conference. from samsung leaders announcing the latest dev tools to fireside chats about the future of tech to sessions on emerging topics, sdc19 is full of valuable insights and intriguing information. but the fun doesn't stop there! it's also a haven for innovation and inspiration — thanks to these cool activations and exhibits. a developer's playground – tech square and dev park tech square visit samsung product zones at tech square – from bixby to smart tv to galaxy. discover the latest sdks, work 1:1 with samsung experts, and chat with samsung partners about their latest work. ai/iot zone – check out areas dedicated to smartthings, tizen, and bixby. relax in comfy massage chairs powered by tizen, explore the smartthings partner showcase, and stop by the bixby hackathon and magic show. code lab – get hands-on experience with the latest sdks and developer tools with the help of samsung engineers. plus, complete fun coding challenges for the chance to win exclusive tech prizes. dev park play, network, and get inspired with fun activations at dev park, like the designer zone featuring the winners of samsung's mobile design competition, and trending topics at the theater. last but not least, swing by to say hi to the samsung developer program and think tank teams! hacker's playground – learn skills like attack, defense, and reversing from expert hackers. we’ll have toy examples with step-by-step guides, and if you complete the tutorial, you might be in for a surprise. up for a challenge? show off your hacking skills for a chance to win hot samsung prizes. it's open to everyone from newbies to experts, so bring your own laptop and compete for some serious bragging rights. xr: delusion experience – get in the halloween spirit with our haunted xr experience – delusion: lies within. experience the latest in samsung ar and xr as you "interact" with hidden delusion characters. workshop with the tech after testing out the tetavi volumetric rig. just scan yourself, drop your avatar into delusion content, and have some spooky fun. think tank: ona interactive wall – check out this multi-touch, multi-user interface with 3d-gesture sensing. ona tracks your location and movement when you're using it to play games, making it a literal game changer. feeling inspired yet? these are just a few of the highlights. don't miss the rest – register for sdc19 today! use the code priority until october 22 to secure exclusive seating near the stage during the keynote. only valid for the first 100 people to redeem the code! check out the full lineup of tech sessions, follow us on social, and keep an eye on #sdc19 for the latest news and updates. we can't wait to see you in san jose!

      Samsung Developer Program

      https://developer.samsung.com/sdp/blog/en-us/2019/10/16/last-chance-to-register-dont-miss-these-awesome-experiences-at-sdc19
      1. Learn
      2. Code Lab

      codelab

      Apply Conditional Lines on Watch Faces

      apply conditional lines on watch faces objective learn how to create a watch face that responds to time and notification using conditional lines in watch face studio. overview watch face studio is a graphic authoring tool that enables you to create and design watch faces for watches running on wear os. it offers a simple and intuitive way to add images and components, and to configure the watch movement without any coding. watch face studio supports watch faces for the galaxy watch4 or newer version, and other watch devices that run on the same platform. conditional lines in watch face studio lets users easily control components and its behaviors on watch faces. you can make your watch faces change dynamically based on time, step-count, or battery using conditional lines. now, with the latest version of watch face studio, you can also set conditional lines based from events such as low battery, unread notification, or scenarios without any events. set up your environment you will need the following: watch face studio (latest version) galaxy watch4 or newer any supported wear os watch sample project here is a sample project for this code lab. download it and start your learning experience! conditional lines sample project (2.48 mb) start your project download the sample project file, and click open project in watch face studio. locate the downloaded file, then click open. apply conditional lines based on time using conditional lines in watch face studio, your watch face can visually change its design based on the time of the day. here, you can change the background image of the watch face based on certain time intervals by setting the timeline condition of two background images, named background_day and background_night. click the show/hide timeline icon to show the frame area. notice that there's a default conditional line based on time for every component. each conditional line is represented by a bar in the timeline and you can adjust it using the slider at the end of the bar. collapse the background group containing the two background images. in the timeline area of background_day, click on its bar and hover your mouse at the start of the bar. drag the start of the bar to 06:00:00h and drag the end of the bar to 18:00:00h. this sets the condition that background_day visually appears on the watch face from 6:00 am until 6:00 pm. tipto quickly navigate on the timeline, hold shift + mouse scroll. learn more about keyboard shortcuts, by referring to this guide. next, for background_night, set the first time condition from 00:00:00h to 06:00:00h by dragging its bar respectively. at the start of 18:00:00h, double-click at the timeline area to create a 2nd bar at that specific time. drag the end of the bar to 00:00:00h, at the rightmost part of the timeline. this makes background_night to appear conditionally from 6:00 pm until 6:00am on your watch face. now, it's time to check if your watch face responds correctly based on the time of the day. click show/hide run button to open the run panel in watch face studio. move the time control slider from 06:00:00h to 18:00:00h and the watch face should show background_day as its background. similarly, check if the watch face changes its background to background_night when the time is from 18:00:00h to 06:00:00h. set the unread notification event make your watch face change dynamically based on a specific device event. in this step, add an event for unread notifications on notification_envelope, an animation component included in the sample project. click + or add conditional line and select event. noteto remove conditional line icons such as the battery, steps, 12h/ 24h, or event, simply right-click on it and select remove. click show/hide event to start configuring the event-based conditional line for notification_envelope. on the notification_envelope layer, double-click on the event frame. in the warning window, click ok. in this case, all existing conditional frames for this layer are deleted. afterward, a bar is created for the event-based conditional line. noteeach layer responds to only one type of condition. next, drag the bar from no event to unread notification. noteno event is used if there is no condition set on either battery low or unread notification events. check if the notification_envelope animation component appears on your watch face whenever there's an unread notification. click play run preview and move the unread notification slider in the run panel. when the unread notification is set to a value of 1 or more, the animation component should visually appear on your watch face. test the watch face to test your watch face, you need to: connect a watch device to the same network as your computer. in watch face studio, select run on device. select the connected watch device you want to test with. if your device is not detected automatically, click scan devices to detect your device or enter its ip address manually by clicking the + button. notethe always-on display is already set in the project. to run the watch face successfully, you may need to configure its always-on display to avoid any error when you run on device. you're done! congratulations! you have successfully achieved the goal of this code lab. now, you can use conditional lines in watch face studio, all by yourself! if you're having trouble, you may download this file: conditional lines complete project (2.48 mb) to learn more about watch face studio, visit: developer.samsung.com/watch-face-studio

      https://developer.samsung.com/codelab/watch-face-studio/conditional-lines.html
      1. Learn
      2. Code Lab

      codelab

      Implement Flex Mode on a Unity Game

      implement flex mode on a unity game objective learn how to implement flex mode on a unity game using android jetpack windowmanager and unity's java native interface (jni) wrapper. 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: unity hub with unity 2020.3.31f1 or later (must have android build support) 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 sample code here is a sample project for you to start coding in this code lab. download it and start your learning experience! flex mode on unity sample code (43.39 kb) start your project after downloading the sample project files, follow the steps below to open your project: launch the unity hub. click projects > open. locate the unzipped project folder and click open to add the project to the hub and open in the editor. notethe sample project was created in unity 2020.3.31f1. if you prefer using a different unity version, click choose another editor version when prompted and select a higher version of unity. configure android player settings to ensure that the project runs smoothly on the android platform, configure the player settings as follows: go to file > build settings. under platform, choose android and click switch platform. wait until this action finishes importing necessary assets and compiling scripts. then, click player settings to open the project settings window. go to player > other settings and scroll down to see target api level. set it to api level 31 as any less than this will result in a dependency error regarding an lstar variable. you can set the minimum api level on lower levels without any problem. next, in the resolution and presentation settings, enable resizable window. it is also recommended that render outside safe area is enabled to prevent black bars on the edges of the screen. lastly, enable the custom main manifest, custom main gradle template, and custom gradle properties template in the publishing settings. after closing the project settings window, check for the new folder structure created within your assets in the project window. the newly created android folder contains androidmanifest.xml, gradletemplate.properties, and maintemplate.gradle files. import the foldablehelper and add dependencies 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 (171.80 kb) to import the foldablehelper.java file and add dependencies to the project, follow the steps below: in assets > plugins > android, right-click and select import new asset. locate and choose the foldablehelper.java file, then click import. next, open the gradletemplate.properties file to any source code editor like visual studio and add the following lines below the **additional_properties** marker. android.useandroidx = true android.enablejetifier = true useandroidx sets the project to use the appropriate androidx libraries instead of support libraries. enablejetifier automatically migrates existing third-party libraries to use androidx by rewriting their binaries. lastly, open the maintemplate.gradle file and add the dependencies for the artifacts needed for the project. **apply_plugins** dependencies { implementation filetree(dir: 'libs', include: ['*.jar']) implementation "androidx.appcompat:appcompat:1.4.1" implementation "androidx.core:core:1.7.0" implementation "androidx.core:core-ktx:1.7.0" implementation "androidx.window:window:1.0.0" implementation "androidx.window:window-java:1.0.0" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0" **deps**} noteyou may update the version of these dependencies when necessary, but be aware that there might be significant changes. create a new playeractivity to implement flex mode on your applications, you must make necessary changes to the activity. since it is impossible to access and change the original unityplayeractivity, you need to create a new playeractivity that inherits from the original. to do this: create a new file named foldableplayeractivity.java and import it into the android folder, same as when you imported the foldablehelper.java file. to extend the built-in playeractivity from unity, write below code in the foldableplayeractivity.java file. package com.unity3d.player; import android.os.bundle; import com.unity3d.player.unityplayeractivity; import com.samsung.android.gamedev.foldable.foldablehelper; import android.util.log; public class foldableplayeractivity extends unityplayeractivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); foldablehelper.init(this); } @override protected void onstart() { super.onstart(); foldablehelper.start(this); } @override protected void onstop() { super.onstop(); foldablehelper.stop(); } } oncreate() calls the foldablehelper.init() to ensure that the windowinfotracker and metrics calculator gets created as soon as possible. onstart() calls the foldablehelper.start() since the first windowlayoutinfo doesn't get created until onstart(). onstop() calls the foldablehelper.stop() to ensure that when the application closes, the listener gets cleaned up. after creating the foldableplayeractivity, ensure that the game uses it. open the androidmanifest.xml file and change the activity name to the one you've just created. <activity android:name="foldableplayeractivity" android:theme="@style/unitythemeselector"> … </activity> store foldablelayoutinfo data to flexproxy implement a native listener that receives calls from java when the device state changes by following these steps: use the androidjavaproxy provided by unity in its jni implementation. androidjavaproxy is a class that implements a java interface, so the next thing you need to do is create an interface in the foldablehelper.java file. public interface windowinfolayoutlistener { void onchanged(foldablelayoutinfo layoutinfo); } this interface replaces the temporary native function. therefore, remove the code below: public static native void onlayoutchanged(foldablelayoutinfo resultinfo); then, go to assets > scripts, and right-click to create a new c# script inside called flexproxy.cs. inside this script, create the flexproxy class inheriting from androidjavaproxy. public class flexproxy : androidjavaproxy { } in flexproxy class, define the variables needed to store the data from foldablelayoutinfo and use enumerators for the folded state, hinge orientation, and occlusion type. for the various bounds, use unity's rectint type. also, use a boolean to store whether the data has been updated or not. public enum state { undefined, flat, half_opened }; public enum orientation { undefined, horizontal, vertical }; public enum occlusiontype { undefined, none, full }; public state state = state.undefined; public orientation orientation = orientation.undefined; public occlusiontype occlusiontype = occlusiontype.undefined; public rectint foldbounds; public rectint currentmetrics; public rectint maxmetrics; public bool hasupdated = false; next, define what java class the flexproxy is going to implement by using the interface's fully qualified name as below: public flexproxy() : base("com.samsung.android.gamedev.foldable.foldablehelper$windowinfolayoutlistener") { } com.samsung.android.gamedev.foldable is the package name of the foldablehelper.java file. foldablehelper$windowinfolayoutlistener is the class and interface name separated by a $. after linking the proxy to the java interface, create a helper method to simplify java to native conversions. private rectint converttorectint(androidjavaobject rect) { if(rect != null) { var left = rect.get<int>("left"); var top = rect.get<int>("top"); var width = rect.call<int>("width"); var height = rect.call<int>("height"); return new rectint(xmin: left, ymin: top, width: width, height: height); } else { return new rectint(-1, -1, -1, -1); } } this method takes a java rect object and converts it into a unity c# rectint. now, use this converttorectint() function for the onchanged() function: public void onchanged(androidjavaobject layoutinfo) { foldbounds = converttorectint(layoutinfo.get<androidjavaobject>("bounds")); currentmetrics = converttorectint(layoutinfo.get<androidjavaobject>("currentmetrics")); maxmetrics = converttorectint(layoutinfo.get<androidjavaobject>("maxmetrics")); orientation = (orientation)(layoutinfo.get<int>("hingeorientation") + 1); state = (state)(layoutinfo.get<int>("state") + 1); occlusiontype = (occlusiontype)(layoutinfo.get<int>("occlusiontype") + 1); hasupdated = true; } attach flexproxy to foldablehelper in this step, you need to attach the flexproxy to the java implementation. modify the foldablehelper.java and foldableplayeractivity.java files as follows: in the foldablehelper.java file, create a variable in foldablehelper class where you can store the listener. private static windowinfolayoutlistener listener = null; create a method to receive the native listener. public static void attachnativelistener(windowinfolayoutlistener nativelistener){ listener = nativelistener; } to ensure that the listener is actually used, modify the layoutstatechangecallback to: call the listener.onchanged, the androidjavaproxy version of onchanged function, instead of calling the existing onchanged function in the java file; and check if the listener exists at the time of calling. @override public void accept(windowlayoutinfo windowlayoutinfo) { if (listener != null){ foldablelayoutinfo resultinfo = updatelayout(windowlayoutinfo, activity); listener.onchanged(resultinfo); } } finally, in the foldableplayeractivity.java file, import windowinfolayoutlistener. import com.samsung.android.gamedev.foldable.foldablehelper.windowinfolayoutlistener; then, create a new method in foldableplayeractivity to pass the native listener to foldablehelper. public void attachunitylistener(windowinfolayoutlistener listener){ foldablehelper.attachnativelistener(listener); } implement native flex mode this section focuses on creating the flex mode split-screen effect on the game’s user interface (ui). create a new c# script in the scripts folder called flexmodehelper.cs. after creating the script, define the variables you need for this implementation. public class flexmodehelper : monobehaviour { private flexproxy windowmanagerlistener; [serializefield] private camera maincamera; [serializefield] private camera subcamera; [serializefield] private gameobject flat_ui_panel; [serializefield] private gameobject flex_ui_panel; private recttransform flex_ui_top; private recttransform flex_ui_bottom; screenorientation currentorientation; bool isfold = false; bool isflip = false; float landscapefov = 65; float portraitfov; flexproxy object is the callback object which receives the foldablelayoutinfo from java. maincamera and subcamera are two cameras creating the split-screen effect. however, flex mode does not require the use of two cameras. so, if you only need one viewport, you can remove the subcamera and replace it with any component you want. gameobjects, namely flat_ui_panel and flex_ui_panel, are the parent objects of two ui designs: flat mode (full screen) and flex mode (split screen). recttransforms, namely flex_ui_top and flex_ui_bottom, are the two child objects within flex_ui_panel to serve as the top screen and bottom screen. screenorientation object handles the field of view (fov) changes on the cover screen of the galaxy z fold series (except galaxy fold) and the screen of non-foldable devices. isfold and isflip are booleans to store whether the app runs on a galaxy z fold or z flip device and help create a consistent fov across both devices. landscapefov and portraitfov are two fov values to keep a consistent fov across both orientations of the device. noteidentification of the device where the app is running is not necessary. yet, it is recommended if you want to know how to customize the fov of the game concerning the device model. next, construct a start() method where you: create a flexproxy object and pass it into attachunitylistener on the activity using unity’s jni implementation; turn off the subcamera initially, assuming that the game starts on normal mode; identify which device the app is running using systeminfo.devicemodel. the model number of the galaxy z fold series starts with "sm-f9", while it's "sm-f7" for the galaxy z flip series; calculate the portraitfov from the landscapefov and the camera aspect ratio; set the initial fov depending on the device's orientation using unity's screen.orientation; and retrieve the transforms of the flex ui top and bottom panels. void start() { windowmanagerlistener = new flexproxy(); using (androidjavaclass javaclass = new androidjavaclass("com.unity3d.player.unityplayer")) { using (androidjavaobject activity = javaclass.getstatic<androidjavaobject>("currentactivity")) { activity.call("attachunitylistener", windowmanagerlistener); } } subcamera.enabled = false; string devicemodel = systeminfo.devicemodel; if (devicemodel.contains("sm-f9")) { isfold = true; } else { isflip = devicemodel.contains("sm-f7"); } portraitfov = camera.horizontaltoverticalfieldofview(landscapefov, maincamera.aspect); currentorientation = screen.orientation; if (currentorientation == screenorientation.landscape || currentorientation == screenorientation.landscapeleft || currentorientation == screenorientation.landscaperight) { maincamera.fieldofview = landscapefov; } else { maincamera.fieldofview = portraitfov; } flex_ui_top = (recttransform)flex_ui_panel.transform.getchild(0); flex_ui_bottom = (recttransform)flex_ui_panel.transform.getchild(1); } after the game starts, assign a task to flexmodehelper to check if there is an update in the windowmanagerlistener. the windowmanagerlistener receives a call from java when there is a change in the folded state. if a change occurs, update the currentorientation and run the updateflexmode() method. alternatively, if the listener hasn't updated, check to see if the screen has changed orientation. since the cover screen has no folding feature, flexproxy will not update as the callback won't trigger. instead, store the screenorientation and compare if it matches the current screen orientation. otherwise, change the fov because the device has just rotated. once we have figured out if the device has rotated, update the fov of the maincamera based on whether it's in landscape or portrait mode. void update() { if (windowmanagerlistener.hasupdated) { currentorientation = screen.orientation; updateflexmode(); } else { if (screen.orientation != currentorientation) { currentorientation = screen.orientation; if (currentorientation == screenorientation.landscape || currentorientation == screenorientation.landscapeleft || currentorientation == screenorientation.landscaperight) { maincamera.fieldofview = landscapefov; } else { maincamera.fieldofview = portraitfov; } } } } create the updateflexmode() method to adjust the game ui according to the folded state of the device. void updateflexmode() { } in this method, check if the folded state is half_opened. if so, enable the subcamera for it to start rendering to the bottom screen and switch the active ui panel to the one created for flex mode (flex_ui_panel). if(windowmanagerlistener.state == flexproxy.state.half_opened) { subcamera.enabled = true; flex_ui_panel.setactive(true); flat_ui_panel.setactive(false); then, check whether the orientation of the fold is horizontal. if (windowmanagerlistener.orientation == flexproxy.orientation.horizontal) { notefor this sample game, splitting the screen isn’t ideal vertically 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 to split the screen vertically, you need to use the same principle in the next step but for the x-axis instead of the y-axis. so, if the device is on flex mode and horizontal fold, adjust the ui to place the maincamera at the top and subcamera at the bottom of the screen. locate the normalized location of the foldbounds. float foldratiotop = (float)windowmanagerlistener.foldbounds.ymin / windowmanagerlistener.currentmetrics.height; float foldratiobot = (float)windowmanagerlistener.foldbounds.ymax / windowmanagerlistener.currentmetrics.height; use these to set the render areas of the maincamera and subcamera above and below the foldbounds. maincamera.rect = new rect(0, foldratiotop, 1, foldratiotop); subcamera.rect = new rect(0, 0, 1, foldratiobot); next, ensure that the fovs are consistent across the two uis. reset the field of view of each camera, and use the foldratio to ensure that the size of objects in flex mode appears roughly the same as in flat mode. also, use two slightly different fovs for the galaxy fold and flip devices. if (isfold) { maincamera.fieldofview = (landscapefov * foldratiotop); subcamera.fieldofview = (landscapefov * foldratiobot); } else { if(isflip) { maincamera.fieldofview = (landscapefov); subcamera.fieldofview = (landscapefov); } } finally, update the two child objects of the flex_ui to ensure that they line up with the position of the fold. flex_ui_top.anchormin = new vector2(0, foldratiotop); flex_ui_top.anchormax = new vector2(1, 1); flex_ui_bottom.anchormin = new vector2(0, 0); flex_ui_bottom.anchormax = new vector2(1, foldratiobot); however, if the device is not on flex mode and the orientation of the fold is not horizontal, then run the restoreflatmode() method. notify the flexproxy object that its data has been used. } else { restoreflatmode(); } } else { restoreflatmode(); } windowmanagerlistener.hasupdated = false; } create the restoreflatmode() function where you: set both cameras to render to the entire screen; disable the subcamera; and disable the flex ui and enable the flat ui. void restoreflatmode() { maincamera.rect = new rect(0, 0, 1, 1); subcamera.rect = new rect(0, 0, 1, 1); subcamera.enabled = false; flex_ui_panel.setactive(false); flat_ui_panel.setactive(true); also, check to see if the folded state is undefined, which means that the app is running on the cover screen of a galaxy z fold device. if so, treat the screen as a rectangle and use either the landscapefov or the portraitfov depending on the orientation. additionally, since the app might have been initially opened on the main screen of a galaxy fold device, recalculate the portraitfov using the aspect ratio of the cover screen. if the folded state is not undefined, then the app is opened on the main screen of either a galaxy z fold or z flip. in this case, set the fov accordingly by using the isfold boolean to check. if the boolean returns true, treat the screen as a square. otherwise, treat it as a rectangle and set the fov based on the orientation. if (windowmanagerlistener.state == flexproxy.state.undefined) { if (currentorientation == screenorientation.landscape || currentorientation == screenorientation.landscapeleft || currentorientation == screenorientation.landscaperight) { maincamera.fieldofview = landscapefov; } else { if(isfold) portraitfov = camera.horizontaltoverticalfieldofview(landscapefov, maincamera.aspect); maincamera.fieldofview = portraitfov; } } else { if (isfold) { maincamera.fieldofview = landscapefov; } else { if (currentorientation == screenorientation.landscape || currentorientation == screenorientation.landscapeleft || currentorientation == screenorientation.landscaperight) { maincamera.fieldofview = landscapefov; } else { maincamera.fieldofview = portraitfov; } } } } set up flex scene return to the unity editor and create an empty gameobject in the scene. right-click on the sample scene > gameobject > create empty and name it flexmanager. select the flexmanager object, then drag and drop the flexmodehelper script into the inspector pane. then, select the cameras and ui panels like below: build and run the app go to file > build settings and ensure that the scenes/samplescene is selected in scenes in build. click build to build the apk. after building the apk, 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 unity game app by yourself! if you're having trouble, you may download this file: flex mode on unity complete code (631.05 mb) to learn more, visit: www.developer.samsung.com/galaxy-z www.developer.samsung.com/galaxy-gamedev

      https://developer.samsung.com/codelab/gamedev/flex-mode-unity.html
      1. Learn
      2. Code Lab

      codelab

      Develop a Camera Web App on Foldables

      develop a camera web app on foldables objective learn how to develop a camera web application that detects partially folded posture and adjusts its layout accordingly to improve user's experience on samsung foldable devices. in order to create a camera web app for foldable devices, you will use the following: html5 and css modern features webrtc device posture api viewport segment api overview foldable devices are here! these smartphones allow different form factors with just one device, which can lead to new opportunities for innovation. as developers should be able to detect what is the current posture of the device, the physical position in which a device holds, samsung is putting an effort within the w3c on making a new web standard called device posture api. this api allows web applications to request and be notified of changes of the device posture. together with the device posture api, the viewport segment api enables web developers to build layouts that are optimized for the dual-screen form factor of foldables. web apps can take advantage of the new form factors and improve user's experience. set up your environment you will need the following: samsung internet (at least v19.0) samsung galaxy foldable device: galaxy z fold2, z fold3, or z fold4 galaxy z flip, z flip3, or z flip4 if physical device is not available for testing, use: a. remote test lab requirements: samsung account java runtime environment (jre) 7 or later with java web start internet environment where port 2600 is available b. device posture api polyfill for testing using a non-foldable device, just implement a polyfill to the project. start your project open a new browser tab, go to https://glitch.com, and log in. click new project, then select import from github. enter the url of this repository. add html video markup notetake a look and check the files of your project before starting to code. in index.html, you will have two main sections, one is dedicated to the video camera and the other one to the camera controls. you can identify the video section as it contains the class video-container. complete the html markup by adding the <video> element, width, height, and id attributes. <div class="video-container"> <video id="video" width="1280" height="200" > video stream not available. </video> </div> once the video markup is added, the html file is complete. besides this, you can find: a <canvas> element into which the captured frames are stored and kept hidden, since users don’t need to see it. an <img> element where the pictures will be displayed. enable front and back cameras with facingmode in index.js, you'll find a startup() function. here is where you: initialize most values. grab element references to use later. set up the camera and image. start by setting up the camera. you will have access to both front and back cameras by using facingmode, a domstring that indicates the direction on which camera is being used to capture images. it's always a good practice to check if this function is available for use. add the following lines of code in startup(): let supports = navigator.mediadevices.getsupportedconstraints(); if (supports["facingmode"] === true) { flip_button.disabled = false; } link the media stream to the video element if you are able to use facingmode, the camera web app will use this option in capture function to detect which is the current camera used and later send it to the flip button. now, the camera should be activated, insert this block of code after retrieving defaultopts.video value using facingmode: navigator.mediadevices .getusermedia(defaultsopts) .then(_stream => { stream = _stream; video.srcobject = stream; video.play(); }) .catch(error => console.error(error)); in order to get the media stream, you call navigator.mediadevices.getusermedia() and request a video stream which returns a promise. the success callback receives a stream object as input. it is the <video> element's source to the new stream. once the stream is linked to the <video> element, start it playing by calling video.play(). it's always a good practice to include the error callback too, just in case the camera is not available or the permissions are denied. take a look at the implementations in index.js at this point, the functionality of the web app is complete. before moving to the next step, let’s review the rest of the javascript code: there is an event listener video for the canplay event, which will check when the video playback begins. if it's the first time running, it will set up video attributes like width and height. for the snip button, there is an event listener for click that will capture the picture. the flip button will be waiting for a click event to assign the flag about which camera is being used, front or back camera, within the variable shouldfaceuser, and initialize the camera again. clearpicture() creates an image and converts it to a format that will be displayed in the <img> element. finally, takepicture() captures the currently displayed video frame, converts it into a png file, and displays it in the captured frame box. use device posture and viewport segment apis at this point, you should have a working prototype of a camera web app. the video camera should be displayed, and a picture may be taken using the snip button. in addition, it will show a preview of the picture taken through the small preview display. the flip button allows you also to switch between front and back cameras. now, it's time to play around the layout of the web app and take advantage of the features available on a foldable device. in order to do that, you will implement the device posture api that allows developers to detect what is the current posture of the phone. in order to change the layout when the device is partially folded, the device posture that you will look for is in a form of a book or laptop. the viewport segments api, in the other hand, is an experimental media feature designed to detect if your website is being displayed on a dual-screen device. the media feature for this is called viewport-segments. there are two types: horizontal-viewport-segments and vertical-viewport-segments. you can use these media queries combined with the device posture api to also check if the device is currently in a horizontal or vertical orientation within its hinge, which can be really helpful for samsung devices. the galaxy z fold devices have a vertical hinge orientation while the galaxy z flip devices have a horizontal hinge. with the viewport segment api, you can use horizontal-viewport-segment for galaxy z fold devices and vertical-viewport-segments for galaxy z flip devices, as illustrated on the diagram below. apply the following media query in style.css: @media (vertical-viewport-segments: 2) and (device-posture: folded) { body { display: flex; flex-flow: column nowrap; display: block; } .camera-controls { top: env(viewport-segment-top 0 1); height: env(viewport-segment-height 0 1); } .msg { display: block; margin: 3em; } } using modern css features like display:flex, you can change the layout of the body element and the elements with the class video-container and camera-controls when the device is in flex mode. test your app whether you test on a real foldable phone or on a remote test lab device, you need to enable the device posture api in the latest version of samsung internet. to do this, open the browser and type internet://flags in the url bar and search for either device posture api or screen fold api, then select enable. test in a real device if you have a real physical device, you can test it directly in samsung internet using the url that glitch provides you by clicking on show in a new window menu. just partially fold your phone, and you will see how the layout changes and even discover a hidden message! use remote test lab the other option, if you don’t have a physical device, is by using remote test lab. you can choose any galaxy foldable devices from the list and follow the same instructions as you would with a real device. just make sure to enable the device posture api and have the latest version of samsung internet. use the buttons provided by remote test lab to partially fold your remote galaxy device. implement polyfill polyfill allows you to emulate behavior on devices that do not have folding capabilities. it helps you visualize how the content responds to the different angle and posture configurations. just include sfold-polyfill.js directly into your code and use the polyfill settings (screenfold-settings.js) of the web component that will emulate the angle of the device and therefore, it will change its posture. moreover, add the following code in index.html. <head> … <script type='module' defer src="screenfold-settings.js"></script> <script src="sfold-polyfill.js"></script> … </head> <body> <section> <screenfold-settings></screenfold-settings> </section> … </body> noteas the current polyfill has a previous version of api just replace the media query with following situations: when testing using a personal computer either a laptop or a desktop, use @media (screen-fold-posture: laptop) when testing using a regular phone that's not a foldable, use @media (screen-fold-posture: book) you're done! congratulations! you have successfully achieved the goal of this code lab. now, you can create a camera web app that changes its layout when a device is partially folded. if you're having trouble, you may check the complete code here. learn more with these resources: overview of galaxy z web responsive design of foldable devices folding the web current web on galaxy fold viewport segment api

      https://developer.samsung.com/codelab/internet/foldable-camera-app.html
      1. Learn
      2. Developers Podcast

      doc

      Episode 7, Eric Cloninger

      season 2, 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 eric cloninger, lead, developer relations team, samsung electronics chris shomo, infinity watchfaces listen download this episode topics covered sdc21, virtual conference history of the samsung developer conference conference audience keynote speakers conference announcements technical sessions expo floor galaxy store gallery code lab virtual reality after-hours party chris shomo, infinity watchfaces watch face studio 2020 best of galaxy store awards 2021 best of galaxy store awards bixby developers one ui beta samsung podcast platform smartthings helpful links sdc21, virtual conference - developer.samsung.com/sdc sdc18 highlights - youtube video sdc19 highlights - youtube video sdc19 replay - youtube video sdc21 preview - youtube video code lab - developer.samsung.com/codelab chris shomo, infinity watchfaces - youtube video watch face studio - developer.samsung.com/one-ui-watch 2020 best of galaxy store awards - youtube video 2021 best of galaxy store awards preview - youtube video bixby developers - bixbydevelopers.com/ one ui beta - developer.samsung.com/one-ui-beta/index.html samsung podcast platform - samsungpodcasts.com/ smartthings - developer.samsung.com/smartthings samsung developers homepage - developer.samsung.com samsung developers newsletter - developer.samsung.com/newsletter samsung developers blog - developer.samsung.com/blog samsung developers news - developer.samsung.com/news samsung developers facebook - facebook.com/samsungdev samsung developers instagram - instagram.com/samsung_dev samsung developers twitter - twitter.com/samsung_dev samsung developers youtube - youtube.com/samsungdevelopers samsung developers linkedin - linkedin.com/company/samsungdevelopers eric cloninger linkedin - linkedin.com/in/ericcloninger/ chris shomo linkedin - linkedin.com/in/christopher-shomo tony morelan linkedin - linkedin.com/in/tony-morelan 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 pow! 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 two, episode seven. today's show is a special episode of the pow! podcast. last year, we were not able to have our annual samsung developer conference because of the pandemic. but this year, we're back with sdc21, a virtual conference this coming october, i sat down with eric cloninger, who leads developer relations at samsung. not only do we talk about some of the highlights from our past developer conferences, but what you can look forward to at this year's sdc21. enjoy. hey, eric, welcome to the podcast. eric cloninger 00:51 hey, tony. glad to be here. tony morelan 00:53 so i couldn't be more excited about this special episode where we get to chat about not only the past samsung developer conferences, but our upcoming sdc21. eric cloninger 01:03 yeah, it's gonna be a lot of fun. it is different this year for certain. tony morelan 01:06 let me first start off by asking what exactly is the samsung developer conference, eric cloninger 01:11 samsung creates a lot of different platforms and sdks for developers to create for and integrate with. so sdc is one of the ways we promote our platforms, and educate developers on their capabilities. like many companies, we realized that developers add a lot of value to our products with their own creations. so sdc is our opportunity to share knowledge and hopefully build a connection to the people that are making our products better. tony morelan 01:36 yeah, and what's unique with sdc 21 is this year, it's actually going to be a virtual conference. now we know that it's because the current pandemic we're in, but it's, i think, an opportunity for samsung really to reach to a much bigger global audience that will be able to come in and attend our conference. eric cloninger 01:55 certainly, you know, in the years past, it's been a live event. and there would be quite a few people there -- several thousand. now with it being virtual, we have a much bigger audience and people can actually see the technical sessions as well as the keynote online. even though it's not in person, it is still something that where we can share knowledge, and people can give us feedback on what they like and don't. tony morelan 02:21 let's go back and talk a little bit about the history of sdc. i think it started back in 2013. is that correct? that's correct. eric cloninger 02:29 and i was there in 2014, talking about the gear watch. tony morelan 02:34 development. wow, that must have been pretty close to when we first launched the watch. eric cloninger 02:39 i think it was the first gear s was the product that that i was working on. and we were talking about development tools and how to write apps for those watches. tony morelan 02:49 since then, we've done seven sdcs that, you know, there was a year i think around 2015 that we skipped. and of course last year, we did have to hold off on doing an actual conference. past locations, primarily san francisco in the bay area. eric cloninger 03:06 it's been at moscone every year until 2019, when it moved to san jose. so it's always been in the bay area somewhere that people who attend tony morelan 03:15 tell me about, you know, what is what is the audience. eric cloninger 03:19 the audience is primarily developers. and the content is really focused on that group. a lot of samsung employees attend to give the technical talks and a lot to people come from all over the world to work in the booths. and on the show floor. in one sense. sdc is like a family reunion, we get a chance to meet the people that we've emailed with and been on web conferences for a long time. that's a chance to come together. but it's also the fruition of a year of hard work, you'll whether it's virtual or in person, we can use the opportunity to celebrate and to share what we've worked on with third party developer community. tony morelan 04:05 yeah, i know, my first sdc was 2018. that was in san francisco. i hit started at samsung just a few months earlier than that. so it was a great opportunity, really, for me to meet, not just some of these employees that had only been, you know, emailing with but a lot of the partners that we had a great report with sdc 19 eric cloninger 04:29 i think there was over 5000 close to 6000 people that it's been five to 6000 every year since that i've been here. yeah, so that's a fairly good-sized conference. tony morelan 04:37 so let's talk about some of the past keynotes and some of the big announcements that we've made. going back to 2017. i think we had stan lee, is that correct? eric cloninger 04:47 yeah, stan lee from marvel was one of the main speakers. that was pretty interesting. in 2018, we had a lot of people watching because that's the day that they announced the galaxy fold. wow. so the first time anybody saw it was on stage at sdc. and there were probably a half a million people watching live on either facebook live or youtube. tony morelan 05:13 i remember my takeaway from sdc18 was tim sweeney for fortnite. epic games? eric cloninger 05:18 absolutely. on stage with one of our vps who was holding your tiny sword and shield. you know, it just it added to the silliness, but also the fun was pretty, pretty fun. tony morelan 05:33 oh, definitely. now sdc 19. we had another very interesting person up on the stage talk a little bit about vitalik. eric cloninger 05:41 yeah, vitalik buterin is the co-founder of ethereum. and that year, we also had justin sun from tron. the blockchain community is very interesting. and it's definitely a new aspect for samsung is we had the blockchain wallet sdk that was coming out that year. and so we wanted to have people that could talk about their interactions with it. so vitalik and justin, were on stage in the spotlight session on day two. tony morelan 06:09 yeah, that was pretty exciting actually, to see him up on stage they're in live in person. so a big part of our conference are the technical sessions, it's a chance for the community really to learn about new and upcoming technologies. talk a bit about some of those sessions that we've had in the past. eric cloninger 06:27 so pretty much any of samsung's technical features sdks and services have sessions at sdc. so if you're interested in ai and voice activated services, you can go to multiple bixby sessions, if you're into the internet of things and how to integrate into samsung smartthings ecosystem, there will be information there. you know, as i mentioned previously, there's blockchain, there's the knox partnership for if you want to do secure computing, one ui if you're a designer, and all the new foldable phones and devices out there, there's a lot of content around how to handle app continuity and the flex mode, as well as the unique things about foldable design that you can learn about, as well as things like samsung health and how to design for themes. there's a wide range of technical sessions for pretty much anybody at any experience level. tony morelan 07:24 yeah, yeah, in my area of involvement with the developer conference has been around that design side. i mean, as you know, my background is in design, you know, when we are giving the sessions on theme, designing watchface designing that that's really where i get my involvement with. so a lot of fun for me to be at the conference. walking around the expo floor has been one of the most exciting things for me to be there because truthfully at these different conferences, you just don't know what you're going to see. and i remember walking in the room if it was sdc 18 or 19. but seeing this awesome car on the expo floor, the harmon car. eric cloninger 08:00 yeah, the great thing about the expo floor is where you, you get to do a lot of the kind of non-technical learning. it's a great place in a more relaxed atmosphere to meet and talk to people about what's going on. so the harmon car harman is a subsidiary of samsung, and they create high end audio equipment. so i'm sure you're familiar with brands like harman, kardon, or jbl, or infiniti, all very high-end brands. harman also creates infotainment systems and telematics solutions for automakers. and so what they would do for several years is they would bring a car onto the show floor and deck it out with a lot of the latest software and hardware, as well as the audio systems for the attendees to sit in the car and try it out. unfortunately, they wouldn't let us drive it around the show floor obviously. tony morelan 08:47 i will say i actually did ride the elevator with the person who drove the car from southern california up to northern california for the show. so i did get to ask a little bit about you know what it is like to get behind the wheel of that car and she said it was an absolute blast to drive it up five. eric cloninger 09:04 i'm sure they had to go the speed limit though. tony morelan 09:06 definitely. i know that smart things. back in 14, one of our first conferences they actually set up like what they call the connected home. eric cloninger 09:14 yeah, it was actually a full size when not full sizes about a 900 square foot, you know, a 30 by 30 area where they had different rooms and inside each of those rooms, they would have different ways that you could integrate different iot solutions into the smart home. tony morelan 09:32 now just to be clear, a 900 square foot home in san francisco actually is full size. so in 2018, we did something i was actually pretty excited about we created what we called a gallery of theme. so you know as you know, with the galaxy store, designers can publish their phone themes, but what we did is we took those designs and actually built like a museum gallery big, full size images of the different themes nicely framed, and people would walk around this gallery. and not only see this beautiful, much larger than life theme design. but this was a gallery where at the end of the conference, we actually raffled off the different pieces, eric cloninger 10:15 it really shows how we have a lot of incredibly creative people who are creating work for the galaxy store, and samsung galaxy devices. all of those things that were shown in that that gallery are available for anyone to download and purchase on the galaxy store. tony morelan 10:31 yeah, i know that that gallery really, really was a success in a lot of people really enjoyed seeing that worked in person. another area of the floor that i saw had a lot of activity was code lab, talking about what exactly is code lab at the at the conference. eric cloninger 10:46 code lab is an interactive learning experience, you don't have to actually be present at sdc. to be able to use it. samsung employees create guided learning modules, with examples and downloadable code snippets that you can use to learn anything from android development, watch face design, or theme by the time you've gone through everything. tony morelan 11:13 so if people want to learn more about code lab outside of the conference, where can they find that information, eric cloninger 11:18 you can find the code lab on the samsung developer portal at developer.samsung.com/codelab. tony morelan 11:26 so i think one of the most exciting things that i saw happen on the expo floor was the vr team, they set up this like photography studio that talk about that. eric cloninger 11:36 so in 2018, that team created what was called a volumetric camera setup. so it had cameras in a lot of different positions in 360 degrees. so they would take a very detailed scan of your body, and then they would print it out on a 3d printer. and so that was really cool. and then the following year, that same team took that that same type of technology, and they integrated it with a live interactive experience called delusion. and delusion was a very creepy, interactive experience where you interacted with all of these crazy characters. and because of the time of the year, it was october 29, and 30th. so it's just the day before halloween, okay, you had all of these various characters that you were interacting with in a 3d experience. and the thing that was cool about it was the second night, we had this, you know, after hours segment and those characters in the game that actually came to life, and you actually saw these people walking around that you had interacted with, in the interactive exhibit. tony morelan 12:49 yeah, i remember that being a very fun and freaky evening, i was i was working in one of the booths behind the scenes doors were closed. and as they were prepping for the opening of the of the doors, the fog machine was rolling, that people started rushing in. and then i saw those characters that had been in that interactive space, actually walking amongst the people. and there were a few times that in a fun way, those a little not at ease with them with those different folks. eric cloninger 13:23 yeah, it was kind of a creepy experience. because some of those characters, i mean, they stayed in character, and they got to look right through you. and it just it was very creepy experience. so the after-hours is a lot of fun at you at sdc. as it is, with a lot of events, it's an it's an opportunity to kind of be a lot more relaxed. you'll see some people that you saw in the, the technical sessions earlier in the day, and you have a chance to maybe drill down a little deeper while you have, you know, a plate of food and beverage in your hand. so it's a good experience overall. and you know, to be honest, i'm looking forward to when we can do that again. tony morelan 14:02 yeah, yeah, hopefully, hopefully that will be next year. so i thought it would be nice if we brought in a designer slash developer who has been very involved with the samson community and who has not only attended and many of the past sdc conferences, but was also invited to speak at one of the past sessions. chris shomo, from infinity watchfaces eric cloninger 14:20 hey, chris, welcome to the show. chris shomo 14:23 hey, thank you for having me on here. tony morelan 14:25 yeah, no, it's great. it's great to have you on the podcast. so looking back at the samsung developer program, chris has been one of those resources that we've turned to many times and it simply comes down to not only your success, but your willingness to share and, and really help grow the entire ecosystem for samsung watchfaces and galaxy devices. chris shomo 14:43 well, one thing that i've learned is all about the community. that's one of the reasons i love to share things that i find out because i've also reached out to other designers and ask them, you know, hey, how do you do this? how do you do that? and they're more than willing to share back. so it really is a given. take type of thing and you know, if you're nice, then you can find some answers that you're looking for out there. tony morelan 15:04 there you go. definitely. and you know, honestly, the more success there is amongst all the designers just the more vibrant the galaxy store is just with, with lots of great content. chris shomo 15:13 oh, yeah. and just how it developed over time, too, because, like i've seen it, since the very beginning, when there was hardly anything on there and then just watching it explode to all these designs that you can't even imagine what's going to pop on there next. it's exactly designed to blow me away all the time. tony morelan 15:29 so chris is the person behind infinity watch faces, and truly is one of the first designers who started creating for the platform. tell me what year was it that you actually started designing and selling on galaxy store? chris shomo 15:39 oh, goodness. 2016. tony morelan 15:41 wow. yeah. so i actually did an episode on the podcast on chris last year, it was great episode, we talked about how you got your start creating for samsung and, and also that your house in savannah, georgia was featured in an episode of ghost hunters that it is haunted? chris shomo 15:56 yes, it is. it's been quite an experience, even though i do believe that the ghost does appreciate me being here, i believe. i do not know that. but she's been pretty nice. tony morelan 16:08 guys nice. so if you want to learn much more about chris, go back to that episode and check it out. it was it was a great show. so in 2017, before i started working with samsung, you were actually invited to come out to san francisco and speak at the conference. tell me about that. chris shomo 16:22 wow, it was quite an experience. and first off, it was my first developers conference, first type of any type of tech conference. so i was a little nervous in the very beginning. because here i am, i'm going to san francisco, and i'm getting ready to speak in front of a lot of other designers and developers. what an experience. it was great. tony morelan 16:43 i'm sure it was nice to actually meet also the people, you know, not only at samsung, but then you know, some of the fellow developers that are part of this community. chris shomo 16:51 yeah, and also met a lot of people that became future designers of for specifically watch faces, which was wonderful. they always come back to me and be like, hey, i was there. and i'm like, i remember you. and you know, and they take off and they do very well. yeah. tony morelan 17:06 so i actually came across a video on youtube of you speaking at the conference. and that's how i actually got my start how i first discovered that, you know, you can create these watch faces and, and start selling them for samsung. now, i took it a step further and actually started working for samsung eventually. chris shomo 17:23 yep. and i think that's amazing. i remember you sent me an email one time actually telling me that i had a typo on my website. that's right. and i was like, whoa, thank you, because it was just, uh, you know, no one wants a stupid typo on their website. so i got that fixed. and, and then i never knew that, you know, i'd be working with yeah, back and forth, like we are now and stuff. so it's great. it's amazing how everything is connected. tony morelan 17:49 yeah. so earlier this year, we announced a partnership with google and warehouse and introduced watch face studio to new tool for designing galaxy watch faces that are sold on the google play store. when the tool was first developed, we asked you to be part of that early access team. so can you tell me about that experience, how it is working with that tool, and what it's like to now publish on google play? chris shomo 18:10 well, first off, thank you for getting me in there. and you recommended me for being part of that team. and it was excellent to be part of it, because i was able to kind of push it to its limits for animations. i had a really long animation, i was testing with it. and i was sending it back and forth with samsung. and it helped them iron out and smooth out how the animations were working on the watch. and that was great. and, you know, of course, there's going to be a little bit of growing pains in the very beginning. we're working on that. but it's been amazing how the team at samsung has been so responsive. and to get the software right for us. you can really create some masterpieces. so i'm excited about this. tony morelan 18:55 yeah, and that's why i thought it was so important to have you part of that team is because really your designs are not like the typical design. i mean, you really do push the software to try and get the most out of it. you know, they're there's fun, they're quirky, i mean animations are a huge part of your designs. so is there anything new and exciting that we can anticipate coming out in the in the near future? chris shomo 19:15 oh, wow. i don't really know myself because i kind of jumped around so much with these designs, which is another reason why. yeah, i guess it's kind of unexpected and surprising when another one comes out. at one time you'll have like dancing tigers in the next second. you have dolphins and sea turtle swimming. i'm working on getting one onto the google play store right now called flip out that has the dolphins and the sea turtles and then tiger time as well. and then we got a giant eyeball for halloween that she's showing up. so yeah, a bunch of different things. tony morelan 19:48 you've got it in there. they're super crazy. they're very artistic. chris shomo 19:51 thank you. yeah, and it also one of the things that i like to concentrate on is trying to bring joy to people with the watch face. is where they look at it and you know, just for a moment of time, they can actually, you know, take a break from reality, they get absorbed into the watch smile for a minute. if that happens, and i know it's exceeded tony morelan 20:13 it also what i love is how you build in this sort of like goals where the watch will change, like, lets you step into an example, as you're reaching your different step goals throughout the day, your watch face then is also changing throughout the day. chris shomo 20:27 and that started out of course, with the ties and watches and it worked with every one step goal percentage that they set with the watch. and that was another thing that i'm glad i was in the beta because i was really expressing how much we needed a step goal percentage and to work with it, and they added it in after i requested it. and it was really quick. and of course there are some differences where we have to set the watch pace to its unique step goal as opposed to the user set step go but that's because of that they're trying to make it so it's compatible with all the different watches and where it was. but that's cool, it opens up a new line of challenge faces where you can reach 1000 steps for this to happen 2000 steps for this to happen and i think it's really going to open the door for a lot of unique and creative designs tony morelan 21:17 you know, you brought up a great point that i always stress and that is how approachable samsung is to our developer community. samsung really does listen to our developers and we actually want to have that one on one communications you know, through our different channels, it is really easy to reach out to us and we'll give you that that personal attention that we know our developers need when they're creating for samsung. chris shomo 21:39 and i've really watched the developers program grow over time too because back in 2016 you know it was kind of a shot in the dark but everybody was like new to it. samsung was new to this the watch faces and working with this well ready to be flooded of designers that are getting ready to come in. and then every one of samsung embraced us. we feel like we're part of a family. tony morelan 22:02 thanks. thanks, chris. i got to thank you for jumping in and joining us on the podcast when sdc is back in person. i hope to see you there, if not sooner, i will definitely be there. chris shomo 22:10 count me in. tony morelan 22:12 awesome. thanks, chris. thanks. eric cloninger 22:15 it was great to hear from chris. he's a part of the community of designers and developers that really make the galaxy store special. tony morelan 22:22 yeah, he's been there from pretty much day one. so it was great to catch up with chris. and like i said, i can't wait to actually see him in person. so it past sdcs, we've done what's called the best of galaxy store awards, i think, sec. 18 was the first time that we did the show at the conference. sec 19. that's when i actually hosted it down in san jose, it was great. we have a lot of the winners actually, at the conference, we're able to recognize them for the great apps that they've created for galaxy store. however, last year in 2020, because we did not have a conference, we did a virtual award show. this was presented on youtube as a life premiere. and it really actually was a lot of fun because we were able to reach out to a quite a big audience. eric cloninger 23:09 one of the things i thought was cool about that once we all said in the chat room, it was in the early evening us time, but there were people logging in from russia and the czech republic and slovenia. all of these developers and designers who had created things in one go is the middle of their night, but they were on there congratulating each other. tony morelan 23:29 i think it really shows how the award show is really a global award show. i mean we've got winners from all around the world winners from large companies down to indie designers and developers and it really is a huge, huge community. eric cloninger 23:45 i think it shows how the galaxy store enables a lot of smaller operations, smaller individuals who may get lost in a larger organization that they can actually create something and monetize it and enjoy the success that they can have from their own work. tony morelan 24:03 yeah, no that's very true. that being said, though, there have been some pretty big names that we've recognized with awards. in the past we've given awards to tik tok, epic games fortnite, microsoft with their franchise forza, top golf, that was another one and then there's a great company butterfly affected that his license big brands like spongebob, hello kitty, and star trek, it was great to see them recognized for their work. eric cloninger 24:31 and also last year, for the first time, bixby developers had the opportunity to have their capsules judged. and in 2020 the winner was spotify. tony morelan 24:43 yeah, it was a lot of fun. i actually worked on many of the trailers that were shown in the award show. and spotify was one of the ones that i really, really enjoyed doing, not only the voiceover for but integrating the music and all the editing that was that was a lot of fun to work on that project and we look forward to that in 2021. eric cloninger 24:59 and so when is the award show this year. tony morelan 25:05 so the award show will be part of sdc. so that is on october 26. later on in the evening, though, we're going to be doing a premiere on youtube at 6pm. eastern, and we will be participating in a live chat. so we would love for, you know, not only the winners will be on participating in this live chat, but we would love just to have the community on there. so we can all get together as a chance to, you know, congratulate the winners, and really talk about all of the great apps that were recognized during the award show. eric cloninger 25:35 yeah, the one thing about this, that i think we did have a lot of fun with it last year, and we hope to have more fun this year. in that chat session, the invitation goes out to really everyone who is interested in the galaxy ecosystem. and that could be anybody who is a user or a consumer or a developer or a designer. you know, we want to we want to celebrate everyone's hard work. tony morelan 25:59 definitely, definitely. and if you would like to actually go back and see who the previous winners are, and actually learn more about this upcoming award show, you can go over to developer.samsung.com forward slash awards to learn more about the best of galaxy store award show. so let's talk about sdc 21. as you know, it's a virtual show that will be on october 26. where can people find out more information about registering to attend the virtual conference? eric cloninger 26:28 so the conference is free for anyone to attend, and you can learn more at developer.samsung.com slash sdc. tony morelan 26:38 let's talk about some of the sessions. what can you share about the sessions at sdc 21? eric cloninger 26:44 well, i don't want to steal any of the thunder from the product teams have been working so hard for the last year. but it will tell you that most every technology team that is working on products at samsung will have something to talk about at sdc. so if you're interested in the one ui beta, you'll learn a lot more about that at the sessions, the watchface tools, there's a podcasting platform that's brand new that i think you know something about, tony morelan 27:09 yeah, yeah, no, i am helping out the podcast platform team. we're excited. samsung has their new podcast platform, making it easy for users to listen to podcasts. and we're really excited because in october, we're going to be expanding this platform to countries in europe. so it's really a big deal. you can check out my session and i kind of walk you through how it is that you submit your podcast to samsung. so do you have any insight on what is going to be featured in the keynote, eric cloninger 27:38 i do have a little bit of information to share. and one of the things that is always kind of fun with the keynote at sdc is that samsung president dj koh will be speaking as well as many other people from within the design and engineering teams at samsung. as you know, the last physical sdc was in 2019, your seems like our world has kind of stopped. but to be honest, the pace of technology keeps on moving. and so nearly every samsung technology team will be there. and they want to talk about all the innovation creation that they've done in the last two years. so there'll be things announced for nearly every technology team from bixby and smartthings to mobile devices and smart tvs. there's lots of information for developers that they will be able to use to create their own products for 2022 and beyond. tony morelan 28:34 so really exciting. sdc 21 is going to be october 26. eric cloninger 28:39 and if you want to attend, all you have to do is register at developer.samsung.com/sdc. it's free to attend and we would love to see you there. tony morelan 28:51 excellent. hey, eric, thanks so much for being on the podcast. super exciting to be back at it with sdc and i can't i can't wait for it. eric cloninger 28:59 oh, absolutely. it's really, it's the result of a year's worth of work by hundreds of people. and we really want to share it with all the people out there. tony morelan 29:10 yeah, it should be a great show. right. thanks, eric. all right. eric cloninger 29:13 thank you, tony. closing 29:14 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. tony morelan 29:30 the pow! podcast is brought to you by the samsung developer program produced by tony morelan.

      https://developer.samsung.com/developers-podcast/s02e07-eric-cloninger.html
      1. tutorials | galaxy watch

      blog

      How to Customize and Enhance Text Elements on a Watch Face

      watch face studio (wfs) is an intuitive graphical tool that provides designers a means to design watch faces for the wear os smartwatch ecosystem without the need for coding. basic information on a watch face is typically presented as text, and watch face studio enables you to customize how the text is displayed. this article introduces three features you can use to enhance the text on your watch face design: tag expressions curved text bitmap fonts you can follow along with the demonstrations in this blog by downloading the sample project. tag expressions tag expressions enable you to create watch face components for which the rotation, placement, and opacity changes based on tag values. the tag values represent watch data, such as the date and time, battery status, sensor and health data, moon phase, and mathematical operations. for example, you can create a watch face that shows the date and time, and a progress bar that fills up each minute. this section describes how to implement this using tag expressions. to implement the dynamic watch face: create a text component. in the "properties" panel, select the text field text box. select the tags button that appears. figure 1: tags button to add the hour text, from the tag list, select [hour_0_11], then select done. figure 2: tags list similarly, to add the minutes text, create a text component with the [min] tag. to implement the progress bar for the seconds display: a. create a progress bar component. b. define its value as the [sec] tag and set its maximum value to 60. create text components for the date-related elements: [day_week_f] (day of the week), [mon_f] (name of the month), and [day_1_31_z] (day of the month). note : you can also display the weekday and month information as numbers, by using different tags. keep in mind that in watch face studio, sunday is the first day of the week. the following figure shows the progress bar on the watch face after some visual adjustments. figure 3: seconds progress bar on watch face for more examples of tag expression implementation, see the tag expressions code lab for watch face studio. curved text you can place text around a curve by selecting from predefined angular ranges, or by defining a specific start position and distance. you can also easily set the text direction. to place curved text around the top of the watch face: create a text component and define the text you want to display. in the "properties" panel, select apply curved-text. select ok. the curved text settings appear. in the "curving" fields, define the width and height of the circle or oval around which the text is to be placed. the width and height values are in pixels. for this demonstration, set both the width and height to 436. to place the text around the top of the watch face, in the "range" section, select the upper half circle. figure 4: configuring the curved text the following figure shows the curved text on the watch face after some visual adjustments. figure 5: curved text on a watch face note : you can also implement curved text on complications. bitmap font bitmap fonts enable you to replace information on the watch face, such as digits, symbols, and day of the week, with customized images. use different icons and images in the bitmap font to make your watch face more interesting. to implement icons for the am/pm tag: create a text component. in the "properties" panel, select the text field text box. select [ampm] from the tags list, and select done. figure 6: am/pm tag in the "text appearance" section, select bitmap font. open the "bitmap font setting" dialog. figure 7: bitmap font configuration in the "bitmap font setting" dialog, select the other tab. to add an image for a specific string, select + and browse to the image on your computer. do this for both the "am" and "pm" strings. to close the dialog, select ok. figure 8: adding a bitmap font image the watch face displays the selected images in place of the "am" and "pm" text strings. a watch face can have multiple bitmap fonts. you can add another bitmap font from the dropdown menu and apply different bitmap fonts to different text elements. figure 9: creating another bitmap font note : the sample project contains two bitmap fonts. conclusion watch face studio provides various text options for the watch face. the text customization features described in this blog can help you create an eye-catching watch face. resources for more information about watch face studio, see the watch face studio documentation. you can also visit the samsung developers forums, an active and friendly community where you can ask for and receive help with your application development. the samsung developers site has many resources for developers looking to build for and integrate with samsung devices and services. stay in touch with the latest news by creating a free account and subscribing to our monthly newsletter. visit the marketing resources page for information on promoting and distributing your android apps. to learn more about customizing your watch face, see also the design complications using watch face studio blog.

      Most Fowziya Akther Houya

      https://developer.samsung.com/sdp/blog/en-us/2022/11/01/how-to-customize-and-enhance-text-elements-on-a-watch-face
      1. Learn
      2. Code Lab

      codelab

      Create a Watch Face Using Tag Expressions

      create a watch face using tag expressions objective learn how to create a watch face that responds based on the date, time, step count, heart rate, and battery level using tag expressions in watch face studio. in this code lab, you will start by creating a basic watch face with complications such as step count, heart rate, and battery level. later on, you will improve its functionalities and make it visually dynamic by utilizing tag expressions. overview watch face studio is a graphic authoring tool that enables you to create watch faces for wear os. it offers a simple and intuitive way to add images and components, and to configure the watch movement without any coding. watch face studio supports watch faces for the galaxy watch4 or newer version, and other watch devices that run on the same platform. tag expressions are conditions in watch face studio that allows you to customize watch face through dynamic configuration of its movement and data. set up your environment you will need the following: watch face studio galaxy watch4 or newer any supported wear os watch start your project create a new project and input project name. a blank studio will show upon clicking ok. add analog hands and index watch face studio allows you to add different components like text, image, shape, analog hands, and index in a watch face. for your watch to have the look and feel of an analog watch, add the following components: time > index (index_gentle) time > analog hands > minute (watch_min_gentle) time > analog hands > hour (watch_hour_gentle) you will see that the hands are moving automatically and in sync with the device time. select all the newly added components and click group. rename the group as group_analogtime. use a progress bar for seconds a component like progress bar can be used to show how much of the process is completed and how much is left. in this step, you will use it to show how far or close the next minute is. to use a progress bar as seconds: click add component and select progress bar. rename the component to seconds. move seconds behind group_analogtime. in properties of seconds, do the following: a. adjust the dimension (width and height) to 395. b. align the component to the center. c. drag the background slider to 0%. d. make sure that the type is a circular progress bar, otherwise change it. e. in range setting, change value to 0 and click tags beside it to open the tags window. type in [sec]. it means that the value from 0 will increment as the value of second increases. f. set max value to 59 since it is the maximum value of [sec]. notein this scenario, the progress bar seems to disappear in the canvas as the preview only use the base value, which is 0. however, you can see the component still present in run. format and position a digital clock in this step, you will learn how grouping works and affects its components. you will also learn how to format the date and time using tags. to format and position a digital clock, you need to: add a digital clock > time twice. rename them as hour and minute respectively. add a digital clock > date and rename the component as date. put them in one group and rename it as group_digitaltime. go to the properties of hour and change the text appearance to 80. do the same for minute. adjust the text size of date to 15. adjust the y placements of the individual components, so that they will look like the image below. when you make changes to a certain component, it won’t affect other components in the group. format hour to only show the time in hour: a. go to its properties and click tags button in text field. b. replace text field value with [hour_0_23_z] to show current hour with leading zero. do the same for minute but replace text field value with [min_z] to show current minute in an hour with leading zero. go to group_digitaltime placement properties and align it horizontally. after that, place it to the left. you will see the components adjusted as a group. utilize health features and battery level watch face studio also allows you to utilize data like step count, heart rate, and battery level. follow the steps below to show these real-time data using tags on texts or progress bar: battery level add a circular progress bar and rename the component as battery level. drag the background slider to 0%. go to value properties. replace the value to 0 and, in tags, input or choose [batt_per] to use current battery percentage as value. add a short text complication and rename it as battery icon. complications are set of components that can be handled as one group. in the layout properties under complication settings, click + and select icon + text. then, change the default provider to watch battery and set the type to fixed. group battery level and battery icon together. rename the group as group_batterylevel. move the group_batterylevel placement to bottom right. heart rate add a circular progress bar and rename the component as heart rate. drag the background slider to 0%. go to value properties. replace the value to 0 and, in tags, input or choose [hr] to use heart rate as value. set max value to 220 since it’s the maximum heart rate a person can have. add a text component and rename it as heart rate label. in the text field, input heart rate and change the text size to 12. change the y placement to 195. add another text component and rename it as heart rate text. in the text field, input [hr] and change the text size to 30. group heart rate, heart rate label, and heart rate text together. rename the group as group_heartrate. in action properties of group_heartrate, select apply action with tap interaction and measure heartrate as action. heart rate will be measured when the components in the group_heartrate is tapped in the device. move the group_heartrate placement to center right. step count add a circular progress bar and rename the component as step count. drag the background slider to 0%. go to value properties. replace the value to 0 and, in tags, input or choose [sc_per] to use the current percentage to goal of step count. add a short text complication and rename it as step count text. in the layout properties, click + and select text + title. select step count as the default provider and set its type to fixed. it will now show "steps" as title and step count as text. place the step count text in the center horizontally. group step count and step count text together. rename the group as group_stepcount. move the group_stepcount placement to top right. select group_digitaltime, group_batterylevel, group_heartrate, and group_stepcount folders and drag them behind group_analoghands and seconds. by doing this, the analog hands would overlap the components. make use of tag expressions you already have three progress bars that show data of battery level, heart rate, and step count. this time, you will make these features more functional by changing the progress bars' color to red and add a blinking effect to a component using tag expressions. tag expressions are conditions that allow you to change the rotation, placement, behavior, and opacity of a component based on tag values. it has the power to alter your watch face appearance dynamically as the tag value changes. tag expressions support different types of operators – arithmetic, relational, logical, and ternary. for this step, you will apply tag expressions on the color opacity. but first, you will have to: make a duplicate of all the circular progress bars (seconds, battery level, heart rate, and step count). move all the duplicates in a new group called group_colorchange. make sure that group_colorchange is behind all other groups. change individual component’s color to #ffffff or white. duplicate this group and rename as group_background. move it behind group_colorchange. drag the background slider to 16% and remove tags in value properties of each component of group_background. change group_colorchange color to #ff001e or red. group_colorchange will be used as components underneath when you set the opacity of the main components to 0 using tag expressions. group_background will serve as gap filler of each progress bar. below are conditions that will trigger the opacity of main components to become 0 and reveal the duplicated red components: change the color of battery level to red if the battery level is equal or less than 20% go to group_batterylevel and select battery level. navigate to color properties. check if the color opacity value is 100. this will serve as the base value. in tags, input [batt_per]<=20?-100:0 to subtract 100 to base value of opacity if the battery level is equal or less than to 20. otherwise, the base opacity value remains the same. in the run pane, adjust the device > watch battery to 20% or less, and you will see how the color will change to red. change the color of step count to red if the goal hasn’t reached yet and the time is already 18:00 (6:00 pm) or beyond go to group_stepcount and select step count. navigate to color properties. check if the color opacity value is 100. this will serve as the base value. in tags, input ([sc]<[sc_goal])*([hour_0_23]>=18)?-100:0 to subtract 100 to base value of opacity if the step count is less than the goal, and if the value of hour in a day is 18 or beyond. otherwise, the base opacity value remains the same. play with the time control bar in the run pane and health > steps data to see how the color will change from blue to red. change the color of heart rate and seconds to red if heart rate is below or above the normal go to group_heartrate and select heart rate. navigate to color properties. check if the color opacity value is 100. this will serve as the base value. in tags, input ([hr]<60)+([hr]>100)?-100:0 to subtract 100 to base value of opacity if heart rate is below or above the normal (60-100). otherwise, it remains the same. do the same for group_analogtime > seconds. test it in the run pane by adjusting the health > heart rate to below 60 or above 100 and you will see how the color will change to red. since you added a tap action to measure heart rate, it is a good user experience to see if this function works. hr_is_measuring is a boolean tag, which returns 1 (yes) or 0 (no) if the heart rate is currently measuring or not. to add this to the project: select group_heartrate > heart rate. go to value properties and, in tags, change [hr] to [hr_is_measuring]==1? ([sec]%2==1?220:0):[hr]. this will cause the progress bar to flash on (max value) and off (min value) every second while heart rate is measuring. once it is done measuring, it will display the heart rate data. do the same for group_colorchange > heart rate copy. prolong the battery life now that you already grasp the idea of what group and tag expression are, it’s about time for you to use both for your advantage. it is observed that the darker a watch face design is, the longer the battery life can be. to help the watch stay powered even when there’s a little battery left, you will need to decrease the opacity of the watch face when the battery level is equal to or less than 10%. to do this, you have to: select and combine all created groups and components, except for group analogtime, to a new group called group_watchface. go to group_watchface color properties and change the base opacity value to 20 in tags, input [batt_per]<=10?0:80 to add 0 to the base value of opacity if the battery level is equal or less than to 10. otherwise, it adds 80 to the base value, making the whole watch face 100% visible. adjust the device > watch battery to 10% or less, and you will see how the opacity of most of the components decreased. choose components for always-on always-on display is a feature that allows your galaxy watch to show the time without checking on it by pressing a button or lifting your hand. in watch face studio, you can choose which group or component to display onto the always-on by following these steps: go to the always-on tab, and you will see the same set of components you added and grouped. click the eye icon next to the group name to hide or make it visible. hide group_watchface. at this point, your always-on display will display a basic analog watch face whenever your watch is in idle mode. test the watch face to test your watch face, you need to: connect a watch device to the same network as your computer in watch face studio, select project > run on device. select the connected watch device you want to test with. if your device is not detected automatically, click scan devices to detect your device or enter its ip address manually by clicking the + button. you're done! congratulations! you have successfully achieved the goal of this code lab. now, you can create and design a watch face using tag expressions by yourself! if you're having trouble, you may download this file: tag expression complete project (234.24 kb) to learn more about watch face studio, visit: developer.samsung.com/watch-face-studio

      https://developer.samsung.com/codelab/watch-face-studio/tag-expression.html
      1. events | ai, iot, uiux, game, web, mobile, galaxy watch

      blog

      Samsung Developer Conference 2021: Recap

      the samsung developer conference (sdc) for 2021 kicked off on october 26, 2021, and we hope you enjoyed the keynote and highlight sessions. as with many events, there is so much information to digest. fortunately, with the virtual format this year, developers can go back and review the sessions they've watched and study how they might take advantage of all the opportunities available with samsung platforms, sdks, and services. while there are too many announcements and technologies to cover in one post, here are some moments from the conference that should be interesting to developers. keynote samsung electronics president dj koh began the conference, as he's done in previous years. the keynote session included overviews of announcements that were described in more detail during the highlight sessions, tech talks, and code labs. voice control of iot devices (bixby/smartthings) samsung mobile senior vice president daniel ahn kicked off the announcements at sdc with a keynote session highlighting the integration of bixby voice control to the smartthings ecosystem with details from smartthings vice president samantha fein. technical talks with more details of the integration for developers and device manufacturers are also available. bixby : best voice interface for connected experience enabling intelligent voice control on your iot devices further, the smartthings platform team provided technical talks on the new smartthings edge platform and smartthings build for use in multi-family home environments. support for the matter standard was announced during the highlight session. samsung electronics vice president jaeyong jung and smartthings vice president samantha fein talked about the bright future for home automation with matter in this highlight session. the samsung newsroom has more information on the bixby and smartthings integration as well as the matter standard support. security and privacy with samsung knox samsung executive vice president kc choi details how samsung knox unlocks the $80b enterprise market with devices and services to ensure that critical data is secure and employee information is kept confidential. in the tech talk sessions below, samsung b2b product experts give developers the information they need to integrate their own apps and services for this lucrative market segment. samsung ese: a trusted partner for enhanced security redefining edge computing & foldables for b2b beyond a limit with the mobile b2b partner program developers with solutions for the enterprise market should sign up for the knox partner program. services and solutions for smarttv platform at sdc21, developers interested in smart tv solutions had plenty to learn. in the keynote, samsung eelectronics senior vice president yongjae kim and samsung research vice president bill mandel discussed many new and exciting opportunities for developers with the tizen platform, which are available for viewers to watch in these sessions. what's new in samsung smart tv services what’s new in tizen 6.5 what's next for tizen: smart screen for business build a trusted service with samsung tizen security what's new in the tizen web platform for smart tv game developers are rising stars with samsung the experience of the last 18 months has shown that self-care is important to our well-being. by allowing us to disconnect from reality, games help reduce stress and give a temporary reprieve from the stresses of daily life. samsung support for gamers and game developers comes to the forefront at sdc21 with these important sessions. galaxy store: games-focused, developer-friendly games for everyone: samsung instant plays in addition to mobile gaming, the announcement of hdr10+ for gaming will delight gamers looking forward to top-quality experiences on smart tvs. building better web experiences with samsung internet the samsung internet browser ships with every samsung galaxy phone. the developers and advocates for samsung internet want to ensure that consumers have the best possible experiences, mixing web content with mobile hardware. how to build browser extensions on samsung internet unfolding the future of responsive web design one ui brings beautiful and secure interactions to your mobile world samsung electronics executive vice president janghyun yoon unveiled the one ui 4 platform, showing numerous examples of beautifully designed cross-device experiences, such as taking a photograph from galaxy z flip3, sharing to the galaxy book, and editing using a galaxy tab s with s pen. while beauty is only skin deep, one ui 4 adds layers of security to these experiences. learn more about one ui 4 in these sessions. one ui 4 design: focus, comfort, self-expression one ui: designing a more approachable experience designers and developers explore new worlds with one ui watch platform galaxy watch4 was introduced at galaxy unpacked in august 2021. the one ui watch platform uses wear os powered by samsung. developers interested in bringing their ideas to the new platform should check out these talks. watch ecosystem: a new era build your app in the new watch ecosystem galaxy watch4 for enterprise business new health platform based on wear os powered by samsung further, designers who are interested in expressing their creative side with watch face designs should view this session on how to use watch face studio to create beautiful designs without writing code. rewarding successful developers with the best of galaxy store awards samsung sr. developer evangelist tony morelan presents the best of galaxy store awards, now in their 4th year. these awards are samsung's way to express gratitude to those developers and designers who are bringing beautiful and exciting apps, games, and themes to galaxy store. for the second year, the bixby team recognized the top developer and capsule for their platform. following up with samsung this site has many resources for developers looking to build for and integrate with samsung devices and services. stay in touch with the latest news by creating a free account and subscribing to our monthly newsletter. visit the marketing resources page for information on promoting and distributing your apps through the galaxy store. finally, our developer forum is an excellent way to stay up-to-date on all things related to the galaxy ecosystem. thank you for joining us for sdc21 and we look forward to seeing you in 2022.

      Samsung Developers

      https://developer.samsung.com/sdp/blog/en-us/2021/10/27/samsung-developer-conference-2021-recap
      No Search Results
      No Search results. Try using another keyword.
      • <<
      • <
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • >
      • >>
      Samsung Developers
      Samsung Developers
      Quick Link
      • Android USB Driver
      • Code Lab
      • Galaxy Emulator Skin
      • Foldables and Large Screens
      • One UI Beta
      • Remote Test Lab
      • Samsung Developers Podcast
      Family Site
      • Bixby
      • Knox
      • Samsung Pay
      • SmartThings
      • Tizen
      • Samsung Research
      • Samsung Open Source
      • Samsung Dev Spain
      • Samsung Dev Brazil
      Legal
      • Terms
      • Privacy
      • Open Source License
      • Cookie Policy
      Social Communications
      • Facebook
      • Instagram
      • Twitter
      • YouTube
      • Buzzsprout
      • Rss
      • Linkedin
      • System Status
      • Site Map
      • System Status
      • Site Map
      • facebook
      • instagram
      • twitter
      • youtube
      • buzzsprout
      • rss
      • linkedin

      Copyright © 2023 SAMSUNG. All rights reserved.