Wednesday, May 18, 2011

Y! Alert: Telecom-Funda

Yahoo! Alerts
My Alerts

The latest from Telecom-Funda


Test and Measurements (T&M) at the LTE World Summit 2011 Top
 
TMF: Carriers at Ease With the Cloud Top
 
Android Programming - Part 5 - The Rest Top
This is the 5th and final part in my series on programming on Android. By now my app is pretty much complete and does what I set out to do: It get's notified when the signal strength of the cellular network changes and displays the signal strength, cell-id, location area code, network operator id and network operator name. In this final part I'll describe how one other important feature works, saving the gathered data in a file, and some usability features. Obviously seeing the current LAC and Cell-ID on the screen is nice, but having a record of cell and signal changes would be nice as well for further analysis later on. In other words, the data needs to be written to a file that can then be retrieved and further processed on the PC. The best place to store the file is on the flash disk which can then be either accessed via a USB cable or by removing it and connecting it via an adapter to a PC. Here's to code that does that:   try { File root = Environment.getExternalStorageDirectory(); if (root.canWrite()){ File logfile = new File(root, filename); FileWriter logwriter = new FileWriter(logfile, true); /* true=append */ BufferedWriter out = new BufferedWriter(logwriter); /* now save the data buffer into the file */ out.write(LocalFileWriteBufferStr); out.close(); } } catch (IOException e) { /* don't do anything for the moment */ } Writing a file could go wrong in which case Java would throw and exception and terminate the program if unhandled. Hence the need for the "try" construct. In the first line I search for the directory name of the flash disk with the getExternalStorageDirectory() method which is part of the Android API. If the disk is present and writable I then open a file in append mode, i.e. if it already exists all data is appended. Then, the standard Java out.write() and out.close() methods are used to write the data to the file and then close it again. As you can see I have opted to open the file, write something and then to close it again immediately. I've done this as it's entirely possible that the flash disk is removed while the app is running, either physically or when a USB cable is connected to the PC. To reduce the wear on the flash memory of frequent file operations, I use a cache string in memory and only write to the file after a couple of kilobytes of data has accumulated. The downside of this is that one has to be aware when the app is closed and restarted, e.g. when the user turns the device and the screen is switched from portrait to landscape or when the app goes to the background. In those cases the data has to be written to the file, too. And finally, a couple of words on the menu of the app. There are three entries in the menu: "About", "Reset Counters" and "Toggle Debug Mode".  The code for them looks as follows: @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, RESET_COUNTER, 0, "Rest Counters"); menu.add(0, ABOUT, 0, "About"); menu.add(0, TOGGLE_DEBUG, 0, "Toggle Debug Mode"); return true; } @Override public boolean onOptionsItemSelected (MenuItem item) { switch (item.getItemId()) { case RESET_COUNTER: NumberOfCellChanges = 0; [...] return true; case ABOUT: AlertDialog.Builder builder = new AlertDialog.Builder(this); [...] AlertDialog alert = builder.create(); alert.show(); return true; case TOGGLE_DEBUG: /* Toggle the debug behavior of the program when the user selects this menu item */ if (outputDebugInfo == false) { outputDebugInfo = true; } else { outputDebugInfo = false; } default: return super.onOptionsItemSelected(item); } } There we go, the app is almost complete now. A bit more polishing and then I'll post it on the blog together with the source and publish it in the Android market for easy access.
 
Rumor Redux: iPhone 4S Gets Faster 3G, Not LTE Top
 

CREATE MORE ALERTS:

Auctions - Find out when new auctions are posted

Horoscopes - Receive your daily horoscope

Music - Get the newest Album Releases, Playlists and more

News - Only the news you want, delivered!

Stocks - Stay connected to the market with price quotes and more

Weather - Get today's weather conditions




You received this email because you subscribed to Yahoo! Alerts. Use this link to unsubscribe from this alert. To change your communications preferences for other Yahoo! business lines, please visit your Marketing Preferences. To learn more about Yahoo!'s use of personal information, including the use of web beacons in HTML-based email, please read our Privacy Policy. Yahoo! is located at 701 First Avenue, Sunnyvale, CA 94089.

No comments:

Post a Comment