Posts

Disabling home-button-slide to search by Google now.

As I trying to make an android app for my autism kid, I wanted to disable any button to escape the app without inserting password. I killed homebutton as making it to be a HOME application, I found that my kid sometimes accidentally wonders into other apps through google search by sliding home button. I finally disables (or rather overwrites) it by capturing its intent. The trick is very easy. Just add one line to AndroidManifest. <intent-filter> <action always="always" android:name="android.intent.action.ASSIST /> .... First time adding this, sliding home button makes you to choose what to do, so choose your own app and makes it "always".

Nexus7 doesn't do dual-pane thing on PreferenceActivity

I have been wondering why my PreferenceActivity doesn't become dual-pane(two-panes) mode, and I found it works fine on a tablet other than Nexus7. I confirmed getConfiguration().screenLayout is LARGE, so I wonder this is bug. Anyway my app is meant to work on tablet, so I finally do this class PrefActivity extends PreferenceActivity() { override def onIsMultiPane():Boolean = true } However, this turns the preference activity into dual-pane on any device. If anyone knows better solution, let me know...

ClassNotFoundException on sbt-android-plugin

I tried to create a brand-new scala project for android, but I found it cannot be started by ClassNotFoundException which means MainActivity was not found. Again, it is caused by Proguard and it seems skeleton program created by g8 jberkel/android-app uses proguard by default. To cut proguard, you just comment out "proguardSetting ++" line in project/Build.scala file. Setting "false" to proguardSettings seems not working, so just comment it out.

sbt+ProGuard+addJavascriptInterface = HELL!!

Honestly I really don't understand what's going on, but I have been messed with addJavascriptInterface of WebView(android) used on the sbt project which is using ProGuard for obfuscation for weeks (literally!) I have guessed the problem was caused by obfuscating class names so that WebView cannot find the method, however proguard options were too tricky. After try & errors, I finally made it to work adding following setting to Build.scala proguardOption in Android := List( "-keep public class * extends android.app.Fragment", "-keep public class com.test.javaInterface", "-keepclassmembers class com.test.javaInterface { <methods> }" ).mkString(" ") The points are -dontobfuscate seems not working. (for my environment at least.) sbt clean seems to be needed every time I changed proguardOption All options should be combined as one line. not only class but classmembers should avoid obfusca...

Installing RoboCut on Mountain Lion(max osx 10.7)

Installing RoboCut( Robocut ) on Mac OSX 10.7 Moutain Lion takes a bit of work. 1. Installing qt and libusb brew install qt4 libusb 2. Download Code git clone git://gitorious.org/robocut/robocut.git cd robocut  3. qmake and modify Makefile qmake sed -i.bak -e "%s/10.5/10.7/g" Makefile make  4.enjoy

Empty list in Python

To empty list, list = range(10) del list[:] honestly I do not fully understand how it works, but it works.

Stuck installing Python using Homebrew (Mac OSX Lion)

I tried to install python (once again), but been stuck for a while. So I leave a note for future myself. First of all, brew install python fails due to "permission denied". This has to do with something replacing files under /System/Library/Frameworks/Python.Framework so I changed owner of the folder, though it is a bit uncomfortable. sudo chown $USER /System/Library/Frameworks/Python.Framework After that, I tried installed pip and virtualenv. easy_install pip pip install virtualenv but, pip didn't work complaining "there is no such module named setuptools". I had been stuck this for a while, but solution is written in a message of "brew install python" (I couldn't see it for the first time) Before you use pip, you have to do pip install --upgrade distribute make sure, easy_install and pip is homebrewed. They are under /usr/local/share/python and you should set $PATH like export PATH=/usr/local/share/python:$PATH