Wednesday, September 30, 2015

Back to Samsung Firmware - part 2

It's time to get the root access. This operation can be accomplished in two steps.
  1. Install a CWM (ClockWordMod) recovery
  2. Install a zip file that allows to gain root access
The first step is needed because there's no way to install a zipped program into the phone without having a CWM recovery installed. Specifically, we will install the PhilZ kernel (for more info check this out).

Ok. Let's start.
  1. Download PhilZ kernel.
  2. Be sure the phone is switched off. 
  3. Start it and press simultaneously VOLUME UP + HOME + POWER keys
  4. Follow the instructions on the phone
  5. Start Odin
  6. Connect the phone to PC via USB cable
  7. Click on the AP button in Odin window and load PhilZ kernel
  8. Click on Start button. The transfer begins.
When the procedure terminates, the phone restarts. Now you will notice a yellow triangle just under the phone name. It indicates the phone kernel has been altered someway. Don't worry about it: it's possible to get rid of it. We will do it later, For the moment just forget about it.

Saturday, May 23, 2015

Back to Samsung Firmware

Oops I did it. I mean, I installed CyanogenMod on my Samsung Galaxy S2.
After a week spent with it, I can say for sure that the only thing I really appreciated is the new version of Android OS (Kitkat, so Android 4.4.4, instead of Samsung's 4.1.2) . All the rest sucks (sorry!).
This is my list of major compliances:
  1. Not energy efficient. A battery charge last at maximum half a day
  2. Unstable. It reboots at least once a day
  3. Ther's not an FM radio and I cannot live without
That's enough for me. Time to come back to Samsung Firmware: yes I will reinstall Samsung Firmware, obtain root access and remove all the unnecessary Samsung apps that only last memory.

It's 12:00 AM. Let's start.

As a first step let's do a Nandroid backup. It's easy to do it starting with an already installed CyanogenMod ROM. In fact CyanogenMod comes with a CWM-based Recovery that makes it easy to do a full, Nandroid backup.
  1. Turn off the phone
  2. Enter recovery mode: with the phone still off, press simultaneously VOLUME UP + HOME + POWER keys
  3. The device will start in recovery mode
  4. Select backup and restore (use VOLUME UP / VOLUME DOWN keys for moving through the menu items and use POWER key for selecting an item)
  5. Choose either backup to /storage/sdcard0 or /storage/sdcard1
  6. After about 15 mins, the procedure finished. My God! I started with a 65% of battery charge and now it's about 10%!!! Anyway, I chose to backup onto sdcard0, therefore the procedure created some subdirs for me, specifically: clockworkmod/backup and another directory labeled with today's datetime. Inside that directory the procedure saved all the stuff. 
It's 12:20 AM. My phone is charging now. I need to reach about the 60% of the full charge for completing the next step. So, let's pause for a while and have some rest/fun with other activities. 

It's 01:05 AM now. Phone charge is about 68%. Time to install Samsung Firmware back. We will use a PC with Odin already installed and Samsung firmware file already in there.
  1. Connect the phone (still swiched off) to PC using a USB cable
  2. Start Odin and load the original Samsung Firmware by clicking on AP button and selecting the corresponding firmware file
  3. Start the phone keeping VOLUME UP + HOME + POWER keys pressed
  4. Follow the instruction on the phone
  5. Click Start button from Odin window
  6. At the end of procedure the phone will install the Samsung Firmware and will boot.
  7. If the phone keep restarting again and again without finishing the boot procedure, a hard reset is needed. In order to do this, switch off the phone. Then press VOLUME UP + HOME + POWER keys. The device will start in recovery mode. Select the item wipe data / factory reset and reboot.
It's 02:50 AM now. Samsung Firmware is working, but I haven't finished yet. I want to get rid of all the junk Samsung app that are pre-installed by the vendor. Ok. Time to root the phone.

Sunday, March 17, 2013

From one monolithic log files to many, more manageable, smaller logs

... Then they came to me for interpreting the n-th log file: it was an intricate mess of thread traces. When I went home I wrote an utility for splitting that mess into several files each one with a single thread trace.

Welcome to my log-splitter

Tuesday, January 08, 2013

Reading Android SDK doc offline - I want to build my app - day 3

The ADT bundle doesn't install documentation by default, therefore the only way to read it is by using a internet connection. Here I'll describe how to acquire that documentation for reading it locally.

First off, be sure to launch your Eclipse IDE as computer administrator. (The details about how to do that are a little bit OT here, anyway... if you start Eclipse using a shortcut in Windows 7, be sure that, after opening its property, the item Run this program as an administrator is checked on under the tab Compatibility).

Now open your Eclipse IDE, then from Windows menu, choose the item Android SDK Manager. A window similar to the one in figure will open up.

Here you can see what already has been installed locally and what still hasn't. Check the item Documentation for Android SDK then click on Install button.

After installing the documentation, you can browse it under docs folder, located into SDK root folder. The entry point is the file offline.html.

What kind of Java am I using? - I want to build my app - day 3

Right now I'm doing some experimentations with Eclipse IDE using Java, but... wait a moment: is this the JVM I'm used to program for desktop/server applications?

Well... no. Take a look here to get what Dalvik is and here for getting some basic differences from JVM.

Monday, January 07, 2013

Time to study and to experiment - I want to build my app - day 2

This is day 2 of my experience in building my own Android app.

I downloaded the whole ADT bundle for Windows here and I installed it.
Then I started my training by chapter one, Building Your First App, that's basically an Hello World app.

This is a quite easy app to develop that shows you some basic concepts behind Android development: the Activity class, the View class and the Intent class. Beside that, it helps you familiarize with the emulator and its usage for building, running and debugging apps.

My impression now is... there is a lot of things to study and the complexity is high because the field is huge and this platform suffers fragmentation: I mean you cannot rely on the fact your app will run on Jelly Beans only (at least for my app). Therefore some APIs cannot be used generally and you have to learn way A as well B to do just the same thing.

Before continuing my training, I discovered a site where Open Source Android app are listed: it can be useful for doing some practice by studying already-skilled-programmers' code. Here it is: F-Droid. This site, as well as the SDK samples, can help a lot. (Practice makes perfect).

Saturday, December 22, 2012

Disappointment with tablet screen protectors

It was the third screen protector I tried to apply to my 7 inches Android tablet. I ended up thinking that is nearly impossible to apply a screen protector on a tablet surface without introducing some air bubble or dust.

So, now, I give up. My Android tablet will never have any of these gadgets.

After this (frustrating) experience my conclusion is: screen protectors are easily appliable only on small screen sizes, i.e. on mobile phones, otherwise... forget about them.

I want to build my app - day 1

Welcome back.
I see my last blog entry here is dated September 2010... a lot of time ago.
Don't worry for me: I'm alive and well. I still work on Java, I do a lot of photos and enjoy life.

Starting from today, I'd like to bring some new air here, at least I promised that to myself: I want to seriously build some apps. 

I own an Android 4.1 phone and an Android 4.2 tablet and I already told to myself countless times this year to develop some ideas, but I'm still fighting against less or no time at all, so the challenge here is to find out some good time to put words into action.

Today is day one for this project. I will post here my progress on a regular basis labeling each entry with the keyword myapp.

Thursday, September 16, 2010

Apache Ant - How to search a and replace regular expressions inside a text

As reported by documentation, Ant provides a task, <ReplaceRegExp>, "for replacing the occurrence of a regular expression with a substitution pattern in a selected file or set of files". Now the question is: do Ant also provide a task for doing the same on texts? Well... the answer is no.

Anyway, this doesn't mean that it's not possible to achieve the same effect on texts. Actually there are at least two ways: the first is to use AntContrib's <PropertyRegex> task. The second (that works only starting from Ant 1.7.1) is to combine some standard Ant task to do the same: just read on.

Let's start from the <concat> task. The documentation says: "Since Ant 1.7.1, this task can be used as a Resource Collection that will return exactly one resource". Moreover "since Ant 1.6 it supports nested FilterChains". This is important because FilterChains are formed also by TokenFilters and a TokenFilter can be a ReplaceRegex string filter. Confused? Take a look at the following code:
<macrodef name="replaceStringWithRegExp">
<attribute name="string"/>
<attribute name="searchPattern"/>
<attribute name="replacementPattern"/>
<attribute name="property"/>
<tokens id="id">
<string value="@{string}"/>
<replaceregex pattern="@{searchPattern}"
<property name="@{property}" value="${toString:id}"/>
Here I've defined a macro named "replaceStringWithRegExp". It takes four input parameters:
  1. string: text to match against a regular expression
  2. searchPattern: regular expression
  3. replacementPattern: substitution pattern
  4. property: name for a new property that will contain the result of the replacement
The input string is treated as a String resource (see <string>), filtered using a FilterChain (see <filterchain>) that's made of a TokenFilter (see <tokenfilter>). The TokenFilter is a ReplaceRegex string filter (see <replaceregex>).

To extract the result of <concat> task, I've wrapped this task around a <tokens> task and I've assigned an id to the external task. Finally, using the expression ${toString:id} it's possible to extract the toString value from the <tokens> task: this is the result of the search and replacement. Pretty tricky, isn't it?

Now let's try it.
 <replaceStringWithRegExp string="James Bond" 
replacementPattern="My name is \2, \1 \2"
<echo message="${result}"/>
Here we get: "My name is Bond, James Bond". Well, it works.