• 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
      • DOCS
      • SDK
      • API REFERENCE
      • CODE LAB
      • BLOG (100)
      • NEWS/EVENTS
      • BLOG
        api reference code lab blog news/events
      1. announcement | mobile, design, galaxy watch, marketplace

      blog

      Top 10 Blog Posts Of 2018

      2018 was a great year for the samsung developer program blog with industry experts in design, marketing, and programming sharing lessons learned and best practices. we've got more great content planned for 2019, but before we flip the calendar to next year, let's take a look back at the top posts from the last twelve months. thanks for reading! #10 introducing tony morelan, sdp senior developer evangelist once a body double for christian slater (true story!), tony is now a seasoned watch face and theme designer who joined the developer relations team as a senior evangelist this october. moving forward, you’ll find his work here in the blog, but his biggest role will be meeting you and other developers at our 2019 live events. read on to find out how tony made his way to samsung. #9 infinity watchfaces' chris shomo offers helpful tips on what every designer should watch for veteran designer, chris shomo, shares a number of great tips on how to make a great watch face, as well as what to avoid. chris has over 230 watch faces for sale, so if you’re looking for advice on someone who knows the business, he’s your man. #8 top tips for editing 360 video one of the best – and most-affordable – ways of shooting 360-degree video is the samsung gear 360 camera. but recording great content is only half the battle – the real magic happens during the editing process. this article contains some great tips on editing 360-degree video in a way that will have your friends thinking you’re the next james cameron. #7 2thumbz svp sam pasquale's thoughts on developing lucrative design partnerships samsung themes can be quite lucrative for top designers. one of those top designers is 2thumbz, which has a tremendously successful partnership with the ncaa. in this "devs doing it right" post, sam pasquale gives his candid thoughts on what it’s like to work with the ncaa license. #6 what does samsung's unpacked event mean for developers? several cool, new products were unveiled at samsung galaxy unpacked 2018, and senior director of developer relations, lori fraleigh recapped the highlights. learn about the s pen, updates to bixby, and more. #5 roebotx founder andrew roe takes a problem-solving approach to watch face design it’s easy to create a galaxy watch face, but it takes a lot of talent and hard work to create one that both looks great and sells well. andrew roe writes about lessons learned in this highly-informative "devs doing it right" post. #4 visa advises devs to think convenience and partnership mobile commerce had another record-breaking year in 2018. visa’s matt smith shares his thoughts on strategic partnerships and the importance of making sure your app keeps information secure everywhere you want to be. #3 the weather channel on artificial intelligence and monetization strategies for apps chances are pretty good that you're a fan of artificial intelligence or making money – perhaps you even enjoy both! if so, this entry in the source code series from the weather channel’s kevin crenshaw will be right up your (tornado) alley. #weatherjokesftw #2 monotype gets real about ar/vr monotype product management director, vivek vadakkuppattu answers questions about best practices for ar and vr development. there’s plenty of good information for new and seasoned developers in this "source code" article. #1 introducing the 2018 source code: a dev’s guide technical evangelist josue bustos introduces himself, the "source code" series, and makes a few predictions for 2018. how did his prognostications fare? check out the blog and decide for yourself.

      Samsung Developer Program

      https://developer.samsung.com/sdp/blog/en-us/2018/12/21/top-10-blog-posts-of-2018
      1. tutorials | health, galaxy watch

      blog

      Workout, a Tizen Sample App: Gathering Heart Rate Data

      this is the third blog in a series to introduce the sample application workout, a tizen example for monitoring health sensors on a wearable device. the first blog, workout -- a tizen sample app for monitoring health sensors, presented the basic features of the application. the second blog, adding distance traveled to the tizen workout sample app, described how distance traveled is calculated. in this blog, i will demonstrate another key feature of the app, heart rate measurement (hrm), which shows the most recent heart rate intensity. implementation to start collecting data from the hrm sensor, first start tizen.sensor.heartratemonitor from tizenfx api. heartratemonitorservice.cs public void init() { try { _hrm = new hrm { interval = 1000, pausepolicy = sensorpausepolicy.none }; _hrm.dataupdated += ondataupdated; } catch (exception) { notsupported?.invoke(this, eventargs.empty); } } initiating hrm in this way invokes dataupdated every one second and the sensor is not stopped even when the application is sent to the background. the data from the event is handled by the ondataupdated handler, which invokes the event with the single bpm value. this event is listened to by the onservicedataupdated handler in the heartratemonitormodel, where all information related to heart rate is calculated: heartratemonitormodel.cs private void onservicedataupdated(object sender, int bpm) { double normalizedbpm = math.clamp((bpm - _minbpm) / (double)(_maxbpm - _minbpm), 0, 1); int bpmrange = bpm < _minbpm ? 0 : math.min((int)((normalizedbpm * (_bpmranges - 1)) + 1), _bpmranges - 1); if (!_ismeasurementpaused) { _bpmrangeoccurrences[bpmrange]++; } updated?.invoke(this, new heartratemonitorupdatedeventargs(new heartratemonitordata { bpm = bpm, bpmrange = bpmrange, bpmrangeoccurrences = _bpmrangeoccurrences, normalizedbpm = normalizedbpm })); } however, let's start with the values that are used in the above method: _maxbpm - this value is calculated during the class instantiation according to the formula: 220 - user age _minbpm - this is half the value of _maxbpm _minbpm and _maxbpm is used to calculate normalizedbpm, a value ranging from 0 to 1. next, the bpmrange to which the current hrm service value belongs is calculated: for bpm below _minbpm, bpmrange is set to 0. for bpm greater than or equal to _minbpm, bpmrange is set to either (_normalizedbpm * (_bpmranges -1) + 1) or (_bpmranges - 1), whichever value is smaller. this calculated pulse interval is used as a position in an array, whose value is increased by 1. to obtain the most common pulse interval, find the index with the highest value associated with it. detailspageviewmodel.cs intensity = array.lastindexof(bpmrangeoccurrences, bpmrangeoccurrences.max()).tostring(); to display the range indication, intensity is delivered to xaml and converted into text using a converter. detailspageview.xaml.cs <models:detailsitemdata name="intensity" value="{binding intensity, converter={staticresource bpmrangevalueconverter}}" icon="images/details_intensity_icon.png" isactionbuttonvisible="true"> read more to learn more about the implementation of the hrm sensor and the use of the data in the workout app, see this tutorial in the final blog of this series, you'll learn how circlelistview is used in the app.

      Patryk Falba

      https://developer.samsung.com/tizen/blog/en-us/2020/11/18/workout-a-tizen-sample-app-gathering-heart-rate-data
      1. tutorials | galaxy watch, health

      blog

      Workout, a Tizen Sample App: Calculating Distance Traveled

      this is the second blog in a series to introduce the sample application workout, a tizen example for monitoring health sensors on a wearable device. the previous blog, workout -- a tizen sample app for monitoring health sensors, introduced the sample application, workout, for runners who own a wearable device. in this blog, i will describe how one of the key features, traveled distance, is calculated. implementation to calculate the traveled distance, the application uses the locationservice class providing location-related gps data. this service uses the tizen.location api to initialize the gps receiver: services/locationservice.cs /// <summary> /// initializes locationservice class instance. /// </summary> private locationservice() { _locator = new locator(locationtype.hybrid) { interval = _gpscallbackinterval }; attachevents(); } the api is also used to set the change handlers: services/locationservice.cs /// <summary> /// sets service listeners. /// </summary> private void attachevents() { _locator.servicestatechanged += (sender, args) => servicestatechanged?.invoke(this, args.servicestate); _locator.locationchanged += (sender, args) => locationchanged?.invoke(this, args.location); _locator.settingchanged += (sender, args) => settingchanged?.invoke(this, args.isenabled); } every time the location changes, the locationchanged event is invoked with the new location. this event has an attached listener in locationmodel which receives the new location object. the new location is used to calculate the distance to the previous location and stored in a _locationdata object: models/locationmodel.cs _locationdata.distance += location.getdistanceto(_lastlocation) / settingsservice.instance.distance.unittokmratio; the new location data is passed to mainmodel, where all workout data are gathered and processed before being sent to viewmodels. the entire flow of location data and other workout data is described in detail at tizenschool.org in the next blog in this series, i will discuss how data is gathered from the heart rate monitor.

      Patryk Falba

      https://developer.samsung.com/tizen/blog/en-us/2020/11/17/workout-a-tizen-sample-app-calculating-distance-traveled
      1. tutorials | mobile

      blog

      Using Remote Test Lab with Android Studio

      this blog is the fourth in a series of posts about remote test lab (rtl). in previous blogs, we covered what is remote test lab, its new features, and auto repeat. in this blog, we show you how to connect rtl to android studio and how to deploy and debug your app on the remote device. in an upcoming blog, we are going to take a deep dive into some additional features of remote test lab. remote test lab allows you to run and debug your application on real devices remotely. in this blog, we will connect a remote test lab device with a local development machine’s adb (android debug bridge) using remote debug bridge. the remote debug bridge tool enables you to run and debug your app to check compatibility with the latest samsung mobile devices, which solves the problem of not having your own physical devices. connect your remote test lab device to android studio to get started, launch a remote test lab client, then go to remote test lab and reserve one of the available mobile devices. the operating system version, device location, and desired time can be selected on the remote test lab page. a jnlp file is downloaded to your computer when you click the start button. if you run this file, the remote test lab client is launched and a live image of the device is shown in the client. step 1. when the live image is shown, right-click on the device's screen and select ‘test > remote debug bridge.’ step 2. in the pop-up window, view the required command and port number to connect your android studio to the remote test lab device. step 3. open a command prompt window and run the adb command with the given port number. in this example, the command is: adb connect localhost:50964 note: you must accept the rsa key prompt by allowing usb debugging when you run the adb connect command for the first time on a remote test lab device. deploy and debug apps from android studio step 1. the device is now ready to deploy your app from android studio. build and run your app from android studio. in the following screenshot, an app is being deployed on a remote test lab device from android studio. step 2. the app is deployed and launched successfully on the remote test lab device step 3. debug your app from android studio just like on a real device. in conclusion, remote test lab offers a convenient and effective way to check the compatibility of your app and use debug facilities. finally, our developer forum is an excellent way to stay up-to-date on all things related to the samsung galaxy ecosystem. remote test lab article series get started with remote test lab for mobile app testing what's new in remote test lab testing your app with auto repeat using remote test lab with android studio web-based client preview (coming soon) go to remote test lab

      RTL Support

      https://developer.samsung.com/sdp/blog/en-us/2021/06/04/using-remote-test-lab-with-android-studio
      1. announcement | web

      blog

      Samsung Internet Newsletter: February 2022

      welcome to our february 2022 newsletter! the samsung internet developer advocacy team is starting off 2022 with a foray into the innovative and exciting arena of ... email? starting this month, we’re going to be sending out a monthly newsletter that combines some notes on what we’ve been up to in the last month, a wrap-up of some of our advocacy work (including blog posts, videos, open source contributions, etc…) and some links to news items we think are notable for web developers. we’re keen to get your feedback on our format and what you’d find especially useful. remember you can always find us online via our twitter account https://twitter.com/samsunginternet, at our medium blog https://medium.com/samsung-internet-dev and at https://developer.samsung.com/internet. to subscribe to our newsletter and get these kinds of updates to your very own inbox, visit our sign-up form! <-- subscribe here releases kicking off, we’re excited to announce the release of samsung internet 16.0 to our stable channel. 16.0 includes a new option to place the url bar at the bottom of the screen, automatic https upgrades (which can be activated in the labs menu), enhanced searching and enhancements to our tracking protection. you can read more about 16.0 in our blog post on the beta release. meanwhile we are shipping 16.2 beta in our beta channel. 16.2 improves dark mode and enables our device posture api for folding screens by default. you can always find samsung internet and samsung internet beta at https://galaxy.store/internet and https://galaxy.store/internetbeta respectively. standards meanwhile we’ve been busy in the world of standards as well. the immersive web working group (co-chaired by ada) has been working on a new charter incorporating many new webxr features including the model element for displaying 3d models in-line in web pages, as well as additional ar and vr features. the w3c developer council (co-chaired by lola) is also kicking off a new year looking for new ways to bring web developers into the standards community and process. for folding screens, laura has been looking at ways to augment the device posture api to give developers additional information when composing ui elements. where to find us you’ll see our advocates in the following events in the coming months. ada will be speaking about augmented reality at cityjs on the 23-25 march, regent street cinema in london, uk. find out more at https://cityjsconf.org/ the polys, awards for webxr will be returning for another great night highlighting some of the best webxr experiences from the past year. ada will be participating alongside the other chairs of the immersive web working group which are developing the api. laura will be participating in the online edition of jsworld conference, her talk “behind the scenes of a service worker” will dive into the cycle of a service worker and share some offline strategies. the online series are completely free and open to the public, you can register here: https://frontenddeveloperlove.com/free from our advocates check out laura’s post on 2022 goals for some of our thoughts on what’s coming up, including the future of the web platform. 🪐 new year, new web advocacy goals ada also wrote a post on adding rss feeds to your website, putting a new spin on this old web tech. * add rss feeds to your website to keep your core readers engaged lola released her video tutorial on dark mode (prefers color scheme) which you can also read about in this blog post from last year. view it here: * https://youtu.be/eaqbvauoj08 sylwester wrote a piece on using webgl and web sockets on galaxy watch! the web(gl) from your wrist!

      https://developer.samsung.com/internet/blog/en-us/2022/02/02/samsung-internet-newsletter-february-2022
      1. tutorials | health, galaxy watch

      blog

      Workout, a Tizen Sample App: Using CircleListView to Display Data

      this is the final blog in a series to introduce the sample application workout, a tizen example for monitoring health sensors on a wearable device. the first blog, workout -- a tizen sample app for monitoring health sensors, presented the basic features of the application. the second blog, adding distance traveled to the tizen workout sample app, described how distance traveled is calculated. the third blog, adding heart rate summary to the tizen workout app, demonstrated how heart rate data is gathered. this blog describes how the application uses the tizen.wearable.circularui extension of the xamarin.forms framework. this extension provides a set of components customized for the wearable profile that makes development easier and efficient. it provides, among others, a circlelistview component, which is used on the summary view of the application. the list contains elements that differ from each other in terms of appearance. apart from the different contents of the text, they allow you to: use different icon images set different positions of text elements on selected elements use converters for selected list items display the action button on selected elements of the list time distance pace intensity itemsource the information about how the individual elements of the list should look like is provided by itemsource, which is represented by the list of elements of the detailsitemdata class. views/workout/detailspageview.xaml <cui:circlelistview.itemssource> <x:array type="{x:type models:detailsitemdata}"> <models:detailsitemdata name="time" value="{binding elapsedtime}" icon="images/details_time_icon.png"> <models:detailsitemdata.valuebounds> <rectangle x=".5" y="193" width="-1" height="-1" /> </models:detailsitemdata.valuebounds> <models:detailsitemdata.namebounds> <rectangle x=".5" y="245" width="-1" height="-1" /> </models:detailsitemdata.namebounds> </models:detailsitemdata> <models:detailsitemdata name="distance" value="{binding distance}" icon="images/details_distance_icon.png"> <models:detailsitemdata.valuebounds> <rectangle x=".5" y="193" width="-1" height="-1" /> </models:detailsitemdata.valuebounds> <models:detailsitemdata.namebounds> <rectangle x=".5" y="245" width="-1" height="-1" /> </models:detailsitemdata.namebounds> </models:detailsitemdata> <models:detailsitemdata name="average pace" value="{binding averagepace}" icon="images/details_average_pace_icon.png"> <models:detailsitemdata.valuebounds> <rectangle x=".5" y="193" width="-1" height="-1" /> </models:detailsitemdata.valuebounds> <models:detailsitemdata.namebounds> <rectangle x=".5" y="245" width="-1" height="-1" /> </models:detailsitemdata.namebounds> </models:detailsitemdata> <models:detailsitemdata name="intensity" value="{binding intensity, converter={staticresource bpmrangevalueconverter}}" icon="images/details_intensity_icon.png" isactionbuttonvisible="true"> <models:detailsitemdata.valuebounds> <rectangle x=".5" y="172" width="-1" height="-1" /> </models:detailsitemdata.valuebounds> <models:detailsitemdata.namebounds> <rectangle x=".5" y="224" width="-1" height="-1" /> </models:detailsitemdata.namebounds> </models:detailsitemdata> </x:array> </cui:circlelistview.itemssource> models/workout/detailsitemdata.cs using xamarin.forms; namespace workout.models.workout { /// <summary> /// details item data class. /// used as one element of the details page list. /// </summary> public class detailsitemdata : bindableobject { #region properties public static readonly bindableproperty valueproperty = bindableproperty.create("value", typeof(string), typeof(detailsitemdata), default(string)); /// <summary> /// workout detail name. /// </summary> public string name { get; set; } /// <summary> /// workout detail value. /// </summary> public string value { get => (string)getvalue(valueproperty); set => setvalue(valueproperty, value); } /// <summary> /// workout detail icon. /// </summary> public string icon { get; set; } /// <summary> /// item layout value bounds. /// </summary> public rectangle valuebounds { get; set; } /// <summary> /// item layout name bounds. /// </summary> public rectangle namebounds { get; set; } /// <summary> /// workout detail action button visibility flag. /// </summary> public bool isactionbuttonvisible { get; set; } #endregion } } itemtemplate the values provided by itemsource are used in itemtemplate. views/workout/detailspageview.xaml <cui:circlelistview.itemtemplate> <datatemplate> <viewcell> <absolutelayout heightrequest="360" horizontaloptions="fillandexpand" verticaloptions="fillandexpand"> <image absolutelayout.layoutflags="xproportional" absolutelayout.layoutbounds=".5, 74, autosize, autosize"> <image.source> <fileimagesource file="{binding icon}" /> </image.source> </image> <label text="{binding value}" fontsize="{staticresource fontsizem}" textcolor="#fff" absolutelayout.layoutflags="xproportional" absolutelayout.layoutbounds="{binding valuebounds}"> </label> <label text="{binding name}" fontsize="{staticresource fontsizexxs}" fontattributes="bold" textcolor="#aaffcc" absolutelayout.layoutflags="xproportional" absolutelayout.layoutbounds="{binding namebounds}"> </label> <button absolutelayout.layoutflags="all" absolutelayout.layoutbounds="0, 1, 1, .25" text="ok" textcolor="#1b1b7d" backgroundcolor="#aaffcc" command="{binding bindingcontext.finishcommand, source={x:reference listview}}" isvisible="{binding isactionbuttonvisible}" tizen:visualelement.style="bottom" /> </absolutelayout> </viewcell> </datatemplate> </cui:circlelistview.itemtemplate> the values modify the content in each viewcell element accordingly, so that: the name and value properties set the values of the text property of the selected label elements the namebounds and valuebounds properties set the layoutbounds property of absolutely positioned label elements the icon property sets the source property of the image elements responsible for displaying the item icon the isactionbuttonvisible property sets the isvisible property of button elements, making them visible when the given value is true read more to learn more about the implementation of circlelistview in the workout application, please see this tutorial. thank you for reading the tutorials about the workout app. for more information about this app and developing for the tizen platform, please visit developer.tizen.org.

      Dariusz Paziewski

      https://developer.samsung.com/tizen/blog/en-us/2020/11/19/workout-a-tizen-sample-app-using-circlelistview-to-display-data
      1. featured | web

      blog

      Add RSS Feeds to your website to keep your core readers engaged

      rss is a well established but often well hidden web technology. it’s powerful but simple or perhaps it’s powerful because of its simplicity. sara soueidan suggested that publishing content on your own website and providing an rss feed for it would be a great goal for 2022 and i wholeheartedly agree. a major problem with trying to raise an audience on many popular social media sites is that you are entirely at their whim as to how your audience can engage with your work. they act as gate-keepers with their own self-interest, they will hide your content if it contains certain words or phrases which their advertisers and corporate sponsors do not like or if it contains links to rival platforms. yes, i understand the irony of me authoring this on medium. to regain control i also republish the articles on our samsung blog and my personal website. by publishing on your own blog you can talk about technical terms like ‘killing orphaned threads’ which would be impossible on tiktok, lgbt issues which gets de-monitised on youtube, or link to external web sites which gets suppressed under twitter’s algorithmic timeline. the past years have been the tipping point where the convenience of using social media as a publishing platform has started being outweighed by it’s drawbacks. 2022 is certainly the year where taking your content off social media and using your own website will gain dividends. one downside of hosting content on your own website is that it is harder to maintain a core audience that gets notified when you publish something new. that’s where rss feeds come in, they allow people to follow the content of creators they enjoy across many websites from a central location. rss feeds at their core are simple xml lists of content with a title and a url and usually some other descriptive information. rss feeds are read with an rss client. the client will fetch the rss feeds and show you what items they contain. usually they also remember which items in a feed you have read and which are new and some will even periodically fetch the rss feed and send you notifications when a new one has come in. the format of the rss feed is a machine-readable format called xml. this language which looks like html is more strict and unlike html will fail to parse it contains errors. atom vs rss: as a quick aside there are two competing standards for feeds like this call rss and atom, they both use xml and they share the core fields most clients work with either without issue. colloquially rss kinda refers loosely to both so don’t stress about it. this article will cover rss in particular because it’s simpler and the tag names are nice and friendly. as an example completed rss feed, here is a link to the rss feed for the bbc’s england page http://feeds.bbci.co.uk/news/england/rss.xml you can view the source to see how the xml is formatted. here is a rough over-view of the main parts of an rss feed. <rss> the header information that says this is an rss document, with the details of how to parse it. it’s only child is the <channel> tag this tag contains the information about the channel and one or more <item> tags each <item> describes an individual item in the feed such as a single article or blog post, video, image or comment. this article will tell you how to construct your own rss feed for your own website. any website which will receive regular updates it’s ideally suited for an rss feed, which will help users stay up-to-date. there are many types of website content which are appropriate. best content to turn into an rss feed a website where new content is added is perfect for an rss feed. this may seem like a broad category but there are many great examples: a news website with regular news stories by many authors, a blog with frequent updates, an image board where many users can post images, a band web site posting new music, a podcast or a video-blog (vlog). even a shopping site can have an rss feed to notify customers of new products being added. for most small sites creating a single rss feed for each new update on the site is a popular choice. e.g. if you are a musician then add an update each time you post a new song, if you are a blogger then each time you post a new blog post. but for a larger site which has very frequent activity from a range of authors having many rss feeds, such as one for each content tag and author, is a great way to let users filter your sites content to just the pieces they are interested in. by letting users choose the content they want it will keep them coming back. for example a user may only care about articles by ‘ada rose cannon’ or with the topic ‘fun facts’. an rss feed is essentially a machine readable view of the various index pages on your website. if there is a page that would let users get a filtered view of your website content then making a machine readable rss feed for it too is a natural choice. creating an rss feed for your blog post rss feeds work great on statically generated websites. you can generate the updated rss feed automatically when the site is built. these are just xml files and kept alongside the other site files. the content of rss feeds is usually identical to the existing html index pages on your site with the display content removed and additional tags to describe the rss feed. so adapting the templating code from these index pages is a great place to start. this is the jekyll code i use to generate the rss feed for my jekyll based website it’s in a file called feed.xml it looks complex but we will break it down line by line after the snippet: <?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:atom="[http://www.w3.org/2005/atom](http://www.w3.org/2005/atom)" xmlns:dc="[http://purl.org/dc/elements/1.1/](http://purl.org/dc/elements/1.1/)"> <channel> <title>{{ site.name | xml_escape }}</title> <description>{{ site.description | xml_escape }}</description> <link>{{ site.url }}</link> <atom:link href="{{ site.url }}/[{{](https://ada.is/{{) page.path }}" rel="self" type="application/rss+xml" /> {% for post in site.posts %} <item> <title>{{ post.title | xml_escape }}</title> <description>{{ post.description | xml_escape }}</description> <pubdate>{{ post.date | date_to_rfc822 }}</pubdate> <link>{{ site.url }}/{{ post.url }}</link> <guid ispermalink="true">{{ site.url }}/{{ post.url }}</guid> </item> {% endfor %} </channel> </rss> breaking it down line by line, <?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:atom="[http://www.w3.org/2005/atom](http://www.w3.org/2005/atom)" xmlns:dc="[http://purl.org/dc/elements/1.1/](http://purl.org/dc/elements/1.1/)"> we open with the standard header for an rss file. the xmlns:atom and xmlns:dc attributes on <rss> technically make this an atom feed but they are required for us to add the <atom:link> element to the <channel> which is required by some rss clients to know where to download future updates. the atom format is mostly a superset of rss so the rest of the file will be standard rss but this header would let us use some atom features if we wanted to. breaking down the channel description part of the file. at the bottom we can see the <atom:link> as just mentioned: <channel> <title>{{ site.name | xml_escape }}</title> <description>{{ site.description | xml_escape }}</description> <link>{{ site.url }}</link> <atom:link href="{{ site.url }}/[{{](https://ada.is/{{) page.path }}" rel="self" type="application/rss+xml" /> the title tag is the name of the feed for example “ada’s blog posts” or “posts by jane doe for big tech site” or “#cat-pictures on alice’s photo blog” the link is the url for the canonical version of the content not the link to the rss feed. the atom:link is the link to the current url of the rss feed the description should describe the feed or the content. these tags should be only used once for the channel. you can find more rss tags for the channel here you can use here: http://www.landofcode.com/rss-reference/channel-elements.php next we have the <item> tag. this is inside the channel tag. each channel can have any number of <item>. where each item represents a single unit of the feed and it looks something like this: <item> <title>{{ post.title | xml_escape }}</title> <description>{{ post.content | xml_escape }}</description> <pubdate>{{ post.date | date_to_rfc822 }}</pubdate> <link>{{ site.url }}/{{ post.url }}</link> <guid ispermalink="true">{{ post.link | xml_escape }}</guid> </item> the <guid> should be unique, the url to the original content works really well as a globally unique id. you can find more tags to use for the items here: http://www.landofcode.com/rss-reference/item-elements.php since we technically made this an atom feed in our header we can take advantage of some atom tags. one in particular is extremely useful for news and blogging sites is the <dc:creator> tag. you can use multiple of these per <item> to name each author who created the content. this is better than the rss <author> tag which is strictly an email address, most people don’t want to publish their email address where a name is more useful. nb: you may notice that i used the xml_escape jekyll liquid filter in my template. this is to convert characters that are unsupported such as < with < xml is very sensitive to syntax errors so it’s important to test that your rss feed. testing your feed you can ensure that your rss feed can be loaded by testing it. the quickest way to do this is to load it into the rss feed tester: https://validator.w3.org/feed/ if the validator finds errors it is then useful to copy the current feed content into the “validate by direct input” tab to make rapid changes until you have fixed the errors and then fix the errors in your template and run the validator again. another useful thing to try is to load it up in an rss client, i run an online client here in which you can enter the url to see what it looks like: https://deno-rss.glitch.me my rss client runs on glitch, which lets you spin up new versions of the website server. if you are interested in how an rss client works under the hood you can look through the source code or remix it to run your own version which you can change as you like: https://glitch.com/~deno-rss advertising your rss feed now you have made your wonderful rss feed, you want to advertise it to users. there are two ways of doing this that work together. firstly for helping users see that there is an rss feed available you should display the rss feed icon on your website and have it link to the feed version of the current page. <a href="posts.xml"><img src="rss.png" alt="subscribe to my website"></a> you can use the rss logo to clearly show what it is but make user you use an alt tag to show what it is. the other main method of advertising your rss feed is by a machine readable html tag in the head of the html page. this isn’t visible to users but will inform the user’s web browser and rss client that there is an rss version of that site. so if you try loading the site into an rss client it will automatically find the location of the rss feed. <link rel="alternate" type="application/rss+xml" title="rss feed for my website" href="posts.xml" /> some websites don’t even show the icon and you will be surprised by how often trying to load a website in an rss client will reveal the rss version of the same data. for example every tumblr blog has an associated rss feed you can load in your rss client. wrapping things up rss feeds are very flexible and powerful they can give you the ability to keep pulling in users to your web site in a way that you control.

      Ada Rose Cannon

      https://developer.samsung.com/internet/blog/en-us/2022/01/14/add-rss-feeds-to-your-website-to-keep-your-core-readers-engaged
      1. tutorials | design, mobile, foldable

      blog

      Foldable Adaptation Essentials: App Continuity and Multi-Window Handling

      app continuity and multi-window are key features of foldable smartphones. with app continuity, you can seamlessly go from the small screen to the large screen without the need to reopen the app that you were using. with multi-window, you can reply to an email in a pop-up window while using other apps and it is even easier to make dinner plans over text while checking your calendar. the large display is called the main display, while the inner small display is called the cover display. in this blog, we learn how to adapt these essential features in our app. figure 1: multi-window and pop-up window let us find out how much needs to be changed to take advantage of these features. app continuity moving an app between the two displays affects the size, density, and aspect ratio of the display it can use. moreover, your app data needs to be preserved during the transition to provide a seamless experience. this is what happens during the transition the activity is destroyed and recreated whenever the device is folded or unfolded. to implement this, app data needs to be stored and then used to restore the previous state. the app data can be stored in two ways. in this blog, we have stored the app data using the onsaveinstancestate() method of android. the other way is to use viewmodel which is shown in the blog how to update your apps for foldable displays. for our example, we have used an app, where we need to store the current score of two teams before the activity is destroyed so that we can restore the score when the activity is recreated after the screen transition (this sample app is provided at the end of this blog). we store the scores in a bundle inside onsaveinstancestate, using two key-value pairs. override fun onsaveinstancestate(outstate: bundle) { scoreview1 = findviewbyid(r.id.team1score) as textview scoreview2 = findviewbyid(r.id.team2score) as textview outstate.putstring("score1", tempscore1.tostring()) outstate.putstring("score2", tempscore2.tostring()) super.onsaveinstancestate(outstate) } we can check inside the oncreate function if the savedinstancestate is null. if it is null, then the activity has just been launched without a saved prior state. if it is not null, then we should retrieve the value from the savedinstancestate bundle and restore the value to the ui in order to provide an immersive experience to the users. if(savedinstancestate != null){ var text1: string? = savedinstancestate.getstring("score1") var text2: string? = savedinstancestate.getstring("score2") scoreview1?.text = text1 scoreview2?.text = text2 team1score = text1?.toint()!! team2score = text2?.toint()!! } demonstration app continuity figure 2: screen transition multi-window and multi-tasking another vital feature of foldable devices is multi-window. two or more apps can run in split-screen (multi-window) mode on the main display of foldable devices. users can create their own layouts with up to three app windows on the screen. pop-up view is another option, which lets you temporarily use another app without closing the current app, such as to quickly view a message while enjoying a movie. to implement these features, the developer needs to focus on responsive layout while designing their ui. to implement multi-window and enable multi-tasking, we need to use the following flags: screensize, smallestscreensize, and screenlayout. if you want to manually handle these changes in your app you must declare those flags values in the android:configchanges attributes. you can declare multiple configuration values in the attribute by separating them with a pipe (|) character. you can check out details for each value here. in addition, we need to set android:resizeableactivity as true, which allows the activity to be launched in split-screen and free-form (pop-up) modes. if the attribute is set to false, the activity does not support multi-window mode. <activity android:name=".mainactivity" android:configchanges="screensize|smallestscreensize|screenlayout" android:resizeableactivity="true"> demonstration multi-window figure 3: multi-window pop-up window figure 4: pop-up window sample app a sample app has been developed to illustrate how to implement app continuity and multi-window. in this app, a simple ui is designed to keep score of two teams playing a game. to adapt this app for foldable ui, some configurations have been changed by following the official guide. sample app - app continuity and multi-window (20.15mb) oct 18, 2021 conclusion foldable devices provide a richer experience than phones. to take advantage of the features of foldable devices, new form factors should be added to the app configuration. implementing app continuity enables users to enjoy uninterrupted experiences. and, with adjustable split-screen capabilities, users can enjoy up to three active windows simultaneously. if you have questions about developing for galaxy z devices, please visit our developer forums.

      Md. Iqbal Hossain

      https://developer.samsung.com/sdp/blog/en-us/2021/10/18/foldable-adaptation-essentials-app-continuity-and-multi-window-handling
      1. tutorials | mobile

      blog

      Troubleshooting Common Issues While Using the Remote Test Lab Service

      the remote test lab is a service provided by samsung that allows developers to remotely operate devices. you can use the remote test lab service to debug and verify real-world device compatibility. in this blog, we describe how to troubleshoot some of the most common issues that you could encounter while utilizing the remote test lab service. in the final section of this blog, we talk about the developer support program, which serves as a bridge between you and the engineers at the remote test lab service. samsung has created this program so that the developers can communicate directly with us. web client does not start if you are new to the remote test lab service and are having problems, such as the web client not starting after a reservation, check your computer and network configuration. ensure that the appropriate settings are turned on. also, ensure that your connection is not being blocked by your firewall. however, if you have previously used the web client devices and are now experiencing this issue even if nothing has changed at your end, contact the developer support program. getting an http error when accessing the remote test lab website, you may encounter http problems. this problem is usually caused by a network or browser issue at your end. in this instance, try the following: check if you are using the required browser to view the site. check your network. try a different network if possible. use the browser's incognito mode to load the page. clear your browser's cache and try again. device does not have a wi-fi connection a dedicated wi-fi hotspot is available at all the remote test lab server sites. when you connect to the device with our client, it connects to the network automatically (ssid and password will be set on the device). if there is still no internet access, please try the reset wi-fi option in the web client. this should fix the wi-fi connection issue of the device. figure 1: remote test lab web client if this still does not work, contact the developer support program with the device name. one of our operators will manually restore the network settings. please note that we do not disclose wi-fi passwords with our users for security reasons. forgot to remove application and sensitive information from the device you must delete your application and sensitive information from the device for security purposes. otherwise, the next user may obtain this information. if somehow you are unable to remove your personal information from the device, report the device name to our developer support program. our respective team will reset the device for you. screen-locked device do not use the screen lock unless it is necessary for testing your application. if you apply the screen lock or password, please remove them before your reservation ends. if you find a device with the screen lock, report that device name to us by contacting the developer support program. device is responding with a high latency the speed and latency of the remote test lab service are greatly influenced by the distance between you and the device. so, for the greatest experience with the remote test lab service, try to reserve the device that is available at the location which is closest to you. contacting the developer support program if you run into any problems or have any questions when utilizing the remote test lab service, please contact our developer support program. if you are having trouble with the issues listed above, try the solutions described earlier in this blog. if those solutions do not work for you, do not hesitate to contact us with your concerns. when reporting a device issue, include the device name so that our operator can investigate the problem and, if necessary, reset the device. the usage history tab is where you can find your reserved device name. figure 2: usage history in the remote test lab service hopefully, this blog helps you to utilize the remote test lab service more effectively. samsung always considers developers as an integral part of their ecosystem. this motive is highly reflected in our remote test lab service which is an effort from samsung to ensure that developers across the world have a convenient way to access a variety of samsung devices and an effective way for debugging and checking real-world device compatibility.

      Ummey Habiba Bristy

      https://developer.samsung.com/sdp/blog/en-us/2022/08/23/troubleshooting-common-issues-while-using-the-remote-test-lab-service
      1. tutorials | galaxy watch

      blog

      Design Complications Using Watch Face Studio

      watch face studio is a graphic authoring tool that helps you to design watch faces for the wear os smartwatch ecosystem, including galaxy watch4 and galaxy watch5. it is an intuitive graphic tool which allows you to design watch faces without coding. watch face studio includes a notable feature known as a complication. using complications, the user can get a glanceable unit of information for their selected application on their watch face. the complications can display data, such as text, title, image, or icon, which is collected from the applications that provide such information. today, i discuss some complication features in this blog. i design a simple watch face to demonstrate these. for simplicity i add a digital time and a digital date. for complications, i add one short text complication and one ranged value complication. at the end, two different theme colors are applied. you can download this sample design from here and throughout this blog you can follow me. after deploying the watch face on a watch and customizing the complication, the watch face on the real device looks the same as figure 1. figure 1: the watch face demonstrated in this blog getting started to view and deploy the sample design from my blog, watch face studio must be installed on your pc. now , i create a new project and then add basic components for simplicity. i add time and date from digital clock and place them in the center. adding complications as i have said earlier, i use two different complications in this design. to add complications, go to the add component menu on the top middle. from the dropdown menu, add the "short text" complication. for more information about complications, visit this complication document. short text complication first, i add a short text complication. for design purposes, i adjust the complication placement as (x and y) 170 and 45. i leave the dimension and color as it is. however, you can resize the dimension and change the color of the components of the selected complication. now i set the properties of complication settings as follows: complication type: i set it as "editable" so that anyone can customize the complication from their watch. if the type is set as "fixed," then the complication cannot be customized from the watch and it remains the same as what is provided in the design. for example, i choose "sunrise sunset" from the default provider > dropdown menu (see figure 2a). if the default provider is set as > "empty," no complication is displayed in the run window. note : if the default provider is set as "empty," customization from the watch is still possible. complication layout: the layout for this complication is set to the default ("icon + text + title"), but the layout also can be changed to the designer's preference. in figure 2b, the other layout options for the short text complication are displayed. you can find more details about the complication layout from my things to consider when designing complication layouts blog. (a) default provider options (b) layout options figure 2: complication settings ranged value complication now, i add a ranged value complication and adjust the properties as displayed in figure 3. i select the default provider as "watch battery" for this complication. i set the complication type to "fixed" so that the customization from the watch is not possible. figure 3: ranged value properties, "watch battery" is fixed and cannot be changed on the watch for this complication watch face studio gives the opportunity to change the properties for every component of the complication. now, i modify the properties of the progress bar component of the ranged value complication. so, at first, i expand the ranged value complication. an example of this is displayed in figure 4. figure 4: expand the ranged value complication to change the properties, i click on the progress bar under the ranged value complication to display its properties. i change the color of the progress bar by following the steps below: a. click the color box in the color menu. b. select a color from the color picker pop-up window. c. click ok in the color picker pop-up window. figure 5: ranged value progress bar color change figure 6: ranged value complication added i have added two complications in two different positions on the watch face. keep in mind that currently, only one complication can be set in one spot. so only one complication must be set in the same area regardless of normal or always-on-display (aod). for example, i add two same or different complications in the same position. i set one complication for normal mode and another complication for aod mode. now, i can set two different complication providers and test them on the run window for the normal and aod modes. but it is not possible to customize both the complications on the watch as the complications overlap each other. therefore, it is better not to use two complications in one spot. adding a theme color to a complication now, i add two theme colors and apply one of them to the short text complication. the steps to add and apply a color are given below: a. go to the style tab. the tab contains the theme color palette menu to choose the theme color**.** b. add a color by clicking the "+" icon. c. the color picker pop-up window opens. select a color from the available options. d. click ok for confirmation. note : you can add as many colors as required by repeating steps a to d. e. now set the theme color for the short text complication. a "fill with color" icon is present for every selected component. click the fill with color icon for the short text complication title, text, and the icon. f. on the run window, the theme color menu is displayed which contains all the selected theme colors from the style tab. choose any color by selecting the checkbox and view the output in the run preview. g. for the short text complication, the theme color is set and the color for the title, text, and icon is changed. figure 7: add theme color for short text complication note : the theme color can be customized from the watch. theme color on a watch on the watch, i can choose a theme color from the available colors that i had added in the project earlier. the theme color is set on every component of the short text complication. however, in the case of the icon and image of the complication, the theme color is applied after converting the original color to grayscale. this is because we do not know the color that is provided by the complication provider. that is why it is converted into grayscale first, before applying the theme color. so be careful about setting the theme color while designing your watch face, as the icon and image colors may interfere with the theme color. for example, from the watch, if i set a short text complication as "sunrise sunset," the icon color of this complication is orange (for sunset). on the other hand, if i set the complication as "weather," the icon color is white. see figure 8 for better understanding. in figure 8a, the icon color for "sunrise sunset" is orange and this color is provided by the provider. therefore, if i apply the theme color on this icon, the icon color is not the exact same theme color as displayed in figure 8b. in another scenario, the provided icon color is white which is as displayed in figure 8c. in this case, if the theme color is applied on the icon, the color is perfectly changed as the theme color. in figure 8d, this case is displayed. (a) "sunrise sunset" complication icon without theme color (b) "sunrise sunset" complication icon after applying theme color (c) "weather" complication icon without theme color (d) "weather" complication icon after applying theme color figure 8: the icon color interference with the theme color deploying the design and customizing complications as your own our target components are added. to view the watch face featured in this blog, download this file and deploy it to your watch by following these steps: connect your watch to watch face studio. for information about connecting, see connection guideline. deploy the design on your watch using run on device. for more details on connection, visit this test guideline. note : as per faq 12, "debug over bluetooth" is not yet supported in galaxy watches with galaxy wearable. 3. customize the complications on the watch. figure 9: designed watch face on a watch figure 9 displays the customized complications. to learn more about complications, visit watch face complications. conclusion as you can see, using complications, you can get detailed information for the selected application on your watch. personalization is a key feature of galaxy watch. you can continue to enjoy customizing the look of your watch style as you develop your collection of watch faces. resources in the samsung developer forum, you can ask and get help for any issue. this is a very active and friendly community where developers discuss their issues. there are many blogs on different topics, including watch face studio, on the samsung developers site. please visit these galaxy watch tutorials to expand your knowledge about samsung galaxy watch and their special features. if you want to develop watch faces programmatically, you can use android studio. you can do more complex operations using the complication api.

      Most Fowziya Akther Houya

      https://developer.samsung.com/sdp/blog/en-us/2022/08/17/design-complications-using-watch-face-studio
      No Search Results
      No Search results. Try using another keyword.
      • <<
      • <
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • >
      • >>
      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.