skylarsutton
-
5 votesdeclined ·
AdminCarter
(Admin, two forty four a.m.)
responded
I’ll first address the specific request of a Portrait/Landscape condition: we will not add this feature to Locale because it won’t work as expected. The first problem is that “portrait” and “landscape” are not well defined on Android and do not match user expectations. For example, the Motorola Charm is actually in landscape when the device is held vertically. This weird behavior is documented here http://android-developers.blogspot.com/2010/09/one-screen-turn-deserves-another.html The second problem is that Locale is a background app and therefore it should detect changes while the screen is off. But Android’s notion of portrait/landscape is only updated while the screen is turned on.
Let’s take a step back though and take a broader look at this request. If a car dock isn’t opening Android’s Car Mode, most likely it isn’t a real dock. A real Android dock tells Android what type of dock it is, and these are usually made by the… more
skylarsutton
gave this 2 votes
·
-
11 votes
skylarsutton
gave this 2 votes
·
skylarsutton
commented
·
I concur, show the warning once and once only. Usability best-practices advise against spamming "pro" users with repeated messages/warnings/errors.
-
82 votesunder review ·
AdminCarter
(Admin, two forty four a.m.)
responded
Calling this a true “driving” condition would be a misnomer, as a number of other factors would actually be used to guess that the user was driving. This request would simply detect the speed at which the phone is moving.
There are two ways currently to detect when the phone is in a car: a car dock condition or a Bluetooth condition, both of which are available now as plug-ins on the Android Market.
We’ve been investigating an implementation for a “speed” condition, and we’re confident we can create a reliable and low-power consumption implementation. There are just a number of considerations to take into account before doing so. After reading all of the comments, it appears that there are several different goals that users have in mind. Let’s look at a few of them:
1. Power savings: some users want to enable Bluetooth in the car and disable Bluetooth… more
skylarsutton
gave this 1 vote
·
-
13 votescompleted ·
AdminCarter
(Admin, two forty four a.m.)
responded
After reviewing all of the possible implications, we have decided to support multiple conditions and/or multiple settings within a single plug-in package. This already works for all versions of Locale. We’re still in the process of updating the developer documentation with this new information.
skylarsutton
commented
·
Just a follow up. I can confirm this functionality is working... the "Locale SD Card" plugin contains two conditions for a single receiver and appears to be functioning with no issues.
skylarsutton
commented
·
Are you sure that it works for all versions? Last time I tested I received a warning that two plugins with the same package name were found so it dropped/ignored the second plugin.
Just sanity checking.
skylarsutton
commented
·
I don't understand what you were driving at with the following points:
* Backwards compatibility? Plugin descriptions would simply need to state "Requires Locale 1.x"... it's not much different from apps that include a "Requires Android 2.x" in the description. Also to your point about how/if other plug-in hosts choose to implement this... should that really be Locale's concern? The plug-in API version could be advanced and it's up to each host how/if/when they implement. This would be a feature that sets Locale apart.
* Memory Leak? In general, I don't understand what you were driving at here. Are you saying some third party wrote crappy code and now you have to clean up the mess? If so, you could handle it by killing the faulty setting/condition rather than the faulty APK.
Re-branding the plugin and using a single UI screen is an option... but one I will not pursue as I think it leads to an awful user experience. I prototyped something out and it was simply confusing and overly elaborate.
One of the reasons I prefer Locale over Tasker is that the condition/setting model is very easy to understand and use... my 65 year old Dad picked it up in less than a day. The proper user experience would be unique settings for: WiFi (IP Address), WiFi (Proxy), WiFi (On/Off), WiFi (Gateway)... as opposed to "Advanced WiFI".
I can accomplish that by publishing many unique applications, but it leads to a fragmented plugin market and takes away from the value to the end user. A single purchase of a "plugin package" is much more likely to be accepted by consumers.
skylarsutton
shared this idea and gave it 3 votes
·
-
5 votescompleted ·
AdminCarter
(Admin, two forty four a.m.)
responded
This has been implemented by a third party plug-in available on the Android Market. Just look for the Locale Call Filter Plug-in! https://market.android.com/details?id=com.suttco.locale.telephony
skylarsutton
gave this 2 votes
·
skylarsutton
commented
·
The "Locale Call Filter Plugin" was released to the market a few minutes ago. Check it out - I hope it solves your problem like it solved mine.
skylarsutton
commented
·
@Muzikluvr - I have been working on a plugin to accomplish this. Coding is complete and I am planning to begin the testing phase tonight. If all goes well I should have this on the market relatively soon.
@john.ludlow.uk - The proposed solution may work for some, but for me it was infeasible. I found myself managing dozens of situations to properly screen calls during work/after work. By consolidating this into a single setting I can reuse existing situations (ex: I've simplified "At Work" / "At Work (John Calling)" / "At Work (Jane Calling)" into a single situation -> "At Work").
@The Admins - please do not close this in case testing takes longer than anticipated. I will update when it is released to the market.
-
1 votedeclined ·
AdminCarter
(Admin, two forty four a.m.)
responded
What happens if the user uninstalls Locale or clears Locale’s configuration data using the Manage Applications screen? Both of these cases would delete the setting instance, but Locale wouldn’t be able to notify the plug-in deletion occurred.
For settings where the user might want to manually restore some normal state, we recommend providing a top-level Launcher Activity. A great example of a Locale plug-in that does this is APNDroid. It provides a Locale plug-in, but it can also be configured manually via a Launcher Activity just in case the user needs to reset his configuration.
skylarsutton
commented
·
@carter - so instead of fixing two potential problems (setting deleted / situation deleted) and waiting for google to implement broadcasts that would fix the other two... you want to leave all 4 as potential problems for the user? I swear, I am done with Locale and plugins - you are the most unresponsive dev.
With regards to a top level launcher... it actually goes against your entire mantra of Locale: "It just works". If the user didn't remember to use a default situation what on earth would make them remember to launch it manually?
skylarsutton
shared this idea and gave it 1 vote
·
-
1 votedeclined ·
AdminCarter
(Admin, two forty four a.m.)
responded
Hi Skylar,
You might try using persistent storage (like SharedPreferences) to share state across different objects, such as two different BroadcastReceivers. SharedPreferences are secure, thread-safe, and persist across launches of a process.
Forwarding extras via ACTION_REQUEST_REQUERY creates a security hole. Imagine a malicious app sending ACTION_REQUEST_REQUERY with forged extras to Locale, Locale forwards those extras to the plug-in, and the plug-in inaccurately reports its satisfied state to Locale based on the forged extras.
Locale’s current implementation sends an ordered ACTION_QUERY broadcast directly to a plug-in’s BroadcastReceiver by component name. This ensures that only Locale and the intended plug-in receive the Intent. I hope this helps!
skylarsutton
commented
·
Alternatively, you could allow plugins to broadcast a new type of intent that signals a condition is satisfied. This would skip the "requery" process, as the receiver listening to the phone events is already aware that the locale condition is satisfied.
skylarsutton
shared this idea and gave it 1 vote
·
-
262 votes
skylarsutton
gave this 1 vote
·
-
774 votesunder review ·
AdminCarter
(Admin, two forty four a.m.)
responded
The original request here was for a logical NOT operator, although it doesn’t make sense to create a logical NOT operator in Locale. Most of the time, NOT isn’t the right way of thinking about a Condition. For example, NOT 9 am to 5 pm could be redefined as 5pm to 9am. NOT at work would simply be the Default situation. For the other conditions built-in to Locale, thinking about the problem in a different way usually means that NOT isn’t needed. If a Condition truly needs NOT logic, then that should probably be put into the individual Condition’s UI itself rather than as part of the Edit Situation screen in Locale.
Although this request is for a NOT operator, I believe the underlying request here is a way of detecting the transition between situations. The strongest use case would be detecting when you’ve left a particular Location. While Locale… more
skylarsutton
commented
·
@yvolk - I've seen the API. Every condition responds in one of three ways:
1) i'm satisfied
2) i'm not satisfied
3) i don't know if i'm satisfiedThe "implementation description" is a drop down in the edit situation page with "when condition is met" and "when condition is not met". If it's anything more than that you have WAY overengineered it. When the "not" option is selected just inverse the conditions response:
1) i'm satisfied becomes "i'm not satisfied"
2) i'm not satisfied becomes "i'm satisfied"
3) i don't know if i'm satisfied says what it isGive me the source code and i could have this done in 10 minutes - it's not a difficult problem to solve in any way shape or form.
skylarsutton
commented
·
I find Carter very confrontational in these discussion forums - and frankly not interested in listening to user feedback. If your users have a need for a not condition (myself included) just make it already and stop arguing with them.
skylarsutton
gave this 1 vote
·
-
263 votescompleted ·
AdminCarter
(Admin, two forty four a.m.)
responded
UPDATE:
Locale 1.4 includes significant improvements to the location detection system, reducing time to detect location changes by 20% while also improving battery usage by up to 50%.
The original goal of this request—reducing the delay of detecting location changes—has been met as Locale 1.4 detects location changes within an average of 4 minutes. We are therefore marking this request as completed.
Although this request is being marked as completed, we have ongoing research and development to keep improving the speed and efficiency of the location detection system further :).
(Original response)
By design, Locale has no user-configurable options. The goal is that Locale should “just work” without requiring users to fiddle with various options that could negatively impact the operation of the app. For example, asking Locale to check location every minute could cause the battery to drain within 2 hours at which point you might miss the… more
skylarsutton
gave this 1 vote
·
I looked into making this a plugin, but Android doesn't announce when the screen orientation changes... therefore a plugin won't be able to respond to it.
Things that are always running (like a background service) can subscribe to this change though - and Android will explicitly notify those apps.
@Carter - Perhaps you could have the Locale service tap into configuration changes and broadcast the event to a setting or condition you build into the next version?
I think there's value here, I also have a car dock that doesn't trigger dock mode and using orientation + time of day + day of week I could trigger a "In Car Dock" situation.