Catching auto continuous focus start and finish events - android-camerax

I have created an app testing CameraX capabilities on my device. After setting up camera use cases auto continuous focus started automatically on PreviewView.
I have two questions:
Is it possible to catch auto continuous focus started and finished events? I want to put some animation on screen while auto continuous focus in progress as most of the device's pre-installed camera app does.
Is it possible to disable auto continuous focus feature? In some cases I want to allow only tap-to-focus feature enabled (which I have already implemented).

Related

Flutter: Schedule audio events for background execution

I am implementing an app in Flutter, for which I need to schedule (audio) events in advance. Only after one event is completed I can schedule the next, since the duration of the event might not be known before. Each audio event is a notification sound for the user, thus scheduling and audio playback should both work while the app has no focus or the phone is locked.
I currently fail to implement these specifications and I guess I'm just not thinking the right way about it for the moment. Since I started to learn Flutter recently, there could also be just some simple misunderstandings from my part. Let me summarize what I know about background execution & native code in Flutter, please correct anything wrong with these statements:
When the App looses focus (or the phone gets locked) code execution stops.
However, inside the "primary" Dart-code, I can spawn an isolate which will run even with the phone locked or without focus on the app.
Different isolates share no memory whatsoever; they communicate via ports.
There a spawned isolate does not know anything about the flutter ecosystem, therefore it is not possible to use flutter plugins.
For the same reasons I cannot use MethodChannels as well to communicate with platform code from an isolate.
From this I conclude:
The event should be scheduled from a seperate Dart-isolate, so that locking the phone won't halt scheduling.
This isolate won't be able to play any audio file by itself, and won't be able to communicate with platform code.
Thus, it needs to communicate with the primary isolate, which can play audio. However, without the app open, the code won't respond.
Consequently, this approach cannot work?
Right now, I am stuck at this point and don't know how to continue. I guess one option could be to directly call java/swift code for the respective native platforms and handle scheduling and audio there. Yet, I hope that I just don't see a simpler option right now.

Azure Media Services/Player Auto Start with Live Event

I am starting to get familiar with Azure Media Services and I wanted to see if anyone had some thoughts on live events and start times.
We offer a paid live event, so via our web application, users can join the "presentation" up to 30 minutes before it starts.
In azure, we typically start the channel 1hr beforehand to get everything set up, and start the "Live Event" at the exact start time. What is the best practice for showing a "this presentation will begin shortly" message and auto-starting the feed when the event starts?
Is it best to start the "Live event" 30 min early, and use a slate, or can the Azure Media player basically sit and wait for the event to start? Does this happen automatically, or would I need javascript to keep trying when OnError happens? Basically, I don't want users to have to refresh the page or anything when the even starts. It should just start playing right at the start time.
I'll take a stab at this one Chris.
For most live events that are produced by our customers (including Microsoft Studios here on campus), we typically start the channel about 20-30 minutes prior to the event time with a slate and music. Usually that slate is coming from the encoder rather than from a slate on the live channel in Azure Media Services. Reason for that is there is a lot more control locally in the production pipeline for animated slates, music, fading and switching, etc. You can achieve this with low cost options like Telestream Wirecast, or a NewTek Tricaster setup.
n azure, we typically start the channel 1hr beforehand to get everything set up, and start the "Live Event" at the exact start time. What is the best practice for showing a "this presentation will begin shortly" message and auto-starting the feed when the event starts?
We then monitor the Preview feed URL from the Live Channel in Azure just to make sure everything is operational and running correctly. When it is close to showtime (5-10 minutes or so ahead), we will start the recording (Start a new Program). This is not automatic, but you could certainly use multiple methods to automate the calling of the API to create, start, and stop the Program via our REST API or client SDKs.
To your point, the new Program creation will generate a new Program URL for playback. Your users or web page code would need to refresh. If you have a requirement that the users are going to arrive really early, you could either start the Program recording a lot early and publish that URL - but you would then want to use our Dynamic Filters or Subclipping feature after the event to remove the long slate at the head of the event.
Another trick could be that if you automate the start of the live Program recording, you could also use SignalR or some other out-of-band notification to signal the player in the page to reload the src URL and begin playback. I've seen that trick used before as well.
Hope that helps. Bottom line, there are a lot of creative options, but nothing "built-in" and automatic at this time.

