{"id":21804,"date":"2018-10-10T17:19:51","date_gmt":"2018-10-10T17:19:51","guid":{"rendered":"http:\/\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary"},"modified":"2018-10-10T17:19:51","modified_gmt":"2018-10-10T17:19:51","slug":"data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary","title":{"rendered":"Data Saver in Android N: Optimizing Network-Data Usage With Cloudinary"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>(<a href=\"https:\/\/www.androidpolice.com\/2016\/03\/09\/android-n-feature-spotlight-new-data-saver-option-reduces-data-usage-on-limited-cellular-plans\/\">Screen Image Source<\/a>)<\/p>\n<p>Over the life of a mobile device, the cost of a cellular data plan often exceeds that of the device itself. To optimize data usage and purge useless data on their mobile devices, users can enable <a href=\"https:\/\/developer.android.com\/training\/basics\/network-ops\/data-saver\">Data Saver<\/a> from Android 7.0 (API level 24). To do so, users toggle Data Saver in quick settings under the <strong>Notification<\/strong> shade or under <strong>Settings &gt; Data usage<\/strong>. With Data Saver enabled, apps that aren\u2019t whitelisted cannot use cellular data in the background. They are also directed to consume less data while active.<\/p>\n<h2>Data Saver Is the App Developer\u2019s Responsibility<\/h2>\n<p>According to <a href=\"https:\/\/source.android.com\/devices\/tech\/connect\/data-saver\">Google\u2019s developer documentation<\/a>, because users can turn on or off Data Saver themselves, you as app developers should check if Data Saver is on with a new API. If so, you can enhance the situation by tuning your apps for low- or no-data access, such as by using lower-resolution images and lower-bitrate videos in your app. Read on for the related procedures.<\/p>\n<h3>Checking If Data Saver Is On<\/h3>\n<p>For devices that run Android 7.0 (API level 24), to check if Data Saver is on and if your app is whitelisted, use the <a href=\"https:\/\/developer.android.com\/reference\/android\/net\/ConnectivityManager.html#getRestrictBackgroundStatus()\"><code>ConnectivityManager.getRestrictBackgroundStatus()<\/code><\/a> method. It returns one of the following:<\/p>\n<ul>\n<li>\n<code>RESTRICT_BACKGROUND_STATUS_DISABLED<\/code>\n<ul>\n<li>The user has disabled Data Saver for your app.<\/li>\n<\/ul>\n<\/li>\n<li>\n<code>RESTRICT_BACKGROUND_STATUS_ENABLED<\/code>\n<ul>\n<li>The user has enabled Data Saver for your app. In that case, limit data usage in the foreground and impose restrictions to data usage in the background.<\/li>\n<\/ul>\n<\/li>\n<li>\n<code>RESTRICT_BACKGROUND_STATUS_WHITELISTED<\/code>\n<ul>\n<li>The user has enabled Data Saver but whitelisted your app. In that case, limit both foreground and background data-usage in your app.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>In addition, Google\u2019s developer documentation advocates the practice of limiting data usage whenever a device\u2019s current connection type is a metered one.  Why? Because such a connection is not suitable for downloading a large amount of data due to the prohibitive cost in the data plan.<\/p>\n<p>The following code handles that situation by tackling both Data Saver settings and metered networks:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>ConnectivityManager connMgr = (ConnectivityManager)\n        getSystemService(Context.CONNECTIVITY_SERVICE);\n\/\/ Checks if the device is on a metered network\nif (connMgr.isActiveNetworkMetered()) {\n  \/\/ Checks user's Data Saver settings.\n  switch (connMgr.getRestrictBackgroundStatus()) {\n    case RESTRICT_BACKGROUND_STATUS_ENABLED:\n    \/\/ Background data usage is blocked for this app. Wherever possible,\n    \/\/ the app should also use less data in the foreground.\n\n    case RESTRICT_BACKGROUND_STATUS_WHITELISTED:\n    \/\/ The app is whitelisted. Wherever possible,\n    \/\/ the app should use less data in the foreground and background.\n\n    case RESTRICT_BACKGROUND_STATUS_DISABLED:\n    \/\/ Data Saver is disabled. Since the device is connected to a\n    \/\/ metered network, the app should use less data wherever possible.\n  }\n} else {\n  \/\/ The device is not on a metered network.\n  \/\/ Use data as required to perform syncs, downloads, and updates.\n}\n<\/code><\/pre>\n<h2>Reduction of Users\u2019 Data Usage<\/h2>\n<p>To reduce data usage for users, take advantage of Cloudinary\u2019s transformation features.<\/p>\n<h3>Optimizing Images<\/h3>\n<p>You can significantly reduce the size of an image with the following Cloudinary parameters:<\/p>\n<ul>\n<li>\n<p><code>f_webp:<\/code> This parameter changes the image format to <code>webp<\/code>, which is recommended because it performs natively on Android.<\/p>\n<\/li>\n<li>\n<p><code>q_auto:low:<\/code> This is the most aggressive algorithm, which results in the smallest files with lower visual quality.<\/p>\n<\/li>\n<li>\n<p><code>w_700,c_limit:<\/code> If you know the exact screen width, height, and density of your user\u2019s device, you can set the image size according to the <code>ImageView<\/code> size in place of the original size. Applying this parameter along with <code>c_limit<\/code> tells Cloudinary to resize the image to 700 pixels unless the original size is smaller.<\/p>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/f_webp,q_auto:low,w_700\/landscape\" alt=\"Landscape\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"700\" height=\"467\"\/>\n(Photo by <a href=\"https:\/\/unsplash.com\/photos\/2VDa8bnLM8c\">Riccardo Chiarini<\/a> on <a href=\"https:\/\/unsplash.com\/search\/photos\/nature\">Unsplash<\/a>)<\/p>\n<p>Applying the above transformation parameters reduces the size of this image from more than 5 MB to only 50 KB. No small feat!<\/p>\n<h3>Optimizing Videos<\/h3>\n<p>In <a href=\"https:\/\/developer.android.com\/guide\/topics\/media\/media-formats\">Android 4.4+<\/a>, by serving the highly-optimized VP9 video codec in WebM format and resizing your videos with the <code>f_webm,vc_vp9:baseline:3.1,w_1280,c_limit,br_128K,q_40<\/code> parameter, you set the <code>1280<\/code> pixel value to the known maximum width and reduce the quality to <code>40<\/code>. We also used the <code>bit_rate<\/code> parameter (<code>br<\/code> in URLs) for advanced control of the video bitrate. This parameter controls the number of bits used to represent the video data.\nSee this example:<\/p>\n<p><video controls=\"controls\" height=\"100%\" poster=\"https:\/\/cloudinary-res.cloudinary.com\/video\/upload\/cat.jpg\" preload=\"none\" style=\"margin: 0 auto;display: block\" width=\"1728\"><source src=\"https:\/\/cloudinary-res.cloudinary.com\/video\/upload\/f_webm,vc_vp9:baseline:3.1,w_1280,c_limit,br_128K,q_40\/cat.webm\" type=\"video\/webm\"><source src=\"https:\/\/cloudinary-res.cloudinary.com\/video\/upload\/f_webm,vc_vp9:baseline:3.1,w_1280,c_limit,br_128K,q_40\/cat.mp4\" type=\"video\/mp4\"><source src=\"https:\/\/cloudinary-res.cloudinary.com\/video\/upload\/f_webm,vc_vp9:baseline:3.1,w_1280,c_limit,br_128K,q_40\/cat.ogv\" type=\"video\/ogg\"><\/video><\/p>\n<p>Note that we changed the profile of the above video and the level of the video codec (<code>vc<\/code> in URLs) to <code>baseline:3.1<\/code>.<\/p>\n<p>For older devices that do not support the newer video codecs, you can add a fallback format to the <code>vc_auto,w_700,c_limit<\/code> parameter by setting the <code>700<\/code> pixel value to the known maximum width for your videos. For details, see Lillian Hsueh\u2019s post <em><a href=\"https:\/\/cloudinary.com\/blog\/best_practices_for_the_mobile_world\">Best Practices for the Mobile World<\/a><\/em>.\nAlso, if Data Saver is on for your app, we strongly recommend that you disable autoplay for videos.<\/p>\n<h2>A Few Simple Steps on Cloudinary Go a Long Way<\/h2>\n<p>With Android\u2019s version 7 release and its Data Saver tool, control of data usage becomes much easier. Still, it behooves app developers like you to be vigilant about whether Data Server is on for your app and, if it is, take the necessary steps to complement the user preference by optimizing the quality and size of your images and videos. You now know how simple it is to do that in Cloudinary and make your app more mobile friendly.\nIn the next post, we\u2019ll show you how to enable your users to configure, through your app\u2019s settings, the quality of the media they desire.  Stay tuned!<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21805,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[333,25,165,227,306,304],"class_list":["post-21804","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-android","tag-asset-management","tag-image-transformation","tag-performance-optimization","tag-video-codec","tag-video-transformation"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Android Data Saver: Optimizing Mobile Data Usage with Cloudinary<\/title>\n<meta name=\"description\" content=\"Learn how to complement the user preference on Android Data Saver by optimizing the quality and size of your images and videos with Cloudinary\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Saver in Android N: Optimizing Network-Data Usage With Cloudinary\" \/>\n<meta property=\"og:description\" content=\"Learn how to complement the user preference on Android Data Saver by optimizing the quality and size of your images and videos with Cloudinary\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-10T17:19:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1540\" \/>\n\t<meta property=\"og:image:height\" content=\"847\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Data Saver in Android N: Optimizing Network-Data Usage With Cloudinary\",\"datePublished\":\"2018-10-10T17:19:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary\"},\"wordCount\":10,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA\",\"keywords\":[\"Android\",\"Asset Management\",\"Image Transformation\",\"Performance Optimization\",\"Video Codec\",\"Video Transformation\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2018\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary\",\"url\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary\",\"name\":\"Android Data Saver: Optimizing Mobile Data Usage with Cloudinary\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA\",\"datePublished\":\"2018-10-10T17:19:51+00:00\",\"description\":\"Learn how to complement the user preference on Android Data Saver by optimizing the quality and size of your images and videos with Cloudinary\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Saver in Android N: Optimizing Network-Data Usage With Cloudinary\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Android Data Saver: Optimizing Mobile Data Usage with Cloudinary","description":"Learn how to complement the user preference on Android Data Saver by optimizing the quality and size of your images and videos with Cloudinary","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary","og_locale":"en_US","og_type":"article","og_title":"Data Saver in Android N: Optimizing Network-Data Usage With Cloudinary","og_description":"Learn how to complement the user preference on Android Data Saver by optimizing the quality and size of your images and videos with Cloudinary","og_url":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary","og_site_name":"Cloudinary Blog","article_published_time":"2018-10-10T17:19:51+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary"},"author":{"name":"","@id":""},"headline":"Data Saver in Android N: Optimizing Network-Data Usage With Cloudinary","datePublished":"2018-10-10T17:19:51+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary"},"wordCount":10,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA","keywords":["Android","Asset Management","Image Transformation","Performance Optimization","Video Codec","Video Transformation"],"inLanguage":"en-US","copyrightYear":"2018","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary","url":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary","name":"Android Data Saver: Optimizing Mobile Data Usage with Cloudinary","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA","datePublished":"2018-10-10T17:19:51+00:00","description":"Learn how to complement the user preference on Android Data Saver by optimizing the quality and size of your images and videos with Cloudinary","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/data_saver_in_android_n_optimizing_network_data_usage_with_cloudinary#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Saver in Android N: Optimizing Network-Data Usage With Cloudinary"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721681\/Web_Assets\/blog\/Optimize-Network-Data-Usage\/Optimize-Network-Data-Usage.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=21804"}],"version-history":[{"count":0,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21804\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21805"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}