diff -r 0fd27995241b -r 9ac0a0a7da70 javaextensions/location/tsrc/vipertest/src/ViperTest.java --- a/javaextensions/location/tsrc/vipertest/src/ViperTest.java Tue May 11 16:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,567 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -import javax.microedition.midlet.*; -import javax.microedition.lcdui.*; -import javax.microedition.location.*; -import java.util.*; - -public class ViperTest extends MIDlet implements CommandListener, - LocationListener -{ - private Command iExitCmd = new Command("Quit", Command.EXIT, 1); - - private Command iSelectCmd = new Command("Choose Provider", Command.SCREEN, - 1); - - private Command iGetLocationCmd = new Command("Get location", - Command.SCREEN, 1); - - private Command iGetLastKnownLocationCmd = new Command( - "Last known location", Command.SCREEN, 1); - - private Command iStartTrackingCmd = new Command("Start tracking", - Command.SCREEN, 1); - - private Command iStopTrackingCmd = new Command("Stop tracking", - Command.SCREEN, 1); - - private Command iGetStatusCmd = new Command("Get status", Command.SCREEN, 1); - - private Command iRunTestCmd1 = new Command("Run tests", Command.SCREEN, 1); - - private Command iRunTestCmd2 = new Command("Run LP tests", Command.SCREEN, - 1); - - private Command iPreferencesCmd = new Command("Set preferences", - Command.SCREEN, 1); - - private Display iDisplay; - - private Form iForm; - - private ViperPreferences iPrefs; - - private ProviderSelecter iSelecter = new ProviderSelecter(); - - private LocationProvider iLocationProvider = null; - - private static int iN = 0; - - private long iLastUpdate; - - private long iLastTimestamp; - - public ViperTest() - { - } - - protected void destroyApp(boolean unconditional) - { - System.out.println("ViperTest.destroyApp"); - iLocationProvider = null; - iForm = null; - // iPrefs = null; - iDisplay = null; - } - - protected void pauseApp() - { - System.out.println("pauseApp"); - iDisplay.setCurrent(null); - } - - protected void startApp() - { - iForm = new Form("ViperTest"); - iForm.addCommand(iExitCmd); - iForm.addCommand(iRunTestCmd1); - iForm.addCommand(iRunTestCmd2); - iForm.addCommand(iSelectCmd); - iForm.addCommand(iGetLocationCmd); - iForm.addCommand(iGetLastKnownLocationCmd); - iForm.addCommand(iGetStatusCmd); - iForm.addCommand(iStartTrackingCmd); - iForm.addCommand(iPreferencesCmd); - iForm.append("LAPI version: " - + System.getProperty("microedition.location.version")); - iDisplay = Display.getDisplay(this); - iDisplay.setCurrent(iForm); - iForm.setCommandListener(this); - iPrefs = new ViperPreferences(iDisplay, iForm); - } - - public void commandAction(Command c, Displayable d) - { - try - { - handleCommand(c); - } - catch (Exception e) - { - iForm.append("Exception: " + e); - } - } - - public void locationUpdated(LocationProvider provider, Location location) - { - if (provider != iLocationProvider) - { - System.out.println("provider = " + provider); - System.out.println("iLocationProvider = " + iLocationProvider); - } - - long now = System.currentTimeMillis(); - long timeDiff = now - iLastUpdate; - iLastUpdate = now; - - iForm.deleteAll(); - - iForm.append("Tracking #" + (++iN) + "\n"); - showLocation(location); - - iForm.append("Last update = " + timeDiff + " (ms) ago\n"); - - System.out.println("------ locationUpdated #" + iN + " ------"); - System.out.println("Time of fix: " + time(now)); - System.out.println("Last update = " + timeDiff + " (ms) ago"); - - long ts = location.getTimestamp(); - System.out.println("Timestamp: " + time(ts)); - if (location.isValid()) - { - QualifiedCoordinates qc = location.getQualifiedCoordinates(); - System.out.println("Lat: " + format(qc.getLatitude()) + ", Lon: " - + format(qc.getLongitude())); - System.out.println("Timestamp diff = " + (ts - iLastTimestamp) - + " (ms)"); - } - else - { - System.out.println("Invalid location!"); - } - iLastTimestamp = ts; - } - - public void providerStateChanged(LocationProvider provider, int newState) - { - iForm.deleteAll(); - iForm.append("State changed\n"); - showState(newState); - } - - private void handleCommand(Command c) throws Exception - { - iForm.deleteAll(); - - if (c == iExitCmd) - { - notifyDestroyed(); - } - else if (c == iSelectCmd) - { - System.out.println("Choose a LocationProvider"); - iDisplay.setCurrent(iSelecter); - } - else if (c == iPreferencesCmd) - { - iDisplay.setCurrent(iPrefs); - } - else if (c == iRunTestCmd1) - { - iForm.append("Running unit tests\n"); - Thread t = new Thread() - { - public void run() - { - iForm.append(ViperUnitTest.run1() + "\n"); - } - }; - t.start(); - } - else if (c == iRunTestCmd2) - { - iForm.append("Running LocationProvider tests\n"); - Thread t = new Thread() - { - public void run() - { - iForm.append(ViperUnitTest.run2(iDisplay) + "\n"); - } - }; - t.start(); - } - else if (c == iGetLastKnownLocationCmd) - { - iForm.append("Last known location\n"); - Location loc = LocationProvider.getLastKnownLocation(); - showLocation(loc); - } - else - { - - if (iLocationProvider == null) - { - iLocationProvider = LocationProvider.getInstance(null); - if (iLocationProvider == null) - { - iForm.append("No location provider meets criteria\n"); - return; - } - } - - if (c == iGetStatusCmd) - { - iForm.append("Get status\n"); - showState(iLocationProvider.getState()); - } - else if (c == iGetLocationCmd) - { - iForm.append("Get location\n"); - Location loc = iLocationProvider.getLocation(iPrefs.iTimeout); - showLocation(loc); - } - else if (c == iStartTrackingCmd) - { - iForm.append("Start tracking\n"); - int interval = iPrefs.iInterval; - int timeout = iPrefs.iTimeout; - int maxage = iPrefs.iMaxAge; - - iLastUpdate = System.currentTimeMillis(); - iLocationProvider.setLocationListener(this, interval, timeout, - maxage); - iForm.addCommand(iStopTrackingCmd); - iForm.removeCommand(iStartTrackingCmd); - } - else if (c == iStopTrackingCmd) - { - iForm.append("Stop tracking\n"); - iLocationProvider.setLocationListener(null, 0, 0, 0); - iForm.addCommand(iStartTrackingCmd); - iForm.removeCommand(iStopTrackingCmd); - } - } - } - - private void showLocation(Location loc) - { - if (loc == null) - { - iForm.append("Location is null\n"); - return; - } - else if (!loc.isValid()) - { - iForm.append("Location is not valid\n"); - return; - } - - QualifiedCoordinates qc = loc.getQualifiedCoordinates(); - - iForm.append("Lat = " + format(qc.getLatitude()) + "\n"); - iForm.append("Lon = " + format(qc.getLongitude()) + "\n"); - iForm.append("Altitude = " + qc.getAltitude() + "\n"); - iForm.append("Hacc = " + qc.getHorizontalAccuracy() + ", "); - iForm.append("Vacc = " + qc.getVerticalAccuracy() + "\n"); - - iForm.append("Speed = " + loc.getSpeed() + ", "); - iForm.append("Course = " + loc.getCourse() + "\n"); - iForm.append("Method = " + lm(loc.getLocationMethod()) + "\n"); - - // DateField dateFld = new DateField("Time of fix", - // DateField.DATE_TIME); - // dateFld.setDate(new Date(loc.getTimestamp())); - // iForm.append(dateFld); - iForm.append("Timestamp = " + time(loc.getTimestamp()) + "\n"); - - AddressInfo addrInfo = loc.getAddressInfo(); - if (addrInfo != null) - { - printAddress(addrInfo); - } - - String extra = loc.getExtraInfo("application/X-jsr179-location-nmea"); - if (extra != null) - { - System.out.println("Extra info:\n" + extra); - } - } - - private String format(double aCoord) - { - // if (iPrefs.iCoordFormat > 0) { - // return Coordinates.convert(aCoord, iPrefs.iCoordFormat); - // } else { - return Double.toString(aCoord); - // } - } - - private String lm(int aMethod) - { - String s = ""; - if ((aMethod & Location.MTE_SATELLITE) > 0) - { - s = "Sat,"; - } - if ((aMethod & Location.MTY_NETWORKBASED) > 0) - { - s += "Netw"; - } - if ((aMethod & Location.MTY_TERMINALBASED) > 0) - { - s += "Term"; - } - if ((aMethod & Location.MTA_ASSISTED) > 0) - { - s += ",assist"; - } - if ((aMethod & Location.MTA_UNASSISTED) > 0) - { - s += ",unassist"; - } - if ((aMethod & ~(Location.MTE_SATELLITE | Location.MTY_NETWORKBASED - | Location.MTY_TERMINALBASED | Location.MTA_ASSISTED | Location.MTA_UNASSISTED)) > 0) - { - s = "Illegal"; - } - return s; - } - - private String time(long aTimestamp) - { - Calendar cal = Calendar.getInstance(); - cal.setTime(new Date(aTimestamp)); - int h = cal.get(Calendar.HOUR_OF_DAY); - int m = cal.get(Calendar.MINUTE); - int s = cal.get(Calendar.SECOND); - int ms = cal.get(Calendar.MILLISECOND); - return (h < 10 ? "0" : "") + h + ":" + (m < 10 ? "0" : "") + m + ":" - + (s < 10 ? "0" : "") + s + "." + ms; - } - - private void showState(int aState) - { - switch (aState) - { - case LocationProvider.AVAILABLE: - iForm.append("Available"); - break; - case LocationProvider.TEMPORARILY_UNAVAILABLE: - iForm.append("Temp. unavailable"); - break; - case LocationProvider.OUT_OF_SERVICE: - iForm.append("Out of service"); - break; - default: - iForm.append("Unknown state"); - break; - } - } - - private void printAddress(AddressInfo a) - { - System.out.println("--- AddressInfo ---"); - System.out.println("Floor: " + a.getField(AddressInfo.BUILDING_FLOOR)); - System.out.println("Room: " + a.getField(AddressInfo.BUILDING_ROOM)); - System.out.println("B name: " + a.getField(AddressInfo.BUILDING_NAME)); - System.out.println("B zone: " + a.getField(AddressInfo.BUILDING_ZONE)); - System.out.println("City: " + a.getField(AddressInfo.CITY)); - System.out.println("Country: " + a.getField(AddressInfo.COUNTRY)); - System.out.println("C code: " + a.getField(AddressInfo.COUNTRY_CODE)); - System.out.println("County: " + a.getField(AddressInfo.COUNTY)); - System.out.println("Xing1: " + a.getField(AddressInfo.CROSSING1)); - System.out.println("Xing2: " + a.getField(AddressInfo.CROSSING2)); - System.out.println("District: " + a.getField(AddressInfo.DISTRICT)); - System.out.println("Extension: " + a.getField(AddressInfo.EXTENSION)); - System.out.println("Phone: " + a.getField(AddressInfo.PHONE_NUMBER)); - System.out.println("P Code: " + a.getField(AddressInfo.POSTAL_CODE)); - System.out.println("Street: " + a.getField(AddressInfo.STREET)); - System.out.println("State: " + a.getField(AddressInfo.STATE)); - System.out.println("URL: " + a.getField(AddressInfo.URL)); - } - - private class ProviderSelecter extends Form implements CommandListener - { - private Command iOkCmd = new Command("OK", Command.OK, 1); - - private Command iDefaultCmd = new Command("Null Criteria", - Command.SCREEN, 1); - - private Command iNullCmd = new Command("Dereference", Command.SCREEN, 1); - - private Command iGcCmd = new Command("Garbage collect", Command.SCREEN, - 1); - - private TextField iHaccField = new TextField("Horizontal Accuracy", - "0", 5, TextField.NUMERIC); - - private TextField iVaccField = new TextField("Vertical Accuracy", "0", - 5, TextField.NUMERIC); - - private TextField iRespTimeField = new TextField("Response time", "0", - 5, TextField.NUMERIC); - - private ChoiceGroup iPowerChoice = new ChoiceGroup("Power consumption", - Choice.POPUP, new String[] { "No requirement", "Low", "Medium", - "High" - }, null); - - private ChoiceGroup iChoices = new ChoiceGroup("Choices", - Choice.MULTIPLE, new String[] { "AddressInfo", "Cost allowed", - "Altitude", "Speed + Course" - }, null); - - ProviderSelecter() - { - super("Criteria"); - addCommand(iOkCmd); - addCommand(iDefaultCmd); - addCommand(iNullCmd); - addCommand(iGcCmd); - setCommandListener(this); - append(iHaccField); - append(iVaccField); - append(iRespTimeField); - append(iPowerChoice); - append(iChoices); - } - - public void commandAction(Command c, Displayable d) - { - if (c == iOkCmd || c == iDefaultCmd) - { - iForm.deleteAll(); - - try - { - LocationProvider l; - if (c == iOkCmd) - { - l = LocationProvider.getInstance(getCriteria()); - } - else - { - l = LocationProvider.getInstance(null); - } - if (l == null) - { - iForm.append("Criteria too restrictive!\n"); - } - else if (l != iLocationProvider) - { - iForm.append("New provider selected\n"); - iLocationProvider = l; - } - } - catch (Exception e) - { - iForm.append("Exception: " + e); - } - } - else if (c == iNullCmd) - { - System.out.println("Setting LocationProvider to null"); - iLocationProvider = null; - } - else if (c == iGcCmd) - { - System.out.println("Calling System.gc()"); - System.gc(); - } - iDisplay.setCurrent(iForm); - } - - private Criteria getCriteria() - { - Criteria cr = new Criteria(); - int hacc = Integer.parseInt(iHaccField.getString()); - cr.setHorizontalAccuracy(hacc); - - int vacc = Integer.parseInt(iVaccField.getString()); - cr.setVerticalAccuracy(vacc); - - int resp = Integer.parseInt(iRespTimeField.getString()); - cr.setPreferredResponseTime(resp); - - int power = iPowerChoice.getSelectedIndex(); - cr.setPreferredPowerConsumption(power); - - boolean[] flags = new boolean[4]; - int numselected = iChoices.getSelectedFlags(flags); - cr.setAddressInfoRequired(flags[0]); - cr.setCostAllowed(flags[1]); - cr.setAltitudeRequired(flags[2]); - cr.setSpeedAndCourseRequired(flags[3]); - - print(cr); - return cr; - } - - void print(Criteria cr) - { - System.out.println("\n-- Criterias --"); - int hacc = cr.getHorizontalAccuracy(); - if (hacc != Criteria.NO_REQUIREMENT) - { - System.out.println("Required horizontal accuracy = " + hacc); - } - int vacc = cr.getVerticalAccuracy(); - if (vacc != Criteria.NO_REQUIREMENT) - { - System.out.println("Required vertical accuracy = " + vacc); - } - int resp = cr.getPreferredResponseTime(); - if (resp != Criteria.NO_REQUIREMENT) - { - System.out.println("Preferred response time = " + resp); - } - - switch (cr.getPreferredPowerConsumption()) - { - case Criteria.POWER_USAGE_LOW: - System.out.println("Low power usage wanted"); - break; - case Criteria.POWER_USAGE_MEDIUM: - System.out.println("Medium power usage acceptable"); - break; - case Criteria.POWER_USAGE_HIGH: - System.out.println("High power usage acceptable"); - break; - } - - if (cr.isAddressInfoRequired()) - { - System.out.println("AddressInfo required"); - } - if (!cr.isAllowedToCost()) - { - System.out.println("Cost is not allowed"); - } - if (cr.isAltitudeRequired()) - { - System.out.println("Altitude required"); - } - if (cr.isSpeedAndCourseRequired()) - { - System.out.println("Speed and course info required"); - } - System.out.println("---------------"); - } - - } - -}