Mobile Website - How to keep process alive on client side in mobile browser in Android?

I am new to mobile website development, and facing this issue where I want to refresh data on the website in every 30 sec which is invoked from the client side and server provides the data in response. Problem is when I close the browser or when the browser goes in background it stops working. Is there any thing we can do to make this thing possible?
Have a look at the Android Developers - Processes and Threads guide. You'll get a deeper introduction to how process life-cycles work and what the difference is between the states for background- and foreground processes.
You could embed your web app in a WebView. This way you could deal with the closing browser case: you could provide a means to "exit" the app that involves closing only your container activity. That way the timers you have registered in javascript will still be running in the 'WebViewCoreThread'. This is an undesirable behavior and a source of problems, but you can take advantage of it if you want (just make sure you don't run UI-related code there). I've never tested this in Kit Kat (which uses a different WebView based on Chrome) but works for previous versions, as I described here.
Now the user can always close any app. Even without user interaction, the OS can kill your app on low memory. So just give up on long-running apps that never end, because the OS is designed in such a way this is simply not possible.
You could go native and schedule Alarms using the AlarmManager.
Just checked this out on the Android KitKat WebView and as per Mister Smith's comments the javascript will continue executing in the background until the Activity is killed off:
Just tested with this running in a WebView:
http://jsbin.com/EwEjIyaY/3/edit
My gut instinct is that if the user has moved your application into the background, there seems little value in performing updates every 30 seconds, it makes more sense to just start updating again once the user opens the device up and cache what information you currently have available to you.
As far as Chrome for Android goes the same is happening, as Chrome falls into the background the javascript is still running.
If you are experiencing different behaviour then what exactly are you seeing and can you give us an example?

Handling Screen Idling and Suspension

Just need to know what to handle for this situation:
Case(1) When user is not doing anything on the screen for a period of time
The system will suspend the app? Is this what causes suspension? This means nothing will be processed in the background?
How to handle this case that I want the process continues when app is left unattended (example : Using GPS )
----- Update
Need some confirmations for the following scenarios:
1) App is launched and user navigates from mainPage to other Page AND left the Tablet alone for a period of time and user did not interact with the Screen.
In this case, this will cause the Physical screen turn to black color screen. Is this means app Suspension or something else?
2) How Lock Screen or Screen Lock work or when it will happen. how different is screenLock from above question(1)? or they are the same thing?
Screen Lock will cause App Suspension?
3) When user presses the home button (Hardware button) on the tablet, this will cause App Suspension or termination?
4) In Windows Phone, there are these to detect and prevent Screen Lock and run the app :
a.The UserIdleDetectionMode property
b.The ApplicationIdleDetectionMode property
Can these be used in WinRT App? or how to handle this like WP in WinRT
If the app is the foreground app and the screen is active, it won't be suspended. Apps get suspended primarily for moving to the background. This wouldn't be just idle time, but could be if something like a lockscreen/screensaver comes on and the window is no longer active.
You could know this immediately by looking at Window.Activated events, but in this case a de-activated window (assuming it was the only and primary one for the app) would likely mean it went to he background and thus in queue for suspend.
And yes, once suspended, no code is running from the app -- if you wanted background code to run you'd need to use a background task (see MSDN samples for an example).

wp7 background task out of app

I need to have a background process that runs independent of my app and performs a set of tasks. These tasks need to execute even when my app isn't running. For example, continuously process a list of tasks that contain the date/time they need to be executed on. The background task would iterate over the list and process all of the ones that match the current time.
Is this possible to do locally without the need for a web server and utilizing the push notification services?
Here is a link to an overview of Background Agents on Windows Phone. At this point what you want is not possible with any degree of accuracy (periodic background tasks are run only once every half hour at the minimum) or dependability (background agents are disabled if the user does not open the associated app for a while).
So yes, at this time your only option is to create a push notification server and have that notification deep link to whatever app you want to open.

Resources