Related
Name: TextMixt (with Internet Battle Mode)
Description: TextMixt is the free sequel to anag7ams. Find as many 3, 4, 5 & 6 letter words in the time allotted. There are four difficulty levels to choose from.
Now available is Internet Battle Mode. You'll be playing against EVERYONE on the Internet in real-time. Everyone is given the same 7 letter scrambled word to start with. You'll have two minutes to guess as many words as you can. This mode uses an enhanced dictionary with all the words found in the Scrabble dictionary.
Included in this release are multiple themes to choose from, 11 Achievements (to start with) and a dictionary of over 10,000 words.
Scoring is based off of letter and word values, with Double, Triple & Quadruple tiles randomly assigned.
Finally, there is the Challenge Round -- solving a single six-letter word enables point multipliers.
NOTE: THIS UPDATE IS SUBMITTED TO THE MARKETPLACE AND CURRENTLY AWAITING APPROVAL
This App uses location services for ad targeting, but you can turn it off in the App itself if you're not interested. For online play, you'll need to enable location services and your data connection. Data charges may occur for online play, which is your responsibility.
Any feedback for future versions is very welcome and encouraged.
This is a XAP file, you'll need to download it and sideload onto your phone.
Thanks!
I am developing a new Pebble watch app to display which street food trucks are currently open for business and its current location for a given city.I will be using an API that currently collects this information for food trucks in 9 different cities.
I backed the Pebble kickstarter project and I have since written several watch apps, mostly in the transportation area, including one for various bus systems and the BART train. I wrote the apps for myself, but they have also been proven to be useful to thousands of other users.
I also wrote several watch face style apps that aggregated open sourced watch face apps, which enables users to have over 40 ACTIVE watch faces (not in the locker) that will only use up 3 of the 8 watch face slots.
Outside of Pebble, I have been working full time as a senior software engineer for many years and I am very into starting with a well-thought-out design and using the agile process and test first. Anyone monitoring my checkins will see how I will build and unit test each portion of the app. I've had several weeks to work out the design, so I'm ready to start the coding for tomorrow's official start.
Update: The API now supports 14 cities. I have enabled only the 13 cities that actually have trucks signed up for the service that are reporting their schedules. This is more than the 9 cities originally promised by my pitch.
iOS users can download the latest pbw from the downloads section of this project. See my reply below for instructions. Android users can download the latest app from the Pebble App Store.
source code link: http://github.com/mikebikemusic/FoodTrucks
XDA:DevDB Information
Food Trucks, ROM for the Pebble
Contributors
pebblemike
Version Information
Status: Stable
Current Stable Version: 1.0
Stable Release Date: 2014-09-03
Current Beta Version: 0.3
Beta Release Date: 2014-08-21
Created 2014-08-14
Last Updated 2014-09-04
What cities are you supporting? I just moved to Austin and could use a method for navigating the 10,000,000 trucks here.
mcongrove said:
What cities are you supporting? I just moved to Austin and could use a method for navigating the 10,000,000 trucks here.
Click to expand...
Click to collapse
Unfortunately, the API I will use does not yet support Austin or for that matter, the SF Bay Area where I live. The cities in the current API are Boston and Tallahassee in the US and Vancouver, Victoria, Ottawa, Edmonton, Halifax, Calgary and Toronto in Canada.
Like you, the first thing I asked the API developer when I contacted him was when he would cover Oakland. He is very interested in expanding. In fact, 3 of the cities on the above list are new. He said it takes some time to contact and get the truck drivers to buy into reporting their schedules into his app, but it's very easy, so once they start doing it, the information returned by the API is quite good. Better than the other APIs I considered.
Mike
UI Design
It's 10:01 Fri Aug 16 on my pebble as I start writing this...
Documenting and sorting out my mental design of the Food Trucks app UI. A lot of it is based on providing a similar UI to what I used for my BART app.
UI: On Pebble screen, 3 views:
1. Startup text to alert user if Pebble app is not responding, which, if responding gets replaced with
2. Menu of Food truck names and their locations, truncated, and when one is selected,
3. Scrolling text. Full details of the selected truck, including full name, location, ending time and other details such as phone #, type of food, etc.
Configuration screen: Shows list of supported cities. User picks one. Choice is remembered across Pebble runs and reboots.
Task Breakdown
Prototyping phase:
API example output is captured and JSON is analyzed. Use jsbin to write the necessary loops to iterate across trucks.
Filter out the unwanted data and extract the data needed for the menu and the details.
Decide on the format of the JSON to be sent to the Pebble watch.
Decide on the message sequencing between the watch and the javascript.
Code and debug the text layer in the main window to be used during startup.
Code the App Message interface in C. Use the text layer as a debugging screen.
Code the javascript so it sends mock menu data for a sunny day use case in the filtered format expected to be sent when the real data is connected.
Debug the C to Javascript interface.
Evaluate reliability and check for memory leaks.
Code the menu layer into the main window and display the received data in the menu.
Code the Scrolling Text Layer as a separate window pushed onto the main window.
Code the Javascript mock data for the details format.
Debug the interface and check for memory leaks.
Integration coding and testing:
Using Javascript prototype code from task 1 above, write the API call, analyze the incoming JSON and transform it to the expected data for the tested interface.
Debug using live data.
Write the configuration html and javascript.
Mock up edge and exception data cases and fix bugs.
Design icon and marketing materials.
If time permits, replace static arrays with malloc/free data.
Check and fix any memory leaks.
Release first version.
pebblemike said:
Prototyping phase:
API example output is captured and JSON is analyzed. Use jsbin to write the necessary loops to iterate across trucks.
Filter out the unwanted data and extract the data needed for the menu and the details.
Decide on the format of the JSON to be sent to the Pebble watch.
Decide on the message sequencing between the watch and the javascript.
Code and debug the text layer in the main window to be used during startup.
Code the App Message interface in C. Use the text layer as a debugging screen.
Code the javascript so it sends mock menu data for a sunny day use case in the filtered format expected to be sent when the real data is connected.
Debug the C to Javascript interface.
Evaluate reliability and check for memory leaks.
Code the menu layer into the main window and display the received data in the menu.
Code the Scrolling Text Layer as a separate window pushed onto the main window.
Code the Javascript mock data for the details format.
Debug the interface and check for memory leaks.
Integration coding and testing:
Using Javascript prototype code from task 1 above, write the API call, analyze the incoming JSON and transform it to the expected data for the tested interface.
Debug using live data.
Write the configuration html and javascript.
Mock up edge and exception data cases and fix bugs.
Design icon and marketing materials.
If time permits, replace static arrays with malloc/free data.
Check and fix any memory leaks.
Release first version.
Click to expand...
Click to collapse
In an ideal world, I would do the development in more or less the above order. But, as pointed out in the email sent to the 20 finalists there are early deadlines. I want to make this app available to all Pebble owners. This project won't need a companion app for Android or iOS, so I don't have to worry about Whitelisting. However, I will need to bundle the JS with a working API call by the end of next week. To that end, my goal is to start working on integration coding tasks 1, 2, 3, and 5 by Thursday, so I can post a beta on Friday.
This prompted me to consider what else I can accelerate. I decided to give the new CloudPebble Graphical UI Editor a try and see if it will build what I planned to do for prototyping tasks 5, 10 and 11. I may end up writing two applications. one that I can rapidly write and test code with, and the other where I assemble the tested code into the UI.
Update: I tried CloudPebble Graphical UI Editor, but it does not yet allow me to make either a SimpleMenuLayer or a ScrollLayer. It will be easier for me to build this myself.
bundle early, bundle often
FWIW - as I understand it, you don't need the javascript finalized (though that's certainly very good) - but you do need to have *a* bundled version of your javascript in place before they collect. It seems silly, but I've just published a barebones version of my app w/ javascript enabled that warns, specifically, that it's only published for javascript bundling. (Then again, the whole javascript pre-approval process in the walled garden that is IOS is pretty silly, IMO)
I don't think you technically need to make it public, you just need a published/ready version, but I went ahead and did so because I'm a paranoid type, and my free time is too limited to chance it. Once any version of your javascript has been published, I gather the updates in the future are made available on the order of minutes not weeks.
cynorg said:
FWIW - as I understand it, you don't need the javascript finalized (though that's certainly very good) - but you do need to have *a* bundled version of your javascript in place before they collect. It seems silly, but I've just published a barebones version of my app w/ javascript enabled that warns, specifically, that it's only published for javascript bundling. (Then again, the whole javascript pre-approval process in the walled garden that is IOS is pretty silly, IMO)
I don't think you technically need to make it public, you just need a published/ready version, but I went ahead and did so because I'm a paranoid type, and my free time is too limited to chance it. Once any version of your javascript has been published, I gather the updates in the future are made available on the order of minutes not weeks.
Click to expand...
Click to collapse
That's good to know, John,
Since the first 3 tasks of my prototype will get me to usable JS code for my integrated app, I'm not too concerned, even if it gets bundled and distributed.
But I thought that published/ready meant that Android uses would be able to download it immediately. I wouldn't want to publish anything that didn't work.
Mike
UPDATE:
Hey, everybody. Cherie just posted: "Submit your JS changes before 8/19/2014 11:59AM PST"
Progress Updates
Aug 15 2pm - Prototype task 5 is done. Github repository created. Stub checked in.
Aug 15 2:20pm - Prototype task 1 is done. jsonanalysis.js checked in.
Aug 15 3:00pm - Prototype task 2 is done. jsonanalysis.js updated.
Aug 15 4:00pm - Prototype task 3 is done. jsonanalysis.js updated.
Aug 15 7:00pm - Prototype task 4 is done. 3 unit tests passed. main.c updated.
That's it for today.
Aug 16 8:00am - Added assertions to debug and exercise app message sequencing, refactored unit tests. main.c checked in. Unit test output:
I realized that task 6 depends on task 7 so, I'm starting 7 first.
Aug 16 8:30am - Prototype task 7 is done.
Aug 16 10:30am - Prototype task 8 is coded, but has timing issue
Aug 16 4:00pm - Prototype task 9 is done. I decided that the memory leak "Still allocated <42949" is bogus because the only allocations were 1 window and 1 text layer and both got deallocated. (removing either destroy results in a reasonable 2 digit number leak). I then implemented and am satisfied with Prototype task 10 being done.
Aug 17 8:30am - Did task 12 before task 11. Both needed to work at the same time anyway. Code checked in.
I am declaring the Prototype phase complete and moving on to integration. Will change my status from Testing to Alpha.
Aug 17 9:30am - Integration tasks 1 and 2 went smoothly. Real data looks like I expected.
Aug 17 noon - Integration task 3 is working, but I have to go off to play music with friends. Will try to put together what I need to publish a beta on the Pebble App Store either tonight or tomorrow.
Aug 17 10:40pm - Put together enough of integration task 5 that I could publish the app as a beta. Because of the all the unit testing, there should not be too many bugs. However, I will continue to build a lot of edge tests, add one more icon that shows up on the watch, and fix any bugs I find through my additional tests or get reported. Your comments, suggestions and bug reports are welcome. I also need to update my website.
Aug 19 9:30am - Found and fixed several bugs. Published a more stable 0.2 beta. See release notes.
Aug 19 10:00pm - Started coding integration task 4. What I'm doing for that is expanding on the function testRequestSceduleFor(city) in the javascript. Since I don't want to ship all this test code with the app, I created a test branch where I will put the additional code. Fixes will merged into master. I'll be testing handling of very long string sizes and very large number of trucks. I already know the C program will fail because I'll be sending more data than the fixed sizes I put in. Since I have time, I will convert to malloc/free to fix these failures.
Aug 21 7:30am - Completed all tasks except for releasing a 1.0 version and updating my website. API now has Checked source code of 0.3 into github. I consider this a release candidate.
Aug 22 7:00am - Website is now updated with this app. Banner for the app store was updated to 10 cities. Here are screen shots of the food truck icon on the pebble, the startup screen and the no food trucks are open yet message.
Aug 27 7:00am - Updated configuration from 10 cities to 13 cities. More will be added as truck data becomes live.
Sept 3 9:30pm - Bumped version number to 1.0 after giving a number of iOS users a chance to download and use the app. Finalized the marketing materials to match the number of cities supported.
AppMessage timing issue
I've just implemented the AppMessage code for my app which requires a rapid sequence of requests and responses that is always kicked off from the javascript side. It's working fine when all my logging is in place, so I disabled the log messages and now it gets stuck after the first round-trip message. The message sequencing for the test is as follows:
JS: send count of 30 to C
C: request item 0 to JS
JS: returns item 0 to C
C: request item 1, then both sides go idle. JS does not get the message.
I found that if I add a psleep(100) before each request in the C code, it will get farther, but will eventually stop at a different item number, for example:
Not sure why yet. The send / receive code in the C program is a slight variant of the todo list demo app in the 2.0 sdk, also similar to what's in the weather and quotes apps in the 2.2 sdk.
Code as it stands is checked into github.com/mikebikemusic/FoodTrucks
I'll probably figure it out while out doing errands today.
====================================================
Update: Searching through the pebble forums, I found a few others who had similar problems. One of whom said his solution was in the todo list demo app, without explaining what his fix was, which didn't help me much. There was mention in several places about waiting for an ACK, but never an example. I updated my SDK to 2.4.1, but the demo apps all looked pretty much like mine. So, I re-read the app_message API looking for a way to set a callback for an ACK and noticed that app_message_outbox_begin can return,APP_MSG_BUSY. I then coded a retry/timeout using psleep, and lo and behold, the code is now working. Looking back at the 3 SDK samples they will all do the same dumb thing: throw away the request if it can't be sent immediately.
A little experimentation and measurement and I found that sometimes the wait between outgoing messages to the JS can be up to 1 second. I coded up a stress test that ran for a number of minutes and kept running even through an incoming phone call conversation. I caught this screenshot right before stopping it (over 20,000 round trips without stopping):
Bogus memory leak report
I started to see the following during testing of starting and stopping my app:
[PHONE] pebble-app.js:?: JS: starting app: 19177E4B-72D9-4B0C-B9D3-497C77488971 Food Trucks
[PHONE] pebble-app.js:?: app is ready: 1
[INFO] ocess_manager.c:291: Heap Usage for App <Food Truck: Total Size <13348B> Used <5692B> Still allocated <0B>
[PHONE] pebble-app.js:?: JS: stopping app: 19177E4B-72D9-4B0C-B9D3-497C77488971 Food Trucks
[PHONE] pebble-app.js:?: JS: starting app: 19177E4B-72D9-4B0C-B9D3-497C77488971 Food Trucks
[PHONE] pebble-app.js:?: app is ready: 1
[INFO] ocess_manager.c:291: Heap Usage for App <Food Truck: Total Size <13348B> Used <5248B> Still allocated <42949
[PHONE] pebble-app.js:?: JS: stopping app: 19177E4B-72D9-4B0C-B9D3-497C77488971 Food Trucks
[PHONE] pebble-app.js:?: JS: starting app: 19177E4B-72D9-4B0C-B9D3-497C77488971 Food Trucks
[PHONE] pebble-app.js:?: app is ready: 1
[INFO] ocess_manager.c:291: Heap Usage for App <Food Truck: Total Size <13348B> Used <5692B> Still allocated <0B>
[PHONE] pebble-app.js:?: JS: stopping app: 19177E4B-72D9-4B0C-B9D3-497C77488971 Food Trucks
[PHONE] pebble-app.js:?: JS: starting app: 19177E4B-72D9-4B0C-B9D3-497C77488971 Food Trucks
[PHONE] pebble-app.js:?: app is ready: 1
[INFO] ocess_manager.c:291: Heap Usage for App <Food Truck: Total Size <13348B> Used <5692B> Still allocated <0B>
[PHONE] pebble-app.js:?: JS: stopping app: 19177E4B-72D9-4B0C-B9D3-497C77488971 Food Trucks
Since only 24kb is available, 42949 makes no sense. It reports no leaks if my code also creates/destroys the scrolling window. It's almost as if I need to do a minimum amount of memory allocation before the leak detector works properly.
Release Notes
0.1 Aug 17 10 pm Published first beta to allow a working pebble-js-app.js to be bundled and to solicit user beta testing.
0.2 Aug 19 9:30 am Watch icon added. Changed startup message. Pre-build scroll window and its layers at startup. Bug fixes: Prevent multiple scroll windows when repeating select button quickly. Reset scroll to top when selecting details. Clear prior city's list when switching cities.
0.3 Aug 21 7:30 am Built javascript driven testing of C app. Used it to debug malloc/free code. The Javascript tests exercise the app with unrealistically large strings and large numbers of trucks coming from the API. In examining the API, I found that the developer added 5 new cities, so I added them also to the configuration screen. I will be doing live testing for all the cities before publishing an official 1.0 release.
Update: Aug 21 7:30 pm Of the 5 new cities I tested, only 1 had active trucks, so I removed the other 4 from the drop down. Fortunately, this is a simple server-side fix to hide the others until they are ready.
malloc/free challenge/solution
I ran into a little snag (which I eventually solved) during the conversion from using a fixed size array for the menu titles and subtitles to allocating them on the fly with malloc/free. I wanted to change the pointer directly in the menu_items.title without having to allocate a separate array of pointers. Problem was that title and subtitle are declared const, so free(menu_items.title) gets a compiler error.
I discovered that reinterpret_cast<> and const_cast<> are not supported by the compiler. Eventually I tried a simple (void *) cast, which did the trick. Then I refactored the code so that one bottleneck method took care of the free function and updating the pointer. I'm pretty proud of that code change. It's aware of the two string pointers that are not malloc'ed and provides an interface that prevents accidental leaks when my code dynamically changes the menu list.
Comments about developing using cloudpebble.com
I started writing pebble apps using cloudpebble soon after it first came out. I didn't have to install a dev system at home and I could make a quick bug fix at work, if necessary. I've since installed the development tools at home and used that primarily. I decided to give cloudpebble a second look for this competition. It's progressed a lot, but there are still some things on my wish list.
I find it a bit inconvenient when I have compile errors that I cannot see unless I open a second browser window to view source and errors side by side. A single button to flip back and forth between the compile logs and the current source code would really help.
Cloudpebble does not allow me to check in files unrelated to compilation, such as the configuration html. At one point, I tried to commit new code and I got an error (with no error message, just the word error). I figured out it was because of updates I had done to files unrelated to the compilation, but the only choice I had might have replaced all the new code I wrote with the previous commit. So I made a backup of my changes, updated the project and pasted back the changes.
Finally, as I had mentioned at the start of the challenge, the new code generation feature did not help me because I needed layers that were not supported yet. I ended up creating those layers while I was trying to track down the false memory leak report. I like doing that because now, if the app runs out of memory due to too many trucks in the menu, it won't fail to create the scroll layer for those that made it into the menu. Hmm, I need to put together a test case for that...
Feedback Anyone?
Android users can download my app from the Pebble store.
iOS users can get an advance copy here. The easiest way to load on iOS is to put the pbw file on your dropbox and, from dropbox, select the file and Open In Pebble.
Use the Reviews, Feature Requests, and Bug Reports tabs at the top of this development page. Also, search for "Food" in the Pebble store to find my app and tap the heart button on it. I see 5 already!
Adding another city
Looks like several more city's data has come online. I've added Hamilton (Near Toronto), Surrey, and Kitchener-Waterloo to the configuration. The other new city, Columbus, Ohio just has a few trucks using streetfoodapp.com. Only 2 of the 20 trucks registered with streetfoodapp.com in Columbus are promoting themselves this way.
If you live in Columbus, Surrey, or Kitchener-Waterloo that list just a few trucks, go tell your favorite food truck vendors to start publishing their schedule on streetfoodapp.com. If you live in a city not supported, click here to request your city
Feature creep vs planned development
It may seem like I've stopped working on my app now that it's feature complete and stable, but that's not entirely true. Yes, I've requested and am awaiting feedback from users, and I'm especially interested in seeing what happens when iOS users can see the app on their app store. That should happen any day now, since I met the Aug 19 deadline for JS bundling. I needed to publish another bug fix 2 days later, and one of the fixes I planned would have required a minor change to my JS. That JS fix was for an edge case that could only occur with the artifical data I supplied as a unit test that had a string size much larger than any in real data. If I updated my JS, iOS users would be delayed getting the other C code fixes. So, I chose to ship 0.3 with the original JS. It is interesting to note that when I reverted my JS manually, and published it, the dev-portal considered it a different version, so I pulled that release and reverted the JS to what I checked in to github. It turned out to be a whitespace difference. So, word of caution, the JS is compared byte by byte (or maybe a checksum).
Meanwhile, I have considered a few improvements. And I've experimented with one of them, which required further JS changes. The change will eventually go to the master branch, but rather than providing an improvement that nobody really cares or needs, I'd rather wait for feedback and act on that first, rather than announce future planned improvements. As features creep in, it's easy for the app to become more complex to use.
I'll give you one example. I'm on the west coast and when I look at the times reported for the Boston food trucks, the times are off by 3 hours. Should I fix it? Some would say, of course. But think about it. Are the real users who use this app going to be in a different time zone when they need to go out to lunch and open my app? Extremely unlikely. Both JS and the pebble watch API fall flat on their face when it comes to determining time zone differences, both dealing only with local time. I know how to compute that offset by calling another TZ API like I did for my Any Time Zone app. What I chose to do instead was contact the Food Truck API developer suggesting he provide all API users with a TZ offset in the data response. He has agreed to do so in a future API version. This is how planned development should work.
Mike
1.0 released
I posted my 1.0 build last night. It is available in both the Android and iOS Pebble App Stores for download.
The Past:
I've been working on this app since last 3 months and I'm pretty happy with the progress I made:fingers-crossed:. I was waiting for this day to post the app publicly in the forum which taught me so much:laugh:. Well, some might say this app is completely useless, but other might find it useful. I've considered all kind of users and accordingly added features to make it as productive as possible. This is still an alpha release and you may find several bugs, and I would really appreciate if you guys can report it whenever it crashes:angel:. I'm open to all kind of ideas and feel free to suggest me additional features.
About Floating Commander:
Well, I'm sure you're all are in love with Google Now, but then, so I'm I. But it sucks sometimes, how Google Now can't do many things that I want it to do, may be like setting the brightness of my screen to lets say 50%, changing sound settings and so on.. So, I've tried to accommodate all that in this app. Yes, this is a voice command utility that will do many things which Google Now can't (may be in future, but not now). Moreover, I've seen people who don't like the app simply because it eats up a little bit of data from your data pack and affects the battery aswell. Now, this one also needs data, but just to transform your voice to text, and rest all the features are processed natively and accordingly invoked. Its superfast (atleast on my phone, Galaxy Note 2) and it gets the work done. This app starts a floating widget which can be put on any edge of the screen, or freely (if u choose so in settings), and upon clicking, will invoke a voice recognition utility (Google's own recognizer) to detect your command (English Only for now) and thanks to its SpeechOptimizerEngine, it processes the command very fast and accurately and executes it. You can basically select/de-select each and every feature this app has from its settings and accordingly it''ll take more or less time (which is again negligible). Now, I'm sure there are people who think this is just another bull**** app and they don't need it when they have Google Now. Trust me guys, I have something for you guys aswell. I've put two new options which will be very helpful to most of you, I'm sure. Enable inbuilt "Google Now" mode in settings to launch "Google Now" from any screen using the floating widget, this will completely disable the native feature of the app. Also, another option is "One Touch" mode which can map to any activity, like changing sound profile, opening flash light, running memory cleaner or opening any installed app at the touch of a floating widget from any screen. The battery consumption is almost zero if it is not used, and if used, takes only for the internet data for converting voice to text. There's an additional feature to send the floating widget back to notification area by long clicking (when playing games) and bringing it back by clicking notification area. Its completely add free at the moment and I would definitely try to keep it that way. Overall, this app might or might not be suitable for your, but I would really appreciate if you guys devote some time analyzing and reviewing it here.
Ok, the final and the best thing, I've also tried integrating an offline mode, yes you heard it right.:laugh: But that's only for U.S. folks, since it works on only U.S. English accent. So, please don't review the app badly if it doesn't work offline for others.
Commands to try:
You can launch/open an app by saying:-
- launch <app name | any settings>
- open <app name | any settings>
- start <app name | any settings>
- run <app name | any settings>
Examples:-
- open bluetooth settings
- run cleaner
- launch whatsapp
- open browser
- open messaging
- run flashlight
You can toggle things by saying :-
- turn on <settings name>
- turn off <settings name>
- start <settings name>
- enable <settings name>
- toggle <settings name> on/off
- turn <settings name> on/off
Example:-
- turn on wifi
- start bluetooth
- switch on internet
- enable hotspot
- toggle autobrightness on
- turn rotation on
You can use set commands like:-
- set <settings name> to <value>
- change <settings name> to <value>
Example:-
- set brightness to 60%
- change ringer mode to silent
- change music volume to 80%
- set ringer volume to 100%
- change ringer mode to vibrate
- set all volume to 100%
- set alarm for 8:30 a.m.
- set alarm for 9:00 a.m. every weekday
- set alarm for 10:00 am. on monday tuesday thursday
Miscellanious Commands:-
Examples:-
- clean memory
- dial 12938
- call <contact name>/ <contact number>
- send message to <contact name>/ <contact number> <message>
- send message to joshua I'll be late tonight
- browse to www.google.com
- show my location
- drive from <location from> to <location to>
- drive to <location to> from <location from>
- show way from <location from>
- navigate to <location>
- navigate from <location> to <location>
These are a few bunch of examples, keep trying combinations and I'm sure most of them will work. Let me know if you have a worthy new command in mind. May be I've just wasted time in this, but I'm really looking forward to encouragement here for further development. And I repeat, I'm not doing it for financial gain.
Screens:-
Credits:
This app uses StandOut library by pingpongboss for creating the floating widget. Many thanks to him.:laugh:
This app also uses an open source application Searchlight without which, I couldn't have added an amazingly looking flash light inbuilt in the app. :laugh:
Apart from these, the application has been coded from scratch and supports only 4.1+
Known Issues: :cyclops:
- I've witnessed a few weird things on Nexus devices (it opens and closes the last opened background activity when voice recognizer is called)
- The floating widget doesn't appear on center when launched for first time (something wrong with my calculations)
- One Touch mode has a few drawbacks (all solved in my latest code which I'll upload in a few days)
- The donation section is mapped to whatsapp (since I was testing something on that and whatsapp has an easy package name:silly
- I haven't changed the min sdk version yet, any device from 1.6 and above can install it, but trust me, that's not gonna work for sure. I'll change it in the next update for sure.
- Theme changer and Widget Types are not working yet, thats easy but uploading an app on playstore takes like 6 hrs.
Overall, I'm hoping I've created something useful and I don't expect any financial profit from it, so please review accordingly. Also, I'm also planning to make it open source in future, but let me think about that again. And yes, this app is just of 270 Kb.
Thanks a lot for wasting your time on reading this. This app doesn't have any help section yet, will add one soon.
Download:
Application is deployed on Playstore in alpha release mode. So, please join the following Google Plus community first:-
boggartWare Google Community
Once you're added, you can find the link under "Floating Commander" category. Alternatively, you can click here and select "BECOME A TESTER". Only who joins this community can be a part of beta testing (that's google's policy). Once you've done that, you'll get a link on that same page to download the app from Playstore. Make sure you access all the links and join the community using the same Google id with which you access Playstore on your own phone.
Thanks guys.
<reserved>
<reserved>
Reserved
<reserved>
First off, impressive work.
What's the benefit of something like this vs something like utter?
Never used utter
aagha said:
First off, impressive work.
What's the benefit of something like this vs something like utter?
Click to expand...
Click to collapse
Hey, I've never used Utter, but this one is for those who thinks that Google Now isn't enough to do the needful. I know, getting things done through voice is a little bit odd. But sometimes, when you're alone, sleepy, don't want to scroll through menus to get things done, this one really comes in handy. Apart from that, I've also put two additional modes, "Google Now" mode and "One Touch" mode which are really really useful for anybody. Try and let me know what do you think.
Just updated to Floating Commander 1.8
Just updated the apk in Playstore to version 1.8
Now you can toggle settings by just saying "toggle <settings name>.
Hope you guys like it.
Check out the public release of the app
Get it here - play.google.com/store/apps/details?id=com.boggartware.fcommander
Other apps
.jpg[/img][/url]
How about playing music? I tried saying run music, play song but it only took me to music player.
I played a song and said, stop music. It took me to the music player,music kept playing.
Any suggestions?
Being an avid news reader, I really missed the good old Google reader when it shut down. After that, a couple of services like Feedly, FlipBoard popped up...but I didn't like the curation done by them. Feedly is an awesome service...but its UI has become really old and no longer interesting.
I prefer my news only from a couple of websites and don't want any curation. In my opinion, an Rss reader should be lite and offer a complete offline support -- I hate turning my phone to a brick when the network goes off.
So I started off on this project initially for my personal use, but decided to release it for public use. It is adfree and I don't hold any backend servers to serve the feeds. This app grabs the feeds directly from the websites you subscribe to and save them on your device. I have provided a couple of default feeds, but you can add your own feeds as well. OPML import available too.
This app has come out really well so far and now, I can use some feedback from the XDA community to perfect it Please let me know how I can improve the app further.
Note on Feedly Support Feedly support is done, but the developers at feedly have closed down support for new apps. I will enable that as soon as I get a response from them here https://groups.google.com/forum/#!topic/feedly-cloud/6OHPVevlnRM. If you have a developer token and would like to use that feature, let me know and I will push an update with limited feedly functionality(250 api calls per day, manually refresh your token every 30 days).
I am currently working on having support for NewsBlur service here.
https://play.google.com/store/apps/details?id=com.udn4hc.purerss
To list out a few features in the app -
- Complete offline support
- flip scrollng - similar to flipboard
- pager scrolling - similar to feedly
- standard Android scrolling with lists and cards
- Custom sync/cleanup
- Alternate Themes - 11 currently, including a dark theme
- Material Design
- OPML Import
- Add Custom feeds
- 6 fonts available
- Readability mode - Save full articles from websites(this is in beta and hence, the option is slightly hidden)
Greetings everyone,
https://youtu.be/T9aKmLTujik
What you see above is a "Control Panel" for my own Galaxy S7 Edge. I host this on my own website.
This means it can be seen and accessed from anywhere in the world, on any browser and/or device.
For privacy and security, I will implement a login system in the near future.
It has a couple of neat features, but since they are written in Dutch I will translate them to English:
Information:
Check battery level/percentage and check if your phone is being charged or not
Warns the user from the control panel if the battery is low.
Warns the user from the control panel to pull out the plug out of charging when it is fully charged
Check if your phone is in a light or dark place. I have optimized the light sensor as best as I could, The results are pretty accurate
Clipboard of your current copied content on your phone
Shows the phone model and the date and time of the last update sent from your phone
Check if Bluetooth is enabled or not
Check if Wifi is enabled or not
Show the current WiFi name, Wifi Speed, Wifi Channel & Wifi Signal Strength
Show the current Data Carrier / Mobile Signal strength (Weak, Normal, Strong)
Shows the current Call Volume percentage
Shows the current Media Volume percentage
Check if the screen of the phone is turned on or off
Check if GPS is enabled or not ( There is also a Live Google Maps on the right side, showing where the phone is right now )
Checks if the phone in call / calling / or getting called. ( in other words, it shows the user is busy with a phone conversation )
Checks if the user is browsing on the internet on the phone or not. ( It will check if a browser is open, needs more adjustments for more accurate readings )
I am surprised at the speed of the operations.
It takes a total of 3 to 4 seconds after clicking on "take a picture" button to take a picture from the front-camera and Upload it to my google drive.
It also removes the picture from my phone after it has been uploaded. WIth combination of SMS control this can be a great anti-theft option.
The "Record Audio" function works great too. after clicking on it on the control panel, it starts recording audio, waits 10 seconds ( records for 10 seconds ), stops recording audio and then uploads it to a special folder in my Google Drive.
The "Send SMS" function is very fast. after clicking on it, it will take about 1.5 seconds to send the SMS from your phone.
For now, the number to send the SMS to is hardcoded, but I will make it a variable so that it will be possible to type in the number on your web control panel and send the SMS to the number from your browser.
The "LOCK your phone" function immediately lock your phone remotely, even when your screen is turned off. You can unlock it with the code that has been set up in the Tasker Event.
Clicking on the Wifi, Bluetooth & GPS icon will toggle them( on / off )
Clicking on the Phone (screen) Icon, Will toggle the phone screen ( turns it on and off )
Clicking on the Clipboard icon will copy all the content to your own clipboard.
Not only the text but the icons also change dynamically.
Grey icons represent a false variable (turned off / dark / not in call & etc ) and the blue icons represent the true variables.
For example, in the screenshot above, Bluetooth is turned off and wifi is turned on.
When the battery gets at 15% or less, the icon will turn red and green when it's fully charged (100%) and the user will get an alert box warning with a notification sound straight from the browser about the low battery / full charge . ( Sound and notification can be turned off if you wish).
I have wrote a script with AJAX (Asynchronous JavasScript and XML) to do all of this in Real-time and without page-reloads. AJAX refreshes the page information every second (or whatever the user wants) without reloading the page.
The controls in this control panel are in many cases and in my experience a lot faster than Android Device Manager or other apps like Cerberus and Airdroid.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- On Tasker, I have used Taskers own variables but also created my own variables to be created/changed on certain triggers.
For example, when the lx level ( light sensor ) gets low, it will set a variable to "false" as boolean, meaning there is not enough light == it is dark.
- Next I use this variable in my HTTP POST Request URL to a very simple PHP script on my website I wrote..
The HTTP POST Request URL will post to my PHP Script.
My PHP script grabs the URL, strips certain parts of it, turns it into PHP variables and then sends it to my MySQL database ( all on my own hosting).
- I again use the wonderful Tasker to do all of this this every 2 seconds.
You can get (almost) real-time information about your phone if it's set to be updated every 1 second.
This will not be very heavy on the database so it's possible.
- I then made another webpage containing another simple PHP script that grabs all the variables ( those we saved in previous steps) from my Database and echo's (shows) it on the screen.
This is the very same page you see on the screenshot, This is the Control Panel.
In the last step, all we have to do is visit the webpage on my website.
It will show the control panel as seen in the screenshot. You will also be able to control your phone from here.
I am making a simple login function where users can login.
this means a single database can hold more than 1 user if you wish to.
This will also protect others to see/control your phone from the web as they will need login credentials.
My script will then grab the corresponding variables of your phone when you login, using your ID and checking it on my database.
I know this may sound complicated for a lot of you who think that this is too much work, but I am planning to finish this and make it a some kind of a Open-Source thing available to every android and (rooted) tasker user.
All you need is:
- My Tasker project files ( all you need to do is import it to your own Android )
- Your own webhosting with MySQL database and PHP.
There are TONS of FREE online webhosting that will offer exact this. I'd love to post all the links here, but i'm not sure if it will be seen as advertising, so let me know.
- My PHP script(s), all you need to is simply upload it to your own website.
- My MySQL database configuration file - After importing this single file, the whole database will be created automatically on your website. ( using MySQL on your hosting )
After that, and when my Login function is complete, you could create an account for your self and/or others where they can login from anywhere in the world, on any browser or device and check their phone status and control their phone in Real-Time.
Sicariux said:
Greetings everyone,
i63.tinypic.com/20jsimh.png
What you see above is a "Control Panel" for my own Galaxy S7 Edge. I host this on my own website.
This means it can be seen and accessed from anywhere in the world, on any browser and/or device.
For privacy and security, I will implement a login system in the near future.
It has a couple of neat features, but since they are written in Dutch I will translate them to English:
Information:
Check battery level/percentage and check if your phone is being charged or not
Warns the user from the control panel if the battery is low.
Warns the user from the control panel to pull out the plug out of charging when it is fully charged
Check if your phone is in a light or dark place. I have optimized the light sensor as best as I could, The results are pretty accurate
Clipboard of your current copied content on your phone
Shows the phone model and the date and time of the last update sent from your phone
Check if Bluetooth is enabled or not
Check if Wifi is enabled or not
Show the current WiFi name, Wifi Speed, Wifi Channel & Wifi Signal Strength
Show the current Data Carrier / Mobile Signal strength (Weak, Normal, Strong)
Shows the current Call Volume percentage
Shows the current Media Volume percentage
Check if the screen of the phone is turned on or off
Check if GPS is enabled or not ( There is also a Live Google Maps on the right side, showing where the phone is right now )
Checks if the phone in call / calling / or getting called. ( in other words, it shows the user is busy with a phone conversation )
if the user is browsing on the internet on the phone or not. ( It will check if a browser is open, needs more adjustments for more accurate readings )
I am surprised at the speed of the operations.
It takes a total of 3 to 4 seconds after clicking on "take a picture" button to take a picture from the front-camera and Upload it to my google drive.
It also removes the picture from my phone after it has been uploaded. WIth combination of SMS control this can be a great anti-theft option.
The "Record Audio" function works great too. after clicking on it on the control panel, it starts recording audio, waits 10 seconds ( records for 10 seconds ), stops recording audio and then uploads it to a special folder in my Google Drive.
The "Send SMS" function is very fast. after clicking on it, it will take about 1.5 seconds to send the SMS from your phone.
For now, the number to send the SMS to is hardcoded, but I will make it a variable so that it will be possible to type in the number on your web control panel and send the SMS to the number from your browser.
The "LOCK your phone" function immediately lock your phone remotely, even when your screen is turned off. You can unlock it with the code that has been set up in the Tasker Event.
Clicking on the Wifi, Bluetooth & GPS icon will toggle them( on / off )
Clicking on the Phone (screen) Icon, Will toggle the phone screen ( turns it on and off )
Clicking on the Clipboard icon will copy all the content to your own clipboard.
Not only the text but the icons also change dynamically.
Grey icons represent a false variable (turned off / dark / not in call & etc ) and the blue icons represent the true variables.
For example, in the screenshot above, Bluetooth is turned off and wifi is turned on.
When the battery gets at 15% or less, the icon will turn red and green when it's fully charged (100%) and the user will get an alert box warning with a notification sound straight from the browser about the low battery / full charge . ( Sound and notification can be turned off if you wish).
I have wrote a script with AJAX (Asynchronous JavasScript and XML) to do all of this in Real-time and without page-reloads. AJAX refreshes the page information every second (or whatever the user wants) without reloading the page.
The controls in this control panel are in many cases and in my experience a lot faster than Android Device Manager or other apps like Cerberus and Airdroid.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- On Tasker, I have used Taskers own variables but also created my own variables to be created/changed on certain triggers.
For example, when the lx level ( light sensor ) gets low, it will set a variable to "false" as boolean, meaning there is not enough light == it is dark.
- Next I use this variable in my HTTP POST Request URL to a very simple PHP script on my website I wrote..
The HTTP POST Request URL will post to my PHP Script.
My PHP script grabs the URL, strips certain parts of it, turns it into PHP variables and then sends it to my MySQL database ( all on my own hosting).
- I again use the wonderful Tasker to do all of this this every 2 seconds.
You can get (almost) real-time information about your phone if it's set to be updated every 1 second.
This will not be very heavy on the database so it's possible.
- I then made another webpage containing another simple PHP script that grabs all the variables ( those we saved in previous steps) from my Database and echo's (shows) it on the screen.
This is the very same page you see on the screenshot, This is the Control Panel.
In the last step, all we have to do is visit the webpage on my website.
It will show the control panel as seen in the screenshot. You will also be able to control your phone from here.
I am making a simple login function where users can login.
this means a single database can hold more than 1 user if you wish to.
This will also protect others to see/control your phone from the web as they will need login credentials.
My script will then grab the corresponding variables of your phone when you login, using your ID and checking it on my database.
I know this may sound complicated for a lot of you who think that this is too much work, but I am planning to finish this and make it a some kind of a Open-Source thing available to every android and (rooted) tasker user.
All you need is:
- My Tasker project files ( all you need to do is import it to your own Android )
- Your own webhosting with MySQL database and PHP.
There are TONS of FREE online webhosting that will offer exact this. I'd love to post all the links here, but i'm not sure if it will be seen as advertising, so let me know.
- My PHP script(s), all you need to is simply upload it to your own website.
- My MySQL database configuration file - After importing this single file, the whole database will be created automatically on your website. ( using MySQL on your hosting )
After that, and when my Login function is complete, you could create an account for your self and/or others where they can login from anywhere in the world, on any browser or device and check their phone status and control their phone in Real-Time.
Click to expand...
Click to collapse
It looks like a great project.
Checks if the user is browsing on the internet on the phone or not. ( It will check if a browser is open, needs more adjustments for more accurate readings )
Click to expand...
Click to collapse
What about checking the network traffic to know whether the user is browsing or not?
I know this may sound complicated for a lot of you who think that this is too much work, but I am planning to finish this and make it a some kind of a Open-Source thing available to every android and (rooted) tasker user.
Click to expand...
Click to collapse
Even Open Source? That rocks.
XDA's Tasker subforum isn't that popular. You might wanna post your project on reddit too, where the Tasker community is way bigger and more popular:
https://www.reddit.com/r/tasker/. Let us know if you'll post it there too.
I'm looking forward for this project. Personally, I don't think I would use this as I don't think I really need it (although it doesn't hurt to have an anti-theft), but I'd like to see how it is done, if you're gonna make it Open Source.
Good luck!
Hi and thanks for your reply!
What about checking the network traffic to know whether the user is browsing or not?
Click to expand...
Click to collapse
Do you mean any random network traffic? in that case, a simple incoming whatsapp message could trigger the browser variable and set it to "true".
I will try reddit ... I have tried posting it in the official Tasker forums, but the my post is still awaiting moderator approval after a long time.
Since i've posted this thread, I've created new functions already like video recording (microphone audio included) the phone screen for 10 seconds and upload it to google drive.
I haven't seen this option on any other anti-theft yet. In a case of emergency, you could literally watch the thief do things on your phone and also hear him talking.
Since it's going be to open-source, it's highly customizable. You could change the icons, add new functions, remove functions , change the styling to your own wishes and improve the "web app" overall.
For those interested, Since the first post, I've added more options and starts looking good
https://youtu.be/T9aKmLTujik
For rooted users, you could make an add-on app that the user puts in the /system partition and, in case of factory reset, installs Tasker and restores it's data.
That way, the user has a chance of finding their phone even if the thief performs a factory/hard reset.
EDIT: Are your files available? I can't seem to find them.
Vagelis1608 said:
For rooted users, you could make an add-on app that the user puts in the /system partition and, in case of factory reset, installs Tasker and restores it's data.
That way, the user has a chance of finding their phone even if the thief performs a factory/hard reset.
EDIT: Are your files available? I can't seem to find them.
Click to expand...
Click to collapse
With the new Android versions, this is not a reliable thing anymore. This is the same reason Cerberus App stopped offering a special APK that could be installed in the /system by flashing it.
Also, it would be very difficult to have an add-on app install Tasker, AutoRemote, FolderSync and other plugins it needs automatically and configure them too.
I haven't made my files available yet. I am still perfecting it and awaiting community tips and input to expand the app more before releasing the source-files.