Filter
-
Content Type
-
Category
Mobile/Wearable
Visual Display
Digital Appliance
Platform
Recommendations
Filter
tutorials web, mobile
blogfoldable 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 in the device posture. web apps can take advantage of the new form factors and improve users’ experience. we’ve created this codelab to show you how you can take advantage of this new feature. before we start, if you would like to learn more about it in a different format, here is a video that we’ve created with more information about this api and foldables. 👉 would you like to do this codelab with mentors and in person? if you are in london we will have a first meetup to try this with real foldable devices, feel free to register here! (ed. this event has already occurred, but we're leaving the link intact.) what is the w3c and why you should care in the meantime, as i’ve mentioned before, there is a current proposal about how to take advantage of these foldable devices called ‘device posture api’. its current state is ‘draft’, which means that is still open to changes and discussion and has been published for review by the community, including w3c members, the public (you!), and other technical organizations. we’ve created a demo to show you how to use this api, hear your thoughts and teach you some capabilities of the web. at the end of this codelab you can send us your feedback here. let’s start working… 🛠️ hands on 1. set up your environment you will need the following: samsung internet latest version samsung galaxy z fold2, z fold3, z flip, or z flip3 if a 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 b) device posture api polyfill for testing using a non-foldable smartphone, just implement a polyfill to the project. 2. 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 3. add html video markup note: take 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. 4. enable front and back cameras with facingmode in index.js, you'll find a startup() function, here is where you will be doing the following: 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 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; }` 5. link the media stream to the video element if you are able to use facingmode, the camera web app will use this option in the 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 that 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. 6. 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 that 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. 7. use the device posture api 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 with 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. in style.css, apply the following media query: @media (device-posture: folded) { body { display: flex; flex-flow: column nowrap; } .video-container .camera-controls { flex: 1 1 env(fold-bottom); } .msg { display:block; margin: 5em; } using modern css features like display:flex and grid, you can change the layout of the body element and the elements with the class video-container and camera-controls when the phone is flipped. 8. 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 on 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> 🥳 you did it! you’ve created a web app that detects when a foldable device change its posture. please let us know how it went here, we would like to hear your thoughts around this api, future codelabs and more! this feedback will go directly to the w3c devices and sensors group, so you will be part of the conversation around this draft too! thanks a lot for reading.
Laura Morinigo
tutorials health, galaxy watch, mobile
blogthe samsung privileged health sdk enables your application to collect vital signs and other health parameters tracked on galaxy watch running wear os powered by samsung. the tracked data can be displayed immediately or retained for later analysis. some kinds of tracked data, such as batching data, are impractical to display on a watch screen in real-time, so it is common to store the data in a database or server solution or show them on the larger screen of a mobile device. this blog demonstrates how to develop 2 connected sample applications. a watch application uses the samsung privileged health sdk to collect heart rate tracker data, then uses the wearable data layer api to transmit it to a companion application on the user’s android mobile device, which displays the data as a simple list on its screen. you can follow along with the demonstration by downloading the sample application project. to test the applications, you need a galaxy watch4 (or higher model) and a connected android mobile device. creating the application project the application project consists of a wearable module for the watch, and a mobile module for android mobile devices: in android studio, select open file > new > new project. select wear os > empty wear app and click next. new wear app define the project details. project details to create a companion mobile application for the watch application, check the pair with empty phone app box. notemake sure that the application id is identical for both modules in their “build.gradle” files. for more information about creating multi-module projects, see from wrist to hand: develop a companion app for your wearable application. implementing the watch application the watch application ui has 2 buttons. the start/stop button controls heart data tracking, and the send button transfers the collected data to the connected mobile device. the screen consists of a heart rate field and 4 ibi value fields, since there can be up to 4 ibi values in a single tracking result. watch application ui track and extract heart rate data when the user taps the start button on the wearable application ui, the starttracking() function from the mainviewmodel class is invoked. the application must check that the galaxy watch supports the heart rate tracking capability that we want to implement, as the supported capabilities depend on the device model and software version. retrieve the list of supported health trackers with the trackingcapability.supporthealthtrackertypes of the healthtrackingservice class: override fun hascapabilities(): boolean { log.i(tag, "hascapabilities()") healthtrackingservice = healthtrackingserviceconnection.gethealthtrackingservice() val trackers: list<healthtrackertype> = healthtrackingservice!!.trackingcapability.supporthealthtrackertypes return trackers.contains(trackingtype) } to track the heart rate values on the watch, read the flow of values received in the ondatareceived() listener: @experimentalcoroutinesapi override suspend fun track(): flow<trackermessage> = callbackflow { val updatelistener = object : healthtracker.trackereventlistener { override fun ondatareceived(datapoints: mutablelist<datapoint>) { for (datapoint in datapoints) { var trackeddata: trackeddata? = null val hrvalue = datapoint.getvalue(valuekey.heartrateset.heart_rate) val hrstatus = datapoint.getvalue(valuekey.heartrateset.heart_rate_status) if (ishrvalid(hrstatus)) { trackeddata = trackeddata() trackeddata.hr = hrvalue log.i(tag, "valid hr: $hrvalue") } else { coroutinescope.runcatching { trysendblocking(trackermessage.trackerwarningmessage(geterror(hrstatus.tostring()))) } } val validibilist = getvalidibilist(datapoint) if (validibilist.size > 0) { if (trackeddata == null) trackeddata = trackeddata() trackeddata.ibi.addall(validibilist) } if ((ishrvalid(hrstatus) || validibilist.size > 0) && trackeddata != null) { coroutinescope.runcatching { trysendblocking(trackermessage.datamessage(trackeddata)) } } if (trackeddata != null) { validhrdata.add(trackeddata) } } trimdatalist() } fun geterror(errorkeyfromtracker: string): string { val str = errors.getvalue(errorkeyfromtracker) return context.resources.getstring(str) } override fun onflushcompleted() { log.i(tag, "onflushcompleted()") coroutinescope.runcatching { trysendblocking(trackermessage.flushcompletedmessage) } } override fun onerror(trackererror: healthtracker.trackererror?) { log.i(tag, "onerror()") coroutinescope.runcatching { trysendblocking(trackermessage.trackererrormessage(geterror(trackererror.tostring()))) } } } heartratetracker = healthtrackingservice!!.gethealthtracker(trackingtype) setlistener(updatelistener) awaitclose { log.i(tag, "tracking flow awaitclose()") stoptracking() } } each tracking result is within a list in the datapoints argument of the ondatareceived() update listener. the sample application implements on-demand heart rate tracking, the update listener is invoked every second and each data point list contains 1 element. to extract a heart rate from data point: val hrvalue = datapoint.getvalue(valuekey.heartrateset.heart_rate) val hrstatus = datapoint.getvalue(valuekey.heartrateset.heart_rate_status) a status parameter is returned in addition to the heart rate data. if the heart rate reading was successful, its value is 1. each inter-beat interval data point consists of a list of values and the corresponding status for each value. since samsung privileged health sdk version 1.2.0, there can be up to 4 ibi values in a single data point, depending on the heart rate. if the ibi reading is valid, the value of the status parameter is 0. to extract only ibi data that is valid and whose value is not 0: private fun isibivalid(ibistatus: int, ibivalue: int): boolean { return ibistatus == 0 && ibivalue != 0 } fun getvalidibilist(datapoint: datapoint): arraylist<int> { val ibivalues = datapoint.getvalue(valuekey.heartrateset.ibi_list) val ibistatuses = datapoint.getvalue(valuekey.heartrateset.ibi_status_list) val validibilist = arraylist<int>() for ((i, ibistatus) in ibistatuses.withindex()) { if (isibivalid(ibistatus, ibivalues[i])) { validibilist.add(ibivalues[i]) } } send data to the mobile application the application uses the messageclient class of the wearable data layer api to send messages to the connected mobile device. messages are useful for remote procedure calls (rpc), one-way requests, or in request-or-response communication models. when a message is sent, if the sending and receiving devices are connected, the system queues the message for delivery and returns a successful result code. the successful result code does not necessarily mean that the message was delivered successfully, as the devices can be disconnected before the message is received. to advertise and discover devices on the same network with features that the watch can interact with, use the capabilityclient class of the wearable data layer api. each device on the network is represented as a node that supports various capabilities (features) that an application defines at build time or configures dynamically at runtime. your watch application can search for nodes with a specific capability and interact with it, such as sending messages. this can also work in the opposite direction, with the wearable application advertising the capabilities it supports. when the user taps the send button on the wearable application ui, the sendmessage() function from the mainviewmodel class is invoked, which triggers code in the sendmessageusecase class: override suspend fun sendmessage(message: string, node: node, messagepath: string): boolean { val nodeid = node.id var result = false nodeid.also { id -> messageclient .sendmessage( id, messagepath, message.tobytearray(charset = charset.defaultcharset()) ).apply { addonsuccesslistener { log.i(tag, "sendmessage onsuccesslistener") result = true } addonfailurelistener { log.i(tag, "sendmessage onfailurelistener") result = false } }.await() log.i(tag, "result: $result") return result } } to find a destination node for the message, retrieve all the available capabilities on the network: override suspend fun getcapabilitiesforreachablenodes(): map<node, set<string>> { log.i(tag, "getcapabilities()") val allcapabilities = capabilityclient.getallcapabilities(capabilityclient.filter_reachable).await() return allcapabilities.flatmap { (capability, capabilityinfo) -> capabilityinfo.nodes.map { it to capability } } .groupby( keyselector = { it.first }, valuetransform = { it.second } ) .mapvalues { it.value.toset() } } since the mobile module of the sample application advertises having the “wear” capability, to find an appropriate destination node, retrieve the list of connected nodes that support it: override suspend fun getnodesforcapability( capability: string, allcapabilities: map<node, set<string>> ): set<node> { return allcapabilities.filtervalues { capability in it }.keys } select the first node from the list, encode the message as a json string, and send the message to the node: suspend operator fun invoke(): boolean { val nodes = getcapablenodes() return if (nodes.isnotempty()) { val node = nodes.first() val message = encodemessage(trackingrepository.getvalidhrdata()) messagerepository.sendmessage(message, node, message_path) true } else { log.i(tag, "no compatible nodes found") false } } implementing the mobile application the mobile application ui consists of a list of the heart rate and inter-beat interval values received from the watch. the list is scrollable. mobile application ui receive and display data from the watch application to enable the mobile application to listen for data from the watch and launch when it receives data, define the datalistenerservice service in the mobile application’s androidmanifest.xml file, within the <application> element: <service android:name="com.samsung.health.mobile.data.datalistenerservice" android:exported="true"> <intent-filter> <action android:name="com.google.android.gms.wearable.data_changed" /> <action android:name="com.google.android.gms.wearable.message_received" /> <action android:name="com.google.android.gms.wearable.request_received" /> <action android:name="com.google.android.gms.wearable.capability_changed" /> <action android:name="com.google.android.gms.wearable.channel_event" /> <data android:host="*" android:pathprefix="/msg" android:scheme="wear" /> </intent-filter> </service> implement the datalistenerservice class in the application code to listen for and receive message data. the received json string data is passed as a parameter: private const val tag = "datalistenerservice" private const val message_path = "/msg" class datalistenerservice : wearablelistenerservice() { override fun onmessagereceived(messageevent: messageevent) { super.onmessagereceived(messageevent) val value = messageevent.data.decodetostring() log.i(tag, "onmessagereceived(): $value") when (messageevent.path) { message_path -> { log.i(tag, "service: message (/msg) received: $value") if (value != "") { startactivity( intent(this, mainactivity::class.java) .addflags(intent.flag_activity_new_task).putextra("message", value) ) } else { log.i(tag, "value is an empty string") } } } to decode the message data: fun decodemessage(message: string): list<trackeddata> { return json.decodefromstring(message) } to display the received data on the application screen: @composable fun mainscreen( results: list<trackeddata> ) { column( modifier = modifier .fillmaxsize() .background(color.black), verticalarrangement = arrangement.top, horizontalalignment = alignment.centerhorizontally ) { spacer( modifier .height(70.dp) .fillmaxwidth() .background(color.black) ) listview(results) } } running the applications to run the wearable and mobile applications: connect your galaxy watch and android mobile device (both devices must be paired with each other) to android studio on your computer. select wear from the modules list and the galaxy watch device from the devices list, then click run. the wearable application launches on the watch. connected devices select mobile from the modules list and the android mobile device from the devices list, then click run. the mobile application launches on the mobile device. wear the watch on your wrist and tap start. the watch begins tracking your heart rate. after some tracked values appear on the watch screen, to send the values to the mobile application, tap send. if the mobile application is not running, it is launched. the tracked heart data appears on the mobile application screen. to stop tracking, tap stop on the watch. conclusions the samsung privileged health sdk enables you to track health data, such as heart rate, from a user’s galaxy watch4 or higher smartwatch model. to display the tracked data on a larger screen, you can use the messageclient of the wearable data layer api to send the data to a companion application on the connected mobile device. to develop more advanced application features, you can also use the dataclient class to send data to devices not currently in range of the watch, delivering it only when the device is connected. resources heart rate data transfer code lab
Samsung Developers
featured
bloganother year will soon be past and, like many of you, we’re looking forward to next year. we’ll be taking some time the next few weeks to be with our families, and will be back in 2022 with more blogs, podcasts, product announcements, and ways for you to succeed with galaxy store and samsung platforms. with the end-of-year holidays upon us, we’re stopping to reflect on what we did in 2021. even with covid making a disruption in everyone’s lives, we’re still here to help developers find answers and hopefully, also find success. here are some of our most memorable moments. 10. developer portal refresh brought a modern look and support for mobile we’ve been working for several years to bring samsung’s developer portal into a single web infrastructure. we moved content from multiple servers and cloud services into a cms that uses open standards and a responsive design for mobile devices. we pored through a decade of content to make sure it was still timely and accurate for your needs today. we integrated the developer forums to use the same samsung account login for both the developer portal and seller portal to give you a more seamless experience. in october of this year, we made a ux refresh to the site and the most amazing thing is how easy that process went. there were no late nights in the weeks prior to launch. we were able to test the new ux in a sandbox rigorously. then the deployment to production happened almost instantaneously. we spent less time worrying about our website and more time creating the content you need to do your work. we understand how important the samsung developer portal is to you and your work. that’s why we took the time to ensure a smooth transition as we made major infrastructure changes. 9. monthly updates keep developers up-to-date on new galaxy store features the galaxy store product management team began publishing monthly newsletters to enlighten developers of the latest features and improvements to seller portal. these updates also usually appear as blog posts in the first week or two of the month. some of the major announcements include: staged app rollouts (october) local currencies in settlement and financial reports (september) private beta testing (july) galaxy store developer api (april) look for more exciting improvements in 2022 as galaxy store continues to innovate. 8. unpacked events bring exciting new product announcements galaxy unpacked in january 2021 brought announcements of the galaxy buds pro, galaxy s21, and the new galaxy smarttag. the event highlighted samsung’s design concepts with one ui 3 and integrated experiences from partners like microsoft and google. the august galaxy unpacked event brought announcements of galaxy z fold3 and galaxy z flip3 phones. these devices have many new hardware and software features for developers to build upon. this blog post highlighted many of the ways that developers can implement features supporting flex mode and s pen remote, while ensuring that users have a seamless experience with app continuity. the most anticipated announcement of the august galaxy unpacked event was the unveiling of galaxy watch4, featuring wear os, powered by samsung. as with the tizen-powered galaxy watch devices, samsung released a new tool, galaxy watch studio converter, to help existing designers bring their watch faces to wear os. designers could also start a new watch face project from scratch with the newly-released watch face studio tool. 7. remote test lab updates allow developers to experience the latest hardware as new devices are announced, developers can use the remote test lab (rtl) to ensure that their apps work properly on the new version of one ui as well as different screen resolutions and pixel densities. in 2021, the rtl development team added support for foldables and galaxy s21 devices, allowing developers to ensure their apps work correctly before the devices are available to consumers. the rtl team also added support for android studio. in september, thousands of devices were added in data centers around the world to ensure that a compatible device is always available. as part of this release, rtl was re-engineered to work exclusively in the chrome browser, so that no external software is needed to test apps on all the latest devices. 6. samsung developer forums activity the samsung developer forums, based on the popular open-source discourse project, were introduced in january 2020, replacing an aging forum infrastructure that didn’t work well on mobile devices. by using the same samsung account authentication method as the samsung developers site, we’re able to provide a nearly-seamless experience across different hosts and platforms. since their introduction, we’ve seen large numbers of visitors stop by the forums with questions. community manager ron liechty has more than 25 years of experience in managing healthy communities—his knowledge and guidance keeps the forums a useful resource for developers. some of these visitors have become our best community members, providing valuable feedback to their peers as well as helping to moderate spam and malicious content. 5. supporting game developers in 2021 games are a noticeable part of the galaxy store experience and we work with many partners and internal teams to ensure that gamers have a great experience on galaxy devices. the galaxy gamedev team works closely with some of the top publishers and developers to improve performance of top titles on mobile. this team creates tools that provide great detail on the performance of the cpu and gpu during intense moments of gameplay. the gamedev team then documents their efforts in a series of best practices and blog posts to help developers everywhere. in addition to our internal team work, we frequently work with our partners at arm to deliver relevant content for game developers. this summer, we published and promoted a number of educational articles, webinars, and training series in cooperation with the arm developer team. best practices for mobile game developers and artists new vulkan extensions for mobile: maintenance extensions new vulkan extensions for mobile: legacy support extensions new game changing vulkan extensions for mobile: descriptor indexing new game changing vulkan extensions for mobile: buffer device address new game changing vulkan extensions for mobile: timeline semaphores mike barnes from the gamedev team, together with eric cloninger from the samsung developers team, presented at the virtual gdc2021 event in july. gdc is an important event for all of us at samsung and we hope to see you all there at the live event in march 2022. 4. new voices appeared on samsung developers podcast, season 2 shortly before the covid-19 pandemic changed our lives, tony morelan from samsung developers attended a podcasting event and came back to the office inspired to start a podcast. he lined up guests from internal teams and important partners. everyone had a great time participating and it gave us a way to continue delivering quality content to developers. as 2020 turned to 2021, we continued bringing interesting guests from across the mobile design and development ecosystem. we used the podcast to talk about the upcoming virtual samsung developer conference and chat with the people that made the event a success. here are some of the highlights from season 2 of the samsung developers podcast: drazen stojcic, urarity – watch faces, design tan nguyen, butterfly-effected gmbh – galaxy themes, marketing, licensing the samsung internet advocacy team – web standards, privacy, foldable devices we’re still hoping for a return to days where we can travel and meet in person, but until that time comes, please join us in listening to these industry veterans and top developers on the samsung developers podcast. season 3 begins in early 2022. 3. blog series instructs readers on design and successful marketing without live events the past two years, we have searched for new ways to continue delivering timely and helpful advice to mobile app designers and developers. as mentioned previously, we worked with arm this year to bring great technical content front and center. we also worked with our network of top designers, developers, and thought leaders on concepts that will help you succeed on galaxy store and in creating better experiences for your users: better for all – in this blog series, we talked with leading designers and experts to help understand the increasingly important concepts behind the diversity, equality, and inclusion movement. this series discussed aspects of language used in apps, themes, and watch designs. it also highlights important guidelines to ensure apps and web sites are accessible to users with sight, mobility, and hearing impairments. better for all: mobile accessibility better for all: inclusive policies with daniel appelquist better for all: equal accessibility better for all: bringing diversity to design with eglantina hasaj and manpreet kaur better for all: diversity in design better for all: developing and designing for diversity refresh for success – it’s not enough to simply submit a title to a digital marketplace and assume success will follow and continue without extra effort. in this series, top galaxy store designers and developers talk about how they maintain their product lines to ensure a steady flow of revenue and new customers. refresh for success: maintain quality themes design with olga gabay from zeru studio refresh for success: improve your process to keep designs fresh with tan nguyen from butterfly-effected, gmbh refresh for success: improve your process and de-clutter your galaxy store with drazen stojcic from urarity prime time design – finding success in designing new products is an intensely unique and personal process. the prime time design series includes interviews with some of the most unique people creating for galaxy store. read how these talented people inspire themselves and how they convert that inspiration into action. prime time design: unpacking the creative process with ramon campos from friss in motion prime time design: unpacking the creative process with pedro machado from health face prime time design: unpacking the creative process with john shih from x9 studio strategies for success – tony morelan was a successful watch face designer before coming to work with the samsung developers team. we’re grateful for his knowledge of design as well as how to turn designs into revenue. in this four-part series, tony points out steps to creating successful galaxy store product submissions. strategies for success: selling your apps strategies for success: understanding consumer trends strategies for success: building your fan base strategies for success: making your brand successful 2. best of galaxy store awards highlight successful developers the galaxy store app on your mobile device is more than just an app. behind the scenes, there is a team of developers, product managers, business leaders, and security experts devoted to ensuring the best possible online experience for consumers in 180 countries. because of their dedication, developers and designers have a great platform for monetizing their work. each year, the samsung developers team works with the galaxy store operations and business development teams to determine the best games, apps, and themes based on revenue, downloads, and impact to consumers. the result is the best of galaxy store awards. in 2018 and 2019, the best of galaxy store awards were presented live, on stage, at the samsung developer conference (sdc). without a live event in 2020 or 2021, the samsung developers team decided to continue the tradition of highlighting and awarding our top galaxy store products. even without an in-person event, we used a live premiere on youtube to have a single moment in time to celebrate with the winners. tony morelan emceed the event, but he had a lot of help from ron liechty, jeanne hsu, susie perez, and shelly wu. we thank them for their hard work. we hope you’ll enjoy watching! look for the “best of galaxy store” sash on apps, games, themes, and watch faces in galaxy store to know that you’re getting a truly unique experience. 1. discovering new opportunities at sdc21 each year, the samsung developer conference is the culmination of an incredible amount of planning and work by hundreds of people. even though the event was virtual in 2021, there was still a huge volume of work. instead of preparing for a live audience, our teams practiced in front of a galaxy phone on a tripod (really). instead of building booths and planning meals, we built a website and social media campaigns to reach a larger audience. eric cloninger and tony morelan kicked off the promotion for sdc21 with a podcast featuring a previous sdc speaker, chris shomo. before the conference, visitors were invited to create whimsical caricatures of themselves using the mysdcstack mini-site and submit their designs to social media. by participating in the event website, watching sessions, and trying the code labs, visitors would earn points toward a prize drawing after sdc. relive the experience of sdc21 by watching the keynote or any of the highlight sessions and technical talks by viewing this playlist wrapping up when sdc is finished, our team takes a collective deep breath, happy to be done. it is a satisfying experience to pull off a big industry event. we don’t know yet how we’ll handle live events, but we remain optimistic that some will occur. we are making plans and we hope we’ll be able to see you, somewhere, in 2022. 🤞 take care. stay warm (or cool). best wishes to you all and happy new year!
success story marketplace, design, galaxy watch
blogwe continue to celebrate the top performing apps in creativity, quality, design, and innovation, as we interview winners of our best of galaxy store awards. next in our blog series, we feature matteo dini. matteo dini, founder and ceo of "matteo dini md", shares with us how he manages to maintain a high level of quality and craftsmanship with his watch face designs, many of which boast five star ratings, the importance of developing a recognizable brand, and how the galaxy store badge has played an integral role in his marketing strategy how did you first get into designing watch faces? at the end of 2016, i bought a samsung gear s3 watch, and that’s when i started designing watch faces. at first, it was just for fun, something i did to explore the easily approachable software “galaxy watch designer” (now “galaxy watch studio"). in the spring of 2017, i started publishing some of my watch faces on the galaxy store, and i realized that people were really interested in them, therefore i decided to continue publishing my designs. as one of our more seasoned and successful designers, can you share some key features of a good watch face design? in my opinion, a good watch face design has to be easily readable. it should also feature well thought out colors and shades that match together, and the layouts shouldn’t be too complex. this is the key to attracting a wider range of customers. with your broad experience as a watch face designer, do you still experience technical or design hurdles when designing a watch face? there really is no limit to improvement when it comes to graphic design. the real obstacle to overcome is the lack of new ideas. there should always be new inspirations about how to improve the design aspect of the watch faces. there have been, and still are moments, when i find myself stuck, even for several whole days, before getting to a final result. after creating several watch faces and crossing paths with so many great creations from other designers, pushing the creative limit further can be really hard, especially on a 360x360 screen. however, when i finally find the right path that can lead me to a new good project, i feel so enthusiastic and passionate about my job that it is definitely worth it. where the technical side is concerned, hopefully i’ll be able to add some new features that leverage samsung’s hardware-and-software evolutions. your brand “matteo dini md” is well known in the watch face community. how important is creating your own brand? having a well-recognizable brand is the key to being well known. your brand identifies your work, that is undeniable. finding the perfect name for my brand was not the easiest choice to make. when i started publishing my work on the galaxy store i was really indecisive about leaving my real name-surname. i even thought of inventing a new name from scratch, but then i decided to go for matteo dini, since it gave me the impression of a more personal brand, and i think it worked, or at least i hope so. my brand “matteo dini md” is a legally registered brand in the us and in europe. how do you come up with new designs to support the continued growth and evolution of your brand? ideas can come from seasons, from highly- or poorly-inspired periods, and obviously from market research. “there are no rules” is the only rule. sometimes a design can sprout from a tiny detail that we come to notice in a random object, not necessarily a watch. in a certain way it’s kind of a meditation process - it’s mind work. at the moment, there are two of us designing watch faces for “matteo dini md”, my brother-in-law luca canaletti and i. together we try to imagine how the product could potentially look, and we then sketch some drafts on paper or directly on the software. your designs are highly rated on the galaxy store which speaks to the quality and craftsmanship of your work. how do you achieve such great quality with your designs? to be honest, when it comes to my work i’m a very strict critic. i always detect some enormous flaws, and i hardly find myself truly and completely satisfied with my work. apart from that, the thing luca and i focus on is quality. to achieve that, we try to include as many details as possible and to test our watch faces for several days, in different light and weather conditions, in order to get a good result. but, as i was saying before, there is no limit to improvement, and we learn something new every day. it’s evident that you understand the market and what users want. how much does user feedback factor into the designs you create? are there other factors? i pay so much attention to user feedback. i obviously cannot design something that works for each of them, however i tend to use their suggestions to improve my watch faces and to meet their needs and tastes. being on the galaxy store has provided me with knowledge about people’s taste, and i’m constantly trying to keep several watch faces on the store that can satisfy a wide range of consumers, both young people and adults. i also keep an eye on market trends and all the cutting-edge news that comes out. you employ various marketing strategies, including third-party watch face reviews from jibberjab, social media promotion, free trials, contests, and giveaways. how important is marketing your designs to becoming a successful seller? what tips can you share? the galaxy store is introducing more and more new content every day, so it is really fundamental to promote one’s projects on other marketing channels as well. this is why i employ all those things you mentioned, in order to drive awareness and visibility of my brand on the galaxy store. the paramount thing to do is to create a well-recognizable brand identity, in order to be easily found on the store. i created my brand’s accounts on all the most important social media platforms in order to gain followers and to have a community to directly communicate with. this is fundamental, it’s the starting point for any marketing strategy. how does the galaxy store badge support your marketing strategy? galaxy store badge is, without a doubt, an excellent tool. it generates customized short urls, it can monitor all the clicks you get (which is important for statistics and promotions), and it also gives you the opportunity to use an official samsung official logo, which can be really helpful when it comes to marketing strategies. how has the samsung developer program supported your journey and growth as a watch face designer? the sdp team has always been very helpful and professional, promptly answering my request for technical assistance and solving my problems. they always keep us up-to-date about samsung news and share detailed studies about technical topics. they really support our work. it is also important to follow the dedicated forum. the forum allows us to ask questions and get answers from samsung and the developer community, i was very pleased to meet the team in person, twice actually, at the 2018 and 2019 editions of the samsung developer conference. thank you for the question; since you mentioned it, i really want to publicly thank the sdp team for their amazing work. as the winner of samsung best of galaxy store awards 2019 for “best watch designer (big brand)”, what advice do you have for new designers looking to create a successful watch face business? besides being a watch face designer, i’m a technology enthusiast and my first step was studying the product (samsung gear watch / galaxy watch / galaxy watch active), wearing it 24/7 for several months. i got the full user experience, before becoming a designer. passion and patience are fundamental, new designers shouldn’t get discouraged if the big results don’t come right away. they should keep focusing on finding their style and on trying to improve it day after day. the results will come eventually. what is next for matteo dini md watch faces? at the moment we are focusing on watch face development and we are trying to improve ourselves in order to be ready when samsung shares its plans on any new products or product updates. we want to thank matteo for sharing compelling insights on watch face design and tips on becoming a successful designer with a recognizable brand. be sure to check out matteo dini md’s watch face portfolio, and download your favorite in the galaxy store. follow us on twitter at @samsung_dev for more developer interviews as well as tips for building games, apps, and more for the galaxy store. find out more about our best of galaxy store awards. designing a watch face for galaxy watch running wear os powered by samsung? check out this code lab about creating a watch face using tag expressions in watch face studio.
tutorials web
blogphoto by alexander andrews on unsplash as promised in my last post about dark mode, i bring you a dark mode tutorial 🌚. if you just want to see the code, a refactored version lives on glitch. let’s get straight into it. prerequisites this tutorial is beginner friendly but not if you’ve done absolutely no html, css, javascript. you’ll also need a small html and css site that you’d like to add dark mode to. i’ll be using my own personal site. system preferences many operating systems now have dark and light mode settings which we should respect. a safe assumption to make is that if someone has their operating settings set to “dark” then they probably also want to view your site in dark mode too. we can do this with the css media query [prefers-color-scheme](https://developer.mozilla.org/en-us/docs/web/css/@media/prefers-color-scheme), this media query allows us to recognise the operating system’s colour scheme and define some css rules within it. so, just to make sure things are working let’s set the background to black if the operating system is set to dark: @media (prefers-color-scheme: dark) { body { background-color: black; } } this is my result. the media query can read what the operating system has as its colour scheme and applies the appropriate rules. you can test this by toggling the colour scheme settings on your computer. toggle colours okay, but what if the visitor wants to view your site in a different colour scheme than what the operating system is? we should give them that choice and we can do so by adding a toggle button and using javascript to switch between light and dark colour schemes. html first, let’s add a meta tag the head of our html: <meta name="color-scheme" content="dark light"> this will act as a fallback for the browser should it not have prefers-colour-scheme since it can act as an indicator for browser to know that the content supports colour schemes. then we want to add the button to our body. <button id="colourmodebtn">toggle dark mode</button> finally on the body, we want to add a specific class (which will be important later on): <body class="`systemdarkpreference"> `<button id="colourmodebtn">toggle dark mode</button> `</body>` css next, we want to set some css rules for a light theme within our prefers-color-scheme: dark block. we’re doing this so that if someone has set their operating system to “dark” everything that happens is within a dark os context since we can’t override that setting. now, we need to switch gears in how we’ve been thinking about our colour scheming. sure, it’s light vs dark but it’s also system settings vs overridden, and this is important. it‘s helpful to think of @ media (prefers-color-scheme: dark) as the system dark context within which we also want some rules for that media query and also when we want to override the system setting. it may be complicated but hopefully the code sheds some light: @media (prefers-color-scheme: dark) { body.systemdarkpreference { background-color: black; } } so within our dark context, we’ve added a systemdarkpreference to the body class as a way to apply our dark theme within the system dark context. we don’t need a class for our light theme because we’re going to be toggling the systemdarkpreference. so if the body is in our dark context but doesn’t have the systemdarkpreference class, then it will fall back to what rule it finds for the body element. so, what happens if a visitor switches off the dark theme? or their operating system colour scheme is set to light and they want to switch to dark? or what if the visitor’s operating system doesn’t allow users to change their colour themes? to ensure these visitors are properly served, we’ll want to add some rules outside of the media query. /* default */ body{ background-color: white; } /* dark */ body.dark { background-color: black; } we want to define the body element’s ruleset without any classes as the default behaviour for anyone who visits the site. then a .dark class for those who want to toggle to a dark theme. there is a bit of repetition here since all the dark rules will have to be defined both inside and outside of the prefers-color-scheme media query but the default theme only needs to be defined once. javascript remember to ensure your javascript is within <script></script> tag in your html or, if you prefer, is in a javascript file which is being called from your html like so: <script src="your_file.js"></script>. without the javascript the visitor won’t be able to interact with the page. so next, we’ll add an event listener to the button we created earlier. let’s get the button element: const ***togglecolourmodebtn ***= ***document***.getelementbyid("colourmodebtn"); then we can add the event listener to the button: ***togglecolourmodebtn***.addeventlistener("click", function () {}); at the moment this won’t have any functionality since we’re not asking it to do anything in the listener. within the listener, first we want to make a few checks : ***togglecolourmodebtn***.addeventlistener("click", function () { const hassysdarkclass = ***document***.body.classlist.contains('systemdarkpreference'); const currentsysisdark = ***window***.matchmedia("(prefers-color-scheme: dark)").matches; const isdark = (hassysdarkclass && currentsysisdark) || ***document***.body.classlist.contains('dark'); }); let’s see what each variable is checking: hassysdarkclass checks that the body has the systemdarkpreference class on it. currentsysisdark checks if the operating system is set to dark using the prefers-color-scheme similar to what we’re doing in our css. isdark checks that the first two variables ( hassysdarkclass and currentsysisdark ) are both true at the same time *or *that the body has the .dark class. this could have been one variable but it’s far easier to read split up like this. before we apply the correct styles to our body, we need to remove the hard coded systemdarkpreference since as soon as someone presses our button, they are indicating they want to override the system settings. ***togglecolourmodebtn***.addeventlistener("click", function () { const hassysdarkclass = ***document***.body.classlist.contains('systemdarkpreference'); const currentsysisdark = ***window***.matchmedia("(prefers-color-scheme: dark)").matches; const isdark = (hassysdarkclass && currentsysisdark) || ***document***.body.classlist.contains('dark'); *** document***.body.classlist.remove('systemdarkpreference'); }); then we want to finally apply the correct css rules by toggling the body’s class list to include the .dark class if isdark is false. ***togglecolourmodebtn***.addeventlistener("click", function () { const hassysdarkclass = ***document***.body.classlist.contains('systemdarkpreference'); const currentsysisdark = ***window***.matchmedia("(prefers-color-scheme: dark)").matches; const isdark = (hassysdarkclass && currentsysisdark) || ***document***.body.classlist.contains('dark'); *** document***.body.classlist.remove('systemdarkpreference'); ***document***.body.classlist.toggle('dark', !isdark); }); the end result should look like this. storing settings so that our visitors don’t have to keep readjusting the settings, we should store their preferences. in my last post i spoke about different methods to do this including localstorage and cookies. since my personal site is small and doesn’t collect data to be stored on the server, i’ve decided to go with localstorage. when we make any colour scheme change, we want to save it to the browser’s localstorage which we can do in the event listener we just added. ***togglecolourmodebtn***.addeventlistener("click", function () { ... let colourmode; if (***document***.body.classlist.contains("dark")) { colourmode = "dark"; } else { colourmode = "light"; } ***localstorage***.setitem("colourmode", colourmode); ***localstorage***.setitem("overridesyscolour", "true") }); for this first section there are a few moving parts. first we initiate colourmode so that we can dynamically set it later. next we check if the .dark class is applied to the body element, if it is then we can set colourmode to dark and if it isn’t then we can set it to light. then we can save this value in the localstorage. finally, we also want to keep track of the fact that we’ve overridden the system’s settings in the localstorage. the second section to this is to use what’s in the localstorage to set the page’s colour scheme when the visitor visits the page again. so somewhere outside of and above the event listener, we want to get the colourmode we saved previously and present the correct colour scheme depending on the value. if (***localstorage***.getitem("overridesyscolour") == "true") { const ***currentcolourmode ***= ***localstorage***.getitem("colourmode"); ***document***.body.classlist.remove('systemdarkpreference'); ***document***.body.classlist.add(***currentcolourmode***); } so we’re checking that the system colour scheme has been overridden and if it is, then we remove that hard coded system class then add the value that’s in the localstorage. something to note here is that this value can either be "light" or "dark" however, we don’t have any rules for the .light class so nothing will be applied to this and it will use the default rules as defined in our css. if you have rules for .light this will cause issues, so you may want to use a different name or an empty string when you’re setting the value in localstorage. choosing colours now, arguably the most important factor of dark themes. choosing the correct colours. many sites go for an off-black background and lighter white or off-white text. you want to be careful not to have contrast that’s too sharp but you also need to meet the minimum colour contrast of 4.5:1 for normal text for accessibility purposes. it’s important to make your user experience as comfortable to all visitors as possible. however, you don’t have to be confined to black and white, feel free to be creative. coolors is a tool that allows you to view colour combinations and ensure they meet the web content accessibility guidelines. i went for a dark blue, light blue and pink combo. finished page play with the finished thing. last words samsung internet is starting to support prefers-color-scheme as a labs menu item, so web developers can start working with it, and exploring how it helps them to build better ui. in the meantime, samsung internet will support force dark mode for the sake of users how expect dark web page when they set the device as dark. so if you want to experiment with prefers-color-scheme on samsung internet, make sure to turn it on via the labs menu for now. as i mentioned in my last post, there are many ways to implement dark mode and it’s up to you to analyse what the sacrifices for each method is. for example, if a visitor to my website has javascript turned off on their browser, then this solution won’t work. however, it’s overkill for me to store the theming data in a database (another method) because i don’t collect user data and don’t need to. the method i went with, while not perfect, is a nice middle ground. there are also other factors you may need to consider, such as the typography and icons which i didn’t have to think about. check out the final glitch project to see how i refactored the code and managed the state of the button. if this tutorial is useful to you, feel free to share it and show off your new dark mode sites! ✨
Lola Odelola
events mobile, health, game, ai, iot
blogthe 2022 samsung developer conference in san francisco showcased some of samsung’s latest innovations in technology. this year spotlighted samsung’s brilliant minds innovating a calm technology ecosystem that gives consumers more seamless experiences in their daily lives. every year we kick off sdc with a keynote speech. this year jonghee han, head of the device experience (dx) division, shared how samsung electronics is crafting systems that help make lives smarter, safer, more convenient, and more connected than ever before. covering everything from knox matrix to holistic household platforms like bixby home studio and smartthings. jh han, vice chairman, ceo and head of device experience (dx) division for those interested in learning more, discover the developer updates shared at sdc in this blog post. samsung electronics integrates matter into the smartthings ecosystem jaeyeon jung, corporate vice president at samsung electronics and head of smartthings, shared how developers can maximize calm technology in the home by tapping into smartthings new integration with matter. jaeyeon jung, vp and head of smartthings, mobile experience business matter-enabled devices will join numerous products and brands already available within smartthings’ vast ecosystem, including devices from google, eve systems, honeywell home by resideo, linksys, nanoleaf, philips hue, schlage, wemo, yale, and more. developers, we invite you to build code with matter-enabled devices and watch the many smartthings tech sessions. dolby atmos releases a 3-d audio plugin for samsung mobile matthew reyes from dolby announced dolby atmos’ a new audio plugin with audiokinetic. the audio plugin enables game developers to create a 3-d surround sound effect for galaxy buds and samsung mobile. now players can feel every part of the action on their phones. dolby’s free plugin offers developers a chance to create an even better immersive experience. check out dolby’s tech session, which provides a plugin tutorial. samsung open-sources bothandy project sebastien seung and the team at samsung research america released samsung bothandy’s "openbothandy" open-source project. openbothandy provides manipulation benchmark scenarios, real-time simulation, and baseline manipulation codes. sebastian seung, president and head of samsung research experiment with samsung bothandy and advance robot manipulation technologies. bixby home studio simplifies voice commands bixby's developer evangelist, roger kibbe, shared what’s new with bixby developer studio and bixby home studio. this year's newest update is bixby home studio's voice control optimization tool on smartthings home devices. asr, nlu, and an entire command system are now completed locally on one device. what this means is bixby home studio allows developers to create code that helps consumers complete multiple tasks with a single command on the phone. imagine, you can ask to turn on your ac, and bixby home studio also checks to see if you have any windows open. roger kibbe, senior developer evangelist, north america bixby labs listen to roger’s tech session for more updates and start developing with bixby home studio. samsung health stack optimizes research studies principal engineer jinwoo song from samsung research’s data research team demonstrated how samsung health stack helps developers, engineers, and health professionals optimize research related to digital health using wearable devices. with samsung health stack’s app sdk, developers can create mobile apps that collect data from participants. applications include medical research studies, clinician services, or whatever your imagination envisions. tune in to jinwoo's recorded tech session, and contribute your visions to samsung health stack. relive sdc22 if you’re not done exploring the latest tech innovations, we welcome you to get inspired by sdc from the comfort of your home. you can experience sdc22 all over again–from watching the highlights to accessing the tech sessions on-demand. thank you for reading through our developer announcement for sdc22 events in the past. let us know your favorite moments from sdc by tagging us with the hashtag #sdc22 on twitter, facebook, linkedin, and youtube to continue the discussion.
Mischa Shankerman
events advertisement
blogthis year’s samsung developer conference (sdc18) may still be a few weeks away, but the excitement is already building for samsung’s showcase of technologies that will help developers and creators build the software and services of tomorrow. we've just announced some of the "can't miss sessions" for sdc18. read on to learn more about some of the exciting sessions that will make sdc18 an event where now meets next. and for a limited time, get 50% off with promo code sdc18-dev50! spotlight session the spotlight session headlining day two of sdc18 will cover some of the tech industry’s most interesting topics. hear from thought leaders in gaming and ai as they discuss exciting news, and reveal their respective outlooks on the future. samsung will also share insights into its gaming strategy during the session, and spotlight innovations encompassing artificial intelligence, the s pen, and much more. speakers include sarah bond, xbox/microsoft’s head of global gaming partnerships and development; tim sweeney, founder and ceo of epic games, the studio behind the wildly popular fortnite; and john hanke, founder and ceo of niantic labs, makers of pokémon go. also included in the spotlight session is president and ceo of wacom, nobutaka ide, who will discuss the power of digital pens and what the future holds for digital ink. bixby sdc18 features a variety of sessions that demonstrate how samsung’s intelligence, bixby, is shaping the landscape for ai platforms. spanning lectures, panels and interactive activities, the sessions, including those listed below, offer attendees the insights they need to develop seamless user experiences for a wide range of devices and services. bixby and the new exponential frontier of intelligent assistants - in this session, key business and technical leaders from the bixby team will explain the ins and outs of the technology, outline bixby’s vision for a new kind of open ecosystem for developers, and discuss how and why to get involved. teaching bixby fundamentals: what you need to know - learn how to access bixby’s development tools, including bixby sdk and ide, to create a bixby experience for your business and prepare it for launch within the bixby ecosystem. smartthings last year at sdc, samsung unveiled smartthings, a new platform for connecting and controlling smart devices. this year, the company will discuss smartthings’ latest enhancements and demonstrate ways to implement the intuitive platform into more devices. highlighted sessions include: smartthings 101: new to smartthings - this session will discuss topics such as which kinds of smartthings api integrations can be built, as well as how to quickly create and integrate with the smartthings api. streamlining iot systems: smartthings cloud-to-cloud device integration - this session will introduce a new developer workspace for integrating cloud-connected devices with smartthings. the workspace will feature new apis and tools that will streamline development and go-to-market processes. devices that are integrated with smartthings will be controlled by bixby and other voice assistant platforms, as well as a full ecosystem of automation and service integrations. and much more additional details on these and other sdc18 sessions may be found here. for more information on this year’s conference, including registration details, please visit sdc18’s official website. and don’t forget to follow @samsung_dev on twitter and keep an eye on the hashtag “#sdc18” for the latest news and updates.
Lori Fraleigh
events mobile, game
bloglast week’s game developers conference in san francisco brought together top gaming professionals from around the world to showcase the latest in gaming technology. samsung participated in seven sessions during the conference showcasing the work we’re doing to advance the state of mobile gaming. you can re-watch select gdc sessions via our youtube channel. samsung is proud to be a promoter member of the khronos group and participate in many of their open standards, including the vulkan api. during #khronosdevday on tuesday, lewis gordon talked through depth stencil resolve, an upcoming extension to the vulkan api. kostiantyn drabeniuk then joined jack porter from epic games to discuss how we partnered to bring fortnite to mobile devices that run android 8.0 or higher (oreo or pie) and that have the right hardware can take advantage of the vulkan render hardware interface for higher performance than just using open gl es. you can get all of the presentations from the khronos dev day on their web site. on wednesday, samsung, arm, and epic games continued the discussion on optimization. i got my start building profiling and other real-time analysis tools for embedded systems, so i’m really excited to see all of these great tools being made available for today’s game developers. jose and michael shared practical tips on how to double your frame rate in one instance and how to get more than a 50% increase in performance by changing a single line of code in another. arm has also released their vulkan best practices for mobile developers on github. we also had a chance to share our work with unity on their upcoming adaptive performance feature. with precise information on thermal trends, mobile game developers can deliver longer play times and smoother frame rates on the galaxy s10 and galaxy fold. adaptive performance will soon be available as a preview in release 2019.1. we also shared the stage with google to talk about optimizing your apps for different screen sizes including dex and galaxy fold. if you haven’t already done so, check out our resources including our guide to app continuity, our emulator, and the remote testing lab. the google and sdp teams at #gdc19 finally, we discussed several aspects of our galaxy gamedev program which kicked off in 2016. samsung works with gpu manufacturers like arm mali, game engine providers like unity and unreal, as well as developers to ensure galaxy is the best mobile gaming platform. from loaner devices, tools, and on-site support, we’re supporting game developers around the world. we’ve introduced gpuwatch, which lets you monitor the performance of your game in real time without installing any additional software on the device. gpuwatch will be available through the developer options on select devices running android pie. our gamesdk, which will be available soon, allows you to check for gpu bottlenecks and predict thermal throttling so you can make adjustments in real time for maximum performance. outside of gdc, i had the opportunity to attend the 19th annual women in gaming rally. with a focus on diversity and inclusion, the panel discussion at this event highlighted some of the great efforts being made to ensure game creating and game playing can be great experiences for everyone. the energy and positivity in the room were truly inspiring. we hope you’ve enjoyed our focus on gaming during the month of march. stay tuned to our blog for #gamedev news.
Lori Fraleigh
success story game, marketplace, mobile, ar/vr/xr
blogwe continue to celebrate the top performing apps in creativity, quality, design, and innovation, as we interview winners of our best of galaxy store awards. today, we're talking with greg borrud from niantic about building games that take players out of their homes and into the real world. tell us about niantic niantic is probably best known as the developer of pokémon go, but we are much more than that! niantic is an augmented reality company that helps get people out into the world - exploring with others and having meaningful and engaging experiences. we are both a game developer/publisher as well as a technology company focused on bringing new games and experiences to the world through location-based and ar technology. can you share how niantic has pioneered real world gaming experiences? it started with ingress - a game that asked you to go out and battle for control of points of interest in the real world. this then exploded with the launch of pokémon go in 2016. we all remember packs of people searching for pokémon throughout their neighborhoods. we have continued to evolve our real world platform with more information about the world (we’ve mapped hundreds of millions of places around the world so far), with a focus on creating new gameplay experiences that encourage people to go outside and explore. your premise has been to include a combination of maps and gaming in your app development. can you share how this is done? we’ve built a robust platform that is a map of all the unique and interesting places in our world. this map is curated and updated by our players all the time and we strive to keep it as accurate as we can. that forms the foundation for our new game development. we want to have a wide variety of games and experiences, so we don't have too many restrictions on what a niantic product can be. we want to let the creativity of our teams and our developer partners lead us to entirely new gameplay concepts. what programming languages do you use in development of your games? we use a variety of languages depending on what part of the code our engineers are working in. we primarily develop in c# for the player’s device and java for our servers. occasionally we'll also use c++ or a scripting language like python. at niantic, your work represents the culmination of decades of obsessing about geospatial technology. how important is this technology to your game experiences? critically important. our games are a reflection of the real world. they literally take you outside, exploring neighborhoods and cities, so without precise mapping, we couldn’t build what we offer today. we often hear stories from our pokémon go community about how walking with our games has uncovered hidden gems and historic monuments in their neighborhoods that they never knew existed. our next area of focus is building a dynamic 3d map of the world so that we can progressively layer in augmented reality and other features into our games to make exploring the world more interesting and fun. at the end of the day, the game/experience needs to be fun no matter what technology it is built on top of. you have developed some of the biggest game titles, including pokémon go and harry potter: wizards unite, winner of the best of galaxy store awards 2019 for best ar game. how does augmented reality enhance your games and bring them to life? ar allows us to turn the world outside your door into one of the most amazing, dynamic game boards you can imagine. through ar, your world can be filled with pokémon or wizards. and we’re just in the infancy of what ar can offer. we’re excited to share some of the new ar technologies we are cooking up. your games are highly rated on the galaxy store. how do you maintain your games' quality? we try to learn from and listen to our players as much as we can. although it’s impossible to please everyone all of the time, we do take player feedback very seriously, and we are constantly striving to improve our games by listening, then iterating fast. how has the galaxy store badge supported your game discovery on the galaxy store? the galaxy store badge is supported on a variety of our marketing materials, including the product's website, so players know the game is available on their preferred platform. with all of your success, do you still experience challenges when developing your games? that is one of the great things about making games - there are always new challenges. as technologies, devices, and player preferences evolve, we are challenged every single day we come to work. you have to love (and live for) challenges if you want to be happy in this industry. are there common errors made by developers while programming games? a common error is not testing in a way that replicates a player’s real experience. when tested in isolation, something might ‘work’. but the key is constant testing while looking through the lens of the players. what advice do you have for indie developers attempting to develop a successful game business? start with a small, simple game loop and build it. get it into the hands of your friends and then iterate. it’s an incredible world for game developers right now, as the ability to build something on your own has never been easier. i’m a firm believer in learning by doing. as you continue to pioneer new technologies and gameplay mechanics, what trends do you expect to see? as our mapping and ar technologies continue to evolve and converge, we envision a 3d map of the world that will truly be the ultimate game board. if we can pair that with wearable devices in the future, we believe we will develop new entertainment experiences unlike anything you have seen before. what is ahead for niantic? we’ve got a lot of exciting stuff coming in the near term. as the end of june nears, we’re fast approaching our first anniversary of harry potter: wizards unite, which put magic in the hands of witches and wizards all around the world last summer. for that product, we’re thinking of some exciting new ways to immerse players in the wizarding world with new upcoming features, content releases, and fun in-game events. the fourth anniversary of pokémon go is also approaching this july, and we’ve reimagined our tentpole pokémon go fest event to be playable by the global player base on july 25-26th, wherever they may be. over the past four years, trainers have accomplished some amazing feats; notably walking a collective 28 billion kilometers and making over 280 billion visits to unique points of interest around the world. in the long term, our ultimate goal is to create meaningful and purposeful gameplay experiences. we think these will come in a wide variety of shapes and sizes, and to that extent we have more than 10 new games and ar experiences in different stages of development. we hope to release two new titles in the next six months, with a goal to sustain that cadence annually. we hope these experiences will have a long lasting impact on those who play them. thanks to greg borrud for sharing how niantic creates successful game franchises. follow us on twitter @samsung_dev for more developer interviews and tips for building games, apps, and more for the galaxy store. find out more about our best of galaxy store awards.
announcement galaxy watch, mobile
blogthe latest edition of galaxy unpacked was held on wednesday, august 5th, and for the first time it was virtual. we unveiled five new devices that empower work and play. galaxy unpacked featured lots of exciting updates for our designer and developer community, and what was mystery became mystic (bronze). you can watch the full livestream on youtube, or fast forward to these time codes for key moments 8:50 galaxy note20 and note20 ultra 53:45 galaxy watch3 1:08:01 galaxy z fold2 be sure to check out our galaxy watch3 artboards, now available on the galaxy store asset creator. and now, here are the key takeaways on each of the new devices unveiled at galaxy unpacked. galaxy note20 and note20 ultra the galaxy note20 series is a productivity powerhouse that works like a computer and lets users game like a pro. the series comes in two versions: galaxy note20 ultra, designed for note fans who demand the ultimate in power and productivity, and galaxy note20, for those note users looking to maximize their time for work and play. the galaxy note20 series includes the ever-popular s pen. developers, you can leverage the s pen remote sdk, s pen framework, and air actions to enhance the experience of your apps and games. as part of our continued partnership with microsoft, xbox game pass is coming to galaxy store. with an xbox game pass ultimate subscription, users will be able to play their favorite xbox games in the cloud (beta) right from their galaxy device. galaxy users are always looking for new games to play, so be sure to submit your own game to galaxy store. if your game has in-app items for sale, be sure to check out the samsung in-app purchase sdk which lets users transact with any of the payment methods associated with their samsung account, including samsung pay and samsung rewards. we also have numerous technical resources and best practices on optimizing your game and getting the most out of the device gpu in galaxy gamedev. we also unveiled the new wireless version of samsung dex. as samsung dex becomes even easier to use, you'll want to ensure your apps are optimized for samsung dex. our resources detail how to add multi-window support, handle runtime configuration changes, and support different input modes. galaxy watch3 the galaxy watch3 is a next-generation companion for managing routines, smashing fitness goals, and taking ownership over health. built with premium materials and a slimmed-down version of the popular rotating bezel, galaxy watch3 features the craftsmanship of a luxury timepiece, while still being comfortable enough to wear all day and all night. developers can build tizen-based apps while designers can build watch faces with galaxy watch studio to enhance and customize the user's experience. we will begin reviewing new watch face designs starting next week, but you can get a head start on the requirements now. as we mentioned, a new version of the galaxy store asset creator, which includes the galaxy watch3, is now available. new lifestyle photo assets featuring the galaxy watch3 are available as well. the new galaxy watch3 runs tizen 5.5. developers can check out this video tutorial to learn what is new in tizen 5.5. galaxy z fold2 last, but certainly not least, was the galaxy z fold2. this device builds on the experience of both the galaxy fold and the galaxy z flip to deliver unique foldable experiences. more details about the galaxy z fold2 will be released on september 1st. in the meantime, check out our resources on designing and optimizing for foldable devices. wrap up we also showcased the galaxy tab s7 and s7+, devices where your apps and games will be featured in galaxy store. the galaxy buds live introduced a new shape for wireless earbuds, an ergonomic design that’s being described as the perfect fit. can't get your hands on a physical device? stay tuned to our news feed - we'll announce when the new devices are available in our remote test lab. we can't wait to see what you create for these new devices. make sure to join us on the developer forums to share what you're working on and get your questions answered. catch up on all of yesterday's announcements on the samsung newsroom or watch the replay on youtube.
Lori Fraleigh
We use cookies to improve your experience on our website and to show you relevant advertising. Manage you settings for our cookies below.
These cookies are essential as they enable you to move around the website. This category cannot be disabled.
These cookies collect information about how you use our website. for example which pages you visit most often. All information these cookies collect is used to improve how the website works.
These cookies allow our website to remember choices you make (such as your user name, language or the region your are in) and tailor the website to provide enhanced features and content for you.
These cookies gather information about your browser habits. They remember that you've visited our website and share this information with other organizations such as advertisers.
You have successfully updated your cookie preferences.