# Stories by Stacy Devino on Medium

Stories by Stacy Devino on Medium

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## A Practical Guide to Building Better Android WebViews

DevFeed: [A Practical Guide to Building Better Android WebViews](<https://devfeed.tech/articles/the-better-webviews-collection-26011.md>)

Original publisher: [Read original article](<https://proandroiddev.com/the-better-webviews-collection-778c7bd709e6?source=rss-2ffcf6104135------2>)

Author: Stacy Devino

Published: 2023-05-09T14:04:27Z

Content type: tutorial

Language: en

Sources: [Stories by Stacy Devino on Medium](<https://devfeed.tech/sources/stories-by-stacy-devino-on-medium.md>)

Topics: [WebView](<https://devfeed.tech/topics/webview.md>), [Android](<https://devfeed.tech/topics/android.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [browser](<https://devfeed.tech/tags/browser.md>), [cache](<https://devfeed.tech/tags/cache.md>), [chromium](<https://devfeed.tech/tags/chromium.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [front-end](<https://devfeed.tech/tags/front-end.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [web-development](<https://devfeed.tech/tags/web-development.md>), [webview](<https://devfeed.tech/tags/webview.md>)

### AI overview

This practical guide explains how to build better Android WebViews. It covers WebKit and provider differences across devices, compatibility checks with AndroidX WebKit and Browser, shared caching and DOM storage, and WebView settings affecting frontend rendering, scaling, accessibility, testing, and security.

### Source excerpt

The Better Android WebViews Collection WebViews are one of the most controversial subjects in the Community and unfortunately have been much maligned by developers. WebViews can be extremely useful and the best first implementation for a ton of situations from Login and Payments to User Support and Legal. Using WebViews, you can allocate your resources and attention to what your customers value most. WebView-primary apps even make up almost a third of all Apps on the Google Play Store. So, how do we make really good WebViews? Knowledge Drop 🧠💧 WebKit implementation varies ⏺ Non-Chromium-based (Non-GMS devices and some vendors) ⏺ Not all Play-Enabled devices have all features. Use isFeatureSupported and permission checks rather than @Targetan Android OS to be safe. ⏺ Customized Chromium Base (Samsung and Amazon Fire devices) There are 3 "Standard" WebViews available embedded as providers. ⏺ "Standalone" AOSP basic implementation and standard for 5.X-6.X ⏺ "Monochrome" public and AOSP-accessible unified Browser and WebView for 7.X-9.X ⏺ "Trichrome" which is a base Core Library, WebView, and Chrome browser all separated for 10.X -- Now (13.X) Use the modern WebViewCompat extensions with AndroidX Webkit / AndroidX Browser to avoid compatibility issues & version-based errors All WebView instances in your app will share the same Cache and Dom Storage, improving performance and memory usage Trust the Chromium Docs first over android.dev ⏺ WebView is now built and maintained by the Chrome team, so their documentation is going to be the most accurate and extensive WebView Settings for Success 🏆 "Make it look like Chrome" or "Why is Scaling broken?!?!?!" ReactJS, VueJS and similar front end frameworks rely on viewport and framing information in order to enable their dynamic sizing and styling features. By Default, what exists on Chrome is not what is enabled in the WebView and it requires some browser/web rendering knowledge to even figure out what is going wrong. Try these ou

## Android Developer Options for Debugging and Development

DevFeed: [Android Developer Options for Debugging and Development](<https://devfeed.tech/articles/android-developer-options-that-you-probably-forgot-26009.md>)

Original publisher: [Read original article](<https://medium.com/@DoesitPew/android-developer-options-that-you-probably-forgot-431e31d4c5fc?source=rss-2ffcf6104135------2>)

Author: Stacy Devino

Published: 2022-04-06T17:23:40Z

Content type: tutorial

Language: en

Sources: [Stories by Stacy Devino on Medium](<https://devfeed.tech/sources/stories-by-stacy-devino-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [feature flags](<https://devfeed.tech/topics/feature-flags.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [OpenGL](<https://devfeed.tech/topics/opengl.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [debugging-tools](<https://devfeed.tech/tags/debugging-tools.md>), [developer](<https://devfeed.tech/tags/developer.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [logging](<https://devfeed.tech/tags/logging.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [opengl](<https://devfeed.tech/tags/opengl.md>)

### AI overview

This practical article reviews Android Developer Options useful to developers, including debugging apps, inspecting view attributes in Android Studio, verifying apps over USB, adjusting logger buffer sizes, enabling feature flags, and using GPU debug layers. It also covers tools for displaying touch input and gesture traces.

### Source excerpt

Sometimes, I think that we "Old Android Folk" forget to share and re-share the old magic with newer developers or just forget the old ways ourselves. Now we are all well past the ANT and Eclipse days, but there are tools that have remained highly functional or grown to be more useful over time. Or, in the light of new tech like ComposeUI, have gained new functionality not easily achievable any way else. 🤫 Let's talk about... Developer Options Beware, this article is a re-hash of existing content (see above) in a practical sense for practical devs that actually shows & explains. Not all options will show on all devices. You are now a Developer... But did you ever take a look at all the tools in there? 👀 Standard Debugging Tools Standard things everyone uses almost every day or should know Bug report shortcut -- For Bug reports ...a shortcut Verbose vendor logging -- (Vendor devices only) More complete logging in Logcat than would happen normally and can be useful for vendor interactions, fixing a vendor bug, or debugging an integration (*coughs in Samsung*) Enable view attribute inspection -- See View Attributes in the Layout Inspector in Android Studio Select debug app + Wait for debugger -- App won't start unless the debugger is attached in Android Studio, so you can debug things at startup without a crazy logcat to parse and false warnings. Verify apps over USB + Verify bytecode of debuggable apps -- Generally smart to make sure you don't load a dodgy app or general malware by accident (usually online) Logger buffer sizes -- Enable longer or shorter logcats (easier to parse longer ones and capture more events) Feature Flags -- Enable features normally hidden for most users, usually more useful on pre-release or experimental release builds with features to be enabled (features like PiP and onscreen notifications were originally tested this way) Enable GPU debug layers -- Enables Vulkcan validation layers for error checking (Mostly for mobile game developers not using OpenGL, tho

## Drop-in Android Video -- Exoplayer2 with Picture in Picture

DevFeed: [Drop-in Android Video -- Exoplayer2 with Picture in Picture](<https://devfeed.tech/articles/drop-in-android-video-exoplayer2-with-picture-in-picture-26010.md>)

Original publisher: [Read original article](<https://medium.com/s23nyc-tech/drop-in-android-video-exoplayer2-with-picture-in-picture-e2d4f8c1eb30?source=rss-2ffcf6104135------2>)

Author: Stacy Devino

Published: 2018-09-13T15:58:58Z

Content type: tutorial

Language: en

Sources: [Stories by Stacy Devino on Medium](<https://devfeed.tech/sources/stories-by-stacy-devino-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [ExoPlayer](<https://devfeed.tech/topics/exoplayer.md>), [picture-in-picture](<https://devfeed.tech/topics/picture-in-picture.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Code](<https://devfeed.tech/topics/code.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [code](<https://devfeed.tech/tags/code.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [exoplayer](<https://devfeed.tech/tags/exoplayer.md>), [exoplayer2](<https://devfeed.tech/tags/exoplayer2.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [nike](<https://devfeed.tech/tags/nike.md>), [picture-in-picture](<https://devfeed.tech/tags/picture-in-picture.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [ui](<https://devfeed.tech/tags/ui.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

This tutorial explains how to add Android video playback with ExoPlayer2, including URL-based playback, Gradle dependencies, UI setup, and Kotlin implementation. It also introduces Android picture-in-picture support and notes that device support can vary.

### Source excerpt

Beautiful, interactive video content done easy. Video has been shown to increase engagement in apps and with content. How else could gif servicing apps be worth tens of millions and Youtube influencers be selling billions of dollars of product? The problem is that video in Android can be difficult. You are given the assumption that the video types you will support are pretty basic : embedded MPEG video, URLs to MP4/AVI files, and HLS Streaming. A naive approach would be to use the embedded video player sent with Intents, but that takes the user out of your app. You think, 🤔 " I'll just use the Android VideoView class with AppCompat ." Then you realize that it is nearly impossible to make the experience consistent across users because of codec support and whatever the phone manufacturer may have customized in the video player. Finally you settle on Exoplayer2 because it is the package everyone, including Google, uses. Upon further inspection, you quickly realize that it requires a lot of code to make it work and the example application on the Github is confusing, far too extensive for what you are doing. Another route you could take is ExoMedia by Brian Wernick, but it trades extensibility, theming, and control for simplicity. Fortunately, you only need the Exoplayer2 libraries to have a fantastic video player experience within your app. SimpleExoplayer "2" the Rescue First you need to make an app which can receive a URL and play it using Exoplayer. For this, you will need SimpleExoplayer and the Playerview from the UI package. Playerview has easy to manipulate styling/theming elements as well as available media controls. SimpleExoPlayer gives you a preconfigured player to work with without having to handle deeper logic yourself. Start by adding the Gradle dependencies to your build.gradle : implementation 'com.google.android.exoplayer:exoplayer-core:2.X.X' implementation 'com.google.android.exoplayer:exoplayer-hls:2.X.X' implementation 'com.google.android.exoplayer: