Newest update had a while bunch of bugfixes and staying in some new features too.
Archive for the ‘Blog’ Category
Just uploaded the newest update for Void Lock.
This new update focuses on fixing up ICS support.
Turns out the FC error I had before was because I set the targetsdkversion to be ICS, but the code I used to block the home button has been changed. After removing that line of code, the FC errors disappeared.
I also noticed that there was a problem with the status bar sometimes appearing. I discovered that this was because something was preventing Void Lock from becoming fullscreen after onStart is called. This is also related to the piece of code that was changed in ICS.
After a few days of planning, I decided that the best option is to just create a home launcher for Void Lock. The approach I took is just to create some kind of switch as the home launcher. When home is pressed, it will check if Void Lock is currently locked. If Void Lock is active on the screen or if it is active in the background then pressing home will lead it straight back to Void Lock. As long as Void Lock is not currently locking the screen, pressing Home will just call any launcher that the user preselects.
After some thinking, I noticed that there was definitely a couple of advantages to this approach. Main advantage is that it will definitely prevent the home button to be pressed while Void Lock is locked. This should hold true for every device unlike the previous piece of code that might break depending on this device or that device. But the biggest advantage that I saw was the increase of security. Now, even if someone was able to launch out an app through an app gesture that was created, it wouldn’t help them much. Previously, if an app was launched or any kind of popup popped up, pressing home will bring people straight to the home launcher. Thus enabling them to get in. With Void Lock set as the default launcher, that’s just simply not possible. Pressing home when any app is launched or any popup is shown will simply bring users back to Void Lock instead of the home launcher. Due to this, as long as users do not put in a gesture for Settings, uninstall apps, Void Lock Settings or etc, then it should be impossible for anyone to be able to turn off or uninstall Void Lock without a factory reset.
One other benefit I could think of off the top of my head is that if Void Lock is the default home launcher, then that means that the device can be locked immediately from a reboot. Previously, the default launcher is launched and then a few minutes would occur before Void Lock became active and locked the phone. This isn’t an issue with the new approach.
If there’s one bad thing about this approach, its the fact that the selected launcher is technically no longer a home launcher. Well, its still a home launcher, just now its treated as a regular app and at risk to being killed by the system. What this means is that when the homescreen is shown, it will redraw its widgets more frequently than if it was the default launcher. This isn’t much of an issue for users who has little to none widgets on their homescreens, but for the users who has a major amount, they will definitely notice the redrawing.
Since I said that the status bar problem was caused by the code that was used to block the home button, I have made modifications where if Void Lock is set as the default launcher, then it will disable that piece of code. This will also fix up the status bar issues so it should be considered by even nonICS users.
One last issue I fixed up was the problem that some users had with their device not detecting gestures or key combinations anymore. Truthfully, it looks like Void Lock stopped working, but actually its still working. The problem came from having a popup notification of some kind popping up and blocking the screen. That type of popup notification could be SMS messages and related messages, Low Battery Dialog, or any other type of popup boxes. These would pop up while Void Lock was locked and because Void Lock turns the brightness below the minimum amount, it will be too dark to see that the boxes had popped up. Because of this, most users didn’t notice anything and only noticed that Void Lock stopped responding to anything. Though obviously, only LCD users suffered from this issue. AMOLED users are all able to see the popups that appear so this was a non-existant issue to them.
I took a new approach to fixing this problem. The approach I’m taking now is for the screen to brighten up a bit to display the popup when it is received. At least this way, users can be sure that Void Lock isn’t not responding.
Pretty big update here, hoping to get a lot of new ICS users and more and more users.
Well, Void Lock is making excellent progress. Working on ICS support.
Fixed the Force Close perform, but ICS changed the way the code I used work, so I need to find an alternative to block the home button. I believe I might need to make Void Lock into a “fake home”.
Just published my newest app!
The lockscreen, Void Lock.
Here’s the Free Version: https://market.android.com/details?id=com.devjackey.voidlock
Here’s the Paid Version: https://market.android.com/details?id=com.devjackey.voidlockpaid
Anyway, now for some information about Void Lock.
Hmm, idea started from HL requesting for a way to turn on and off her phone without pressing the power button. I put some thought into it. Put a lot of research too. Making it turn off was easy. A simple Screen Timeout to a very short time or a Administrator Access, LockNow() would lock the phone. The problem, was turning it on. There’s no easy way to do it. Actually, I should say that its impossible to do through simple app methods. Therefore, inspiration hit. The only way I could think of to avoid pressing the home button is to keep the phone always on, but just looking like its off. This way, you can lock and unlock as much as you want without pressing the power button. However, I had concerns about battery life, so after a few tests, I believe its suitable to try. Theoretically, I was thinking of making a lockscreen, so I went to make a lockscreen.
Now, a lockscreen that pretends its off has a LOT of really good benefits. Most of them to do with saving battery and security. If the phone is always on, it’ll just lose battery from being awake, but normally the phone loses battery the most through its display. If the brightness is all the way down, then no battery is lost through that. Still loss from being awake, but one thing draining is less harsh than two things draining. Now about security, I wrote up a Demo Version without the Gestures feature and showed a lot of people. Every Single One of them thought my phone was off, battery was dead, or phone froze. Not a single one even considered that my phone was on, but pretending to be off. Now, this offers up a LOT of possibilities. Most of them involved with the possibility of someone taking the phone. For example, if I had tracking apps going on, the thief wouldn’t even be able to see that. Furthermore, if the thief thought the phone wasn’t on in the first place, then they wouldn’t think about turning an off phone off right? So this would give someone a higher chance at recovering their phone.
Now, I got the basic ideas down, but now for the fun part. How would I unlock it? Well answer was pretty simple. If the phone was pretending to be off, I can’t exactly have icons on the screen like other lockscreens right? I’ll have to unlock stuff through irregular methods such as Gestures or Key combination presses. I decided to use both. For Key presses, any key but the home key and power key can be used. I didn’t put any restrictions on them, so you could unlock by pressing one key or pressing 100. The amount of combinations possible just screamed out, “SECURE”. Now for gestures, I was a bit worried about the accuracy of gestures, but it turns out that Google did a VERY good job. As long as your gesture isn’t a simple simple one, its also very very secure. However, accuracy is still a slight problem because I noticed myself messing up 2 out of 10 times. This is why the key combinations is the backup unlock method. I will make key combinations to be Unlock only, because too much possible key combinations would just lead you to forget if the combination you’re thinking of is Unlock or turn on wifi. At this point, I can talk more about the Gestures. Because gestures are associated with shapes, I can put in features from other lockscreens such as Launching apps directly from the lockscreen. Very useful feature. I decided, I can also do gestures for settings. Since, its just a nice convenience. Say you’re at a meeting and you need to vibrate your phone quickly. Normal lockscreens would require you to first press the Power button, then unlock the lockscreen, enter in password if its password protected, THEN pull down the handy notification bar to change to vibrate. My lockscreen handles this in a much more convenient way. Press the power button, then draw the gesture for Vibrate Phone. Actually, if you’re using the WakeLock mode where you DO want to keep the phone always on, you could easily just take out the phone and draw the Vibrate gesture. So quick and simple. Let’s try a different scenario. Let’s say you left the house. You need to turn off wifi because it would drain your battery a LOT from constantly scanning around you. Same amount of steps for regular lockscreens and same amount of steps for my lockscreen. Its just much easier to access.
Now, this app was very fun to make and very fun to show friends. I could see big things going for it and I plan to expand on it a lot more.
Took me about a month to make the app. Hard part was definitely finding ways to make sure the lockscreen was secure!
After I was done, I had to think about pricing. Initially, I thought about charging about $4 for it, since I saw other lockscreen apps around that price on the market. In addition, I was planning to put up a limited trial version for about 7 days. This goes against my normal policy of Free Full Version with ads and Paid Full Version without Ads. I normally went that way because I’m poor and I know the feeling of wanting a paid full app, but not wanting to spend the money on it. Therefore, I decided all my apps will be full versions for both free and paid, except that the free with have ads to pay for my meals and paid will be like a Donation to me. However, for this app… well I thought it would have been stupid to put ads on a lockscreen. Especially if that lockscreen is pretending to be off. Imagine this: Guy picks up my phone. “Phone is OFF! O.O” then… an Ad pops up. Guy: “Oh.” He clicks the Ad and now he’s in.
So, I gave up on the idea of ads on free apps, and decided to just hope they’ll buy the paid version after using the free trial, but… something about that just doesn’t settle with me. I really didn’t like the feeling of selling apps that way. Then, I played a game of Word With Friends, and I noticed ONE thing. There was an Ad after every move! Of course, I could do the same thing! I could stick back to my original policy and still avoid putting Ads in the lockscreen, by putting the Ad after a successful Unlock. However, this would be annoying, since I unlock my phone constantly. So, I put up a new rule, Ads will only show up once every two hours.
Now, its 5AM, and my longest post since I’ve made this blog is now OVER.
Hopefully, I’ll go back to writing here more. But, I’ve been writing a lot in diary these days.
Wow! I haven’t made updates on this blog after I made the diary app. Been recording all my progress on there instead.
My new lockscreen app is almost done. Pretty proud of myself, spent one month to do it and that month was spent doing schoolwork and studying for finals.
I should be able to release the lockscreen by the end of today. All I’m missing is just the app icon.
Just finished up the app and waiting for the market link.
Able to continue working on the diary.
Fixed up the graphics and visual appearance a bit. Apparently, what I had before made the words too dark to see. Much more pleasant to the eye now. Or maybe its just my personal preference.
Worked on the Media screen. Spent a while thinking of ways to fix up the lag. I’m sure threading is the first thing I should try out. Luckily, I found this article, http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html. Very good information. Well, I followed their examples and adjusted what they did for asynchronously loading images and indeed, a lot of the lag was gone. However, I’m not too happy with the remaining lag. Since I was already loading up the images in another thread, I believe the lag might be coming from me constantly decoding my images each time. I’m going to make the assumption that I should store the decoded images in a cache folder and call that when I search for images. Took a look at more of the blog post and they had information about caches also. I adapted the cache to work with my code, but I didn’t notice a difference. Did some other changes I think that would help me increase the speed, but still looks like no changes at all.
I was ready to put that aside and work on my other parts until I noticed that I had never wrote the part of the code that actually saved the decoded files to the cache folder. No wonder it never found a image and went to decode an image. After I fixed up that problem, the lag was almost gone. However, there was still a bit of lag. Apparently, some images wouldn’t stay on the imageViews. I’m not sure was it because it was reusing the imageViews or was it just recycling them after they wont off the screen. I just know that because I still have to pull up the images, that should be the part still causing the lag. I finally noticed that I had a limit of 30 in the hashmap. After I increased the upper limit, my lag was gone! I’m extremely happy. Can’t wait to work on the next part. Which should be creating my own ListView.