You know, indicating which line the error occurred on would make it likely that someone would actually look at your problem, rather than just ignoring you.
On Mar 8, 12:29 am, Sarath Krishna <sarathkrishn...@gmail.com> wrote: > I am getting class cat exception while running the following code. I > checked the code but everything was fine . Can any one please help me > out > > public class GPSsens extends Service > { > > /** Name of the service used for logging */ > private static final String TAG = "SystemSensService"; > > /** Version of the JSON records */ > private static final String VER = "1.4"; > > /** Types of messages used by this service */ > private static final int USAGESTAT_MSG = 1; > private static final int UPLOAD_START_MSG = 2; > private static final int UPLOAD_END_MSG = 3; > private static final int BATHIST_MSG = 4; > private static final int PROC_MSG = 5; > > /** String names of JSON records */ > private static final String USAGESTAT_TYPE = "usage"; > private static final String NETTRANS_TYPE = "transmission"; > private static final String NETRECV_TYPE = "receive"; > private static final String CPUSTAT_TYPE = "cpu"; > private static final String GPSSTAT_TYPE = "gps"; > private static final String SENSORSTAT_TYPE = "sensor"; > private static final String BATTERY_TYPE = "battery"; > private static final String SCREEN_TYPE = "screen"; > private static final String NET_TYPE = "network"; > private static final String CALL_TYPE = "call"; > private static final String SYSTEMSENS_TYPE = "systemsens"; > private static final String NETDEV_TYPE = "netdev"; > > /** Intervals used for timers in seconds */ > private long USAGESTAT_INTERVAL; > private long BATHIST_INTERVAL; > private long PROC_INTERVAL; > > /** Default values for timers in seconds */ > private static final long DEFAULT_USAGESTAT_INTERVAL = 120000; > private static final long DEFAULT_BATHIST_INTERVAL = 120000; > private static final long DEFAULT_PROC_INTERVAL = 120000; > > /** Power manager object used to acquire a partial wakeLock */ > private PowerManager m_PM; > > /** WakeLock object */ > private PowerManager.WakeLock m_WL; > > /** State variable set when a worker thread starts uploading */ > private boolean mIsUploading; > > /** Usage statistics object */ > private Usage mUsageStat; > > /** Battery History object */ > private History mHistoryStat; > > /** Proc object */ > private Proc mProc; > > /** Uploader Object */ > //private SystemSensUploader mUploader; > > /** Dumper Object -- used for debugging */ > private SystemSensDumper mDumper; > > /** Database adaptor object */ > private SystemSensDbAdaptor mDbAdaptor; > > /** Holds the IMEI of the device */ > private String IMEI; > > /** telephonyManager object */ > private TelephonyManager telManager; > > //private SystemSensLogger logger; > > /** Battery information record for reporting to the activity */ > private JSONObject batteryJson; > > /** > * Class for clients to access. Because we know this service > always > * runs in the same process as its clients, we don't need to deal > with > * IPC. > */ > public class LocalBinder extends Binder { > GPSsens getService() { > return GPSsens.this; > } > } > > @Override > public void onStart(Intent intent, int startId) > { > super.onStart(intent, startId); > Log.i(TAG, "onStart"); > } > > @Override > public void onCreate() { > super.onCreate(); > Log.i(TAG, "onCreate"); > > // Set the default intervals for USAGE and BATHIST counters > USAGESTAT_INTERVAL = DEFAULT_USAGESTAT_INTERVAL; > BATHIST_INTERVAL = DEFAULT_BATHIST_INTERVAL; > PROC_INTERVAL = DEFAULT_PROC_INTERVAL; > > /* This object is used to log call durations */ > /* telManager = > > (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); > > this.IMEI = telManager.getDeviceId(); */ > > mIsUploading = false; > > mDbAdaptor = new SystemSensDbAdaptor(this); > > //mUploader = new SystemSensUploader(mDbAdaptor); > > mDumper = new SystemSensDumper(mDbAdaptor, this); > > mUsageStat = new Usage(); > mHistoryStat = new History(this); > mProc = new Proc(); > > try > { > mDbAdaptor.open(); > } > catch (SQLException e) > { > Log.e(TAG, "Exception", e); > } > > // Register for battery updates > // registerReceiver(mBatteryInfoReceiver, new IntentFilter( > // Intent.ACTION_BATTERY_CHANGED)); > > // Register for screen updates > > // Start getting process information > /*Message msg1 = mHandler.obtainMessage(USAGESTAT_MSG); > long nextTime = SystemClock.uptimeMillis() > + USAGESTAT_INTERVAL; > mHandler.sendMessageAtTime(msg1, nextTime);*/ > > // Start getting process information > Message msg2 = mHandler.obtainMessage(BATHIST_MSG); > long nextTime = SystemClock.uptimeMillis() > + BATHIST_INTERVAL; > mHandler.sendMessageAtTime(msg2, nextTime); > > // Start getting network device information > /* Message msg3 = mHandler.obtainMessage(PROC_MSG); > nextTime = SystemClock.uptimeMillis() > + PROC_INTERVAL; > mHandler.sendMessageAtTime(msg3, nextTime);*/ > > // Log a message indicating starting SystemSens > JSONObject sysJson = new JSONObject(); > try > { > sysJson.put("state", "started"); > } > catch (JSONException e) > { > Log.e(TAG, "Exception", e); > } > > // Acquire a partial wake lock > m_PM = (PowerManager) getSystemService(Context.POWER_SERVICE); > m_WL = m_PM.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, > "SystemSense"); > > m_WL.acquire(); > > mDbAdaptor.createEntry( constructDataRecord( > sysJson, SYSTEMSENS_TYPE)); > > Cursor c =mDbAdaptor.fetchAllEntries();{ > > if (c.moveToFirst()) > { > do { > Toast.makeText(this, > "sys sens type " + c.getString(0) + "\n"+ > "gps stat > " + c.getString(0) + "\n" > ,Toast.LENGTH_LONG).show(); > > } while (c.moveToNext()); > } > > }; > > } > > @Override > public void onDestroy() { > > // Clear the message handler's pending messages > // mHandler.removeMessages(USAGESTAT_MSG); > mHandler.removeMessages(BATHIST_MSG); > > // unregisterReceiver(mBatteryInfoReceiver); > > mDbAdaptor.close(); > > // Log a message indicating killing SystemSens > JSONObject sysJson = new JSONObject(); > try > { > sysJson.put("state", "killed"); > } > catch (JSONException e) > { > Log.e(TAG, "Exception", e); > } > > mDbAdaptor.createEntry( constructDataRecord( > sysJson, SYSTEMSENS_TYPE)); > > m_WL.release(); > > Log.i(TAG, "Killed"); > Cursor c =mDbAdaptor.fetchAllEntries();{ > > if (c.moveToFirst()) > { > do { > Toast.makeText(this, > "sys sens type " + c.getString(0) + "\n"+ > "gps stat > " + c.getString(0) + "\n" > ,Toast.LENGTH_LONG).show(); > > } while (c.moveToNext()); > } > > }; > > } > > private String constructDataRecord(JSONObject data, String type) { > // TODO Auto-generated method stub > JSONObject dataRecord = new JSONObject(); > > // First thing, get the current time > final Calendar c = Calendar.getInstance(); > String timeStr = "" + > c.get(Calendar.YEAR) + "-" + > c.get(Calendar.MONTH) + "-" + > c.get(Calendar.DAY_OF_MONTH) + " " + > c.get(Calendar.HOUR_OF_DAY) + ":" + > c.get(Calendar.MINUTE) + ":" + > c.get(Calendar.SECOND); > > try > { > dataRecord.put("date", timeStr); > dataRecord.put("time_stamp", c.getTimeInMillis()); > dataRecord.put("user", IMEI); > dataRecord.put("type", type); > dataRecord.put("ver", VER); > dataRecord.put("data", data); > } > catch (JSONException e) > { > Log.e(TAG, "Exception", e); > } > > return dataRecord.toString(); > > } > > @Override > public IBinder onBind(Intent intent) { > return mBinder; > } > > /** This is the object that receives interactions from clients. */ > private final IBinder mBinder = new LocalBinder(); > > /** > * Broadcast receiver for Battery information updates. > * An object of this class has been passed to the system through > * registerReceiver. > * > */ > > private final Handler mHandler = new Handler() > { > @Override > public void handleMessage(Message msg) > { > /* Get usage stat */ > if (msg.what == USAGESTAT_MSG) > { > > // DEBUG > //Log.i(TAG, "Received MSG" + msg.toString()); > > // Get system information here and insert to database > HashMap<String, Long> usageMap = mUsageStat.getStat(); > mDbAdaptor.createEntry( constructDataRecord( > new JSONObject(usageMap), > USAGESTAT_TYPE)); > > // Schedule a new timer > msg = obtainMessage(USAGESTAT_MSG); > long nextTime = SystemClock.uptimeMillis() > + USAGESTAT_INTERVAL; > sendMessageAtTime(msg, nextTime); > } > if (msg.what == BATHIST_MSG) > { > // Get send and receive information and insert to > database > mHistoryStat.update(); > JSONObject gpsMap = mHistoryStat.getGpsInfo(); > // JSONObject sensorMap = mHistoryStat.getSensorInfo(); > > mDbAdaptor.createEntry( constructDataRecord( > gpsMap, > GPSSTAT_TYPE)); > > // Schedule a new timer > msg = obtainMessage(BATHIST_MSG); > long nextTime = SystemClock.uptimeMillis() > + BATHIST_INTERVAL; > sendMessageAtTime(msg, nextTime); > > } > > } > }; > > /** Format a number of tenths-units as a decimal string without > using a > * conversion to float. E.g. 347 -> "34.7" > * > * @param intVal > * @return String representing the decimal > */ > private final String tenthsToFixedString(int intVal) { > int tens = intVal / 10; > return new String("" + tens + "." + (intVal - 10*tens)); > } > > public JSONObject getBatteryInfo() > { > return batteryJson; > } > > public String getHistInfo() > { > mHistoryStat.update(); > /* > String result = "CPU: " + > mHistoryStat.getCpuInfo().toString(); > > result += "\nRecv: " + mHistoryStat.getRecvInfo().toString() > + "\nSent: " + mHistoryStat.getSentInfo().toString(); > */ > > mHistoryStat.update(); > String result = "GPS: " + > mHistoryStat.getGpsInfo().toString(); > > return result; > } > > /** > * Spawns a worker thread to "try" to write the contents of the > * database in a flat file. > * Before starting the thread, checks if a worker thread is > * already trying to dump. If so, returns. Otherwise a new > * thread is spawned and tasked with the dump job. > * > * This should only be used for debugging. It should NOT be used > * along with the upload method. Either dump() or upload() should > * be called. > * > */ > private void dump() > { > if (!mIsUploading) > { > Thread uploaderThread = new Thread() > { > public void run() > { > // Send an immediate message to the main thread > // to inform that a worker thread is running. > > mHandler.sendMessageAtTime( mHandler.obtainMessage( > UPLOAD_START_MSG), > SystemClock.uptimeMillis()); > > Log.i(TAG, "Worker thread started dump task"); > mDumper.tryDump(); > > // Send an immediate message to the main thread to > // inform that the worker thread is finished. > > mHandler.sendMessageAtTime( mHandler.obtainMessage( > UPLOAD_END_MSG), > SystemClock.uptimeMillis()); > } > }; > > uploaderThread.start(); > > } > else > { > Log.i(TAG, "Dump in progress ..."); > } > } > > } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en