Forum Widgets
Latest Discussions
Default behavior for Dual Screen Seem (Hinge GAP)
When an app is spanned across two screens, there is going to be a seam — the space between the two screens. This is a byproduct of making a dual-screen device. This section talks about some of the ideas and techniques you might consider to make your app work with the seam. By default Display driver must skip (should not render behind seem) the content behind the hinge GAP. It should be continuous across screens. In fact the app developer should not be even aware of the seem. It should see as one continuous screen. It enables all web sites and apps usable by default. If any app or site wants to do differently to take advantage of dual screens then they use your API to handle it. This is a very simple approach and I think somebody at Microsoft screwed it up up by opting to ask every developer in the world to optimize their content. This will never happen. Duo will fail if not fixed. If I don't get this behavior in the next DUO update I will return my DUO and start a campaign to return all duo owners. I'm Software Architect love this duo and don't want it to fail. This is the only feature missing in this duo. I use only 3 apps on this. Edge, Chrome and Remote Desktop. All three are hiding content behind seem. This default behavior would have made made all these three apps usable.Suresh_NagappaSep 18, 2020Copper Contributor6.2KViews7likes13Comments[Thread] Showcase your Surface Duo apps!
This thread is meant to be a showcase of your awesome apps that are based on thr Surface Duo SDK. Share your hard work and ideas on how the unique features of this dual screen device could be used. ---------- Name #rTsd (Road to Surface Duo) Genre News Development ecosystem Xamarin.Forms Abstract This is a work in progress https://dotnet.microsoft.com/apps/xamarin Android project which is intended to feature most of the new features that makes the upcoming https://www.microsoft.com/en-us/surface/devices/surface-duo phone unique. It will use the awesome German https://www.drwindows.de/ as data source for its articles. Screenshots Links The source is open source on a https://github.com/tscholze/xamarin-road-to-surface-duo. This app will not be released in the Google Play Store.tscholzeFeb 01, 2020Iron Contributor2.8KViews5likes7Comments[Developer story] My thoughts - Surface Duo developer for over 880 days
Since November 19, 2019, at 7 pm German local time I was busy with the development for the Microsoft Surface Duo and thus for smartphones which have more than just a screen. In these now well over 880 days I went through many valleys of tears but also through many moments of pride regarding my spare time occupation of software development. One thing has always remained: The curiosity about the uniqueness of this new class of devices for developers as well as users. Only for the daily use it has not been enough yet. # Why? Like many other interested people at the time, I was particularly attracted by the hardware, the hinge, and the "newness" of the device. Things that I did not know from my bread and butter development for iOS and iPadOS, and at the time I was desperately missing them. It was also quickly clear that I wanted to share my enthusiasm for the new device. Thus began my very first https://www.drwindows.de/news/rtsd-road-to-surface-duo-das-entwicklertagebuch-teil-12-das-dutzend-ist-voll-eure-meinung-gefragt . My diary about the development of the #rTsd app - My "Road To Surface Duo". One big thing that kept me going was the free choice of technologies I could use to develop for the Android from Redmond. Xamarin, Flutter, Android and now Jetpack Compose. So it is and was the perfect playground to be able to try out new things from software development in my spare time and still be able to exist through a concrete scenario. # It's the "niche" that makes it endearing to me What kept me on the ball all these years was that the entire Surface Duo developer community is "family-like." Of course, this is due to the fact that the Duo has not yet taken off in terms of sales and market penetration. As an interested developer, you have direct contact with helpful and inspiring people from the DX (Developer eXperience) team directly from Microsoft through various channels. Since all my apps, which I write in my hobby, are https://github.com/tscholze, exciting conversations arise, if one - which admittedly rarely happens - runs into like-minded people. If you compare this with experiences from the Apple Developer Portal and its DevRel, for example, you'll quickly notice that Duo really makes you feel like a human being, respected and, above all, "listened to". In addition, it feels like an enormous success to me if you can convince even one more person of the concept of two-screen devices and they start to deal with the UI guidelines and finally understand them. I am incredibly happy about that. Things that are unthinkable for iOS or conventional Android development. # What I wish for the next 880 days As mentioned, the most important thing is that Microsoft continues. With updated hardware in the form of a Surface Duo 3, with a rapid update cycle of the Android operating system and with people who help you find your way in the complex world of dual screen devices. This is the only way to establish an independent community that will continue to inspire and motivate itself over time. A start could be a small Discord server where interested and Microsoft employees can meet and exchange ideas. Even though we are here on a Microsoft Community my wish remains that Microsoft also brings the emulator of the Surface Duo to the M1 Mac after all these years. Otherwise, a complete target group will be excluded - especially in view of Apple's model policy, which will no longer include x86 processors soon. # Conclusion All this shows that it is often the intangible things that motivate us to engage with technology. The new, the unexpected, but also the human interaction between manufacturer and developer. Thank you for this exciting journey! This story is a short form of my longer - and more https://dualscreentobbo.medium.com/since-november-19-2019-at-7-pm-german-local-time-i-was-busy-with-the-development-for-the-365011c18c60.SolvedtscholzeMay 01, 2022Iron Contributor810Views2likes1CommentHow to start the SurfaceDuo 2 emulator on an Apple M1 device?
Hi team, I know I had the same questions a few month ago, but I want to bring it up again. Currently I'm using an Apple M1 Mac as my development machine. Everything works expect of the Surface Duo 2 emulator. In short: I cannot find where I can change it from trying to use qemu-system-x86_64 instead of the installed qemu-system-aarch64 one. Facts: M1 Mac MacOS Monterey Android Studio installed AS emulators starts as expected `run.sh` fails because of x86 linked emulator Thanks for any helpful tip!SolvedtscholzeNov 08, 2021Iron Contributor3.3KViews2likes12CommentsThank you MSFT folks! My very first Android app (w/ Duo SDK) is now available in the Play Store
Hi team, I know that for many of you that's not something to be happy and proud about it. Last week I published my very first Android app to the Play Store. Of course, it uses the great Surface Duo SDK for Xamarin. The app is content-related German only. I just wanna say thank you to guymerin , Hakon_Strande, and all of your team mates for your great work and encouraging new Android developers to give it a try. Links: https://play.google.com/store/apps/details?id=io.github.tscholze.rtsd https://github.com/tscholze/xamarin-road-to-surface-duotscholzeApr 14, 2020Iron Contributor385Views2likes0CommentsFirst update to the Surface Duo SDK Preview Release is live!
The update aims to improve appcompat on the Duo when apps are running on a single screen. Read about it in the devblog: https://devblogs.microsoft.com/surface-duo/the-surface-duo-sdk-preview-is-getting-an-update-feb-202020/ You can download the updated SDK images for Mac, Windows and Ubuntu using this https://www.microsoft.com/en-us/download/details.aspx?id=100847. We are also in the news! 🙂 There is an article about this update here: https://www.windowscentral.com/surface-duo-preview-sdk-has-its-first-update Keep the feedback coming!Hakon_StrandeFeb 21, 2020Former Employee739Views2likes0CommentsLessons learned: Updating an app from copied Duo lib files to Xamarin.Forms.DualScreen NuGet package
I just updated my https://github.com/tscholze/xamarin-road-to-surface-duo to use the freshly released https://www.nuget.org/packages/Xamarin.Forms.DualScreen/4.5.0.282-pre4. That's why I wanna share my lessons learned, maybe some will be for others obvious, maybe not. Do not forget Update Xamarin.Forms package, to the latest pre-release (don't forget to mark the checkbox) Install the Xamarin.Forms.DualScreen package, it's a pre-release (don't forget to mark the checkbox) Delete all old copy-and-pasted "Duo Lib" that you copy pasted from the very first sample project Embed new namespace in duo-specific (e.g. master/detail pages) files xmlns:dualScreen="clr-namespace:Xamarin.Forms.DualScreen;assembly=Xamarin.Forms.DualScreen" Update, usage of TwoPaneView to new syntax with child elements <dualScreen:TwoPaneView> <dualScreen:TwoPaneView.Pane1> <views:ItemsView x:Name="MasterPane" /> </dualScreen:TwoPaneView.Pane1> <dualScreen:TwoPaneView.Pane2> <views:ItemView x:Name="DetailPane" /> </dualScreen:TwoPaneView.Pane2> </dualScreen:TwoPaneView> Check if you set the config values correct in the MainActivity.cs to listen on Duo-specific changes ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize Conclusion It's great to see that you do not longer need copy & (w/p)asted files in your library. There are not really breaking changes. It took me max. an hour to update my app.tscholzeFeb 13, 2020Iron Contributor647Views2likes0Commentsis TwoPaneBackStackEntry composable list of routes incompatible with arguments / URI Routes?
Hello, I am doing some tests on the SDK and have encountered a roadblock. Currently, my application uses route arguments to find item details. However, upon navigating to them, the following exception is returned: java.lang.IllegalArgumentException: Invalid route item/4, not present in list of routes [home?, items?, item/{itemId}, ...] I am unsure if this is a problem stemming from the fact that listOf[Routes] cannot take into account those values or if it is an error on my end. Could you please clarify? Thank you for all your hard work!Papes96Apr 08, 2023Copper Contributor1.7KViews1like6CommentsDisplay/Screen/Fold info from (accessibility) service
I'm trying to adapt my accessibility service app (https://play.google.com/store/apps/details?id=com.quickcursor to Surface Duo foldable screens and found some inconveniences and issues: https://developer.android.com/reference/android/accessibilityservice/AccessibilityService#dispatchGesture(android.accessibilityservice.GestureDescription,%20android.accessibilityservice.AccessibilityService.GestureResultCallback,%20android.os.Handler) doesn't respect the screen coordinates when the device is using the right screen on single screen mode. Sample code: https://github.com/micku7zu/SurfaceDuoDispathGestureBug Sample video: https://streamable.com/z7cgub In the video there are 2 buttons that dispatch click at (300,300) and (1350+300, 300) coordinates. As you can see, the buttons are positioned at (400,100) and (800,100) and when only the right screen is used, the buttons are positioned correctly on the screen, but the click dispatch coordinates are not correct, clicking on (300, 300) clicks on the left screen (which is turned off). If this is not a bug, and in fact this is intended, than there should be a way to detect the screen which is used from an (accessibility) service context in order to adjust the coordinates from the app. All the SDK libraries for display/fold info are based on Activities, and no info from a service. The other inconvenience is that there is currently no way to detect the current state of the fold/display from an (accessibility) service (or I didn't find any) straight forward. All the SDK Duo libraries are based on UI Activities. I understand that the helper libraries are focused on UI Activities, but accessibility services shouldn't be left out, there are users that needs this services for easier use of the device. A solution that works on most foldable devices (from my app user feedback): WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); Point displaySize = new Point(); display.getRealSize(displaySize); Doesn't work on Surface Duo as it should (in my opinion). The display returned by DisplayManager or WindowManager is not updated. There is only one display with the same values on all possible fold states. On other foldable devices this display values are updated/a list of displays. Some practical examples that are really hard to do in an accessibility service without an UI activity: How to get the current resolution (1350x1800 or 2700x1800)? How to get the hinge rect? How to get which part of the display is active (left or right)? I've made some ugly hacks for Surface Duo for the above problems, but this shouldn't be the case. I've not tested on all foldable devices, but currently from my app user feedback the issues are only on Surface Duo, other foldable devices are running ok without any special needs. I didn't fixed yet the left/right screen detection to adjust the coordinates for the right screen because I'm tired of looking for hacks. Probably there is a sketchy way to detect this, but I'm out of ideas for the moment. Any idea how I could get over these issues more easily? Thanks!micku7zuSep 21, 2021Copper Contributor740Views1like1CommentTrouble creating webapp for dual-screen
Hello, I wanted to create an webapp/website that is aware that the browser is spanned. While my webapp works with the experimental web platform features on Edge on the surface duo emulator and the browser's devtools. I can't get it to work on the actual surface duo device. I tried on both edge canary and chrome canary latest builds but to no avail. I'm using the css media spanning queries and the react package described in a surface duo blog post here to easily detect for a dual-screen: https://devblogs.microsoft.com/surface-duo/dual-screen-react-web/ Spanned browser on the emulator edge: Spanned browser on the surface duo (edge canary): Is this experimental feature not yet available on the canary builds of the 2 chromium browsers, or am I missing something?SolveddavidasoeMay 03, 2021Copper Contributor819Views1like4Comments
Resources
Tags
- question8 Topics
- ask-the-pm2 Topics
- Layout2 Topics
- Flutter2 Topics
- Tutorial2 Topics
- Lessons learned2 Topics
- design2 Topics
- show-and-tell1 Topic
- SDK update1 Topic
- info1 Topic