From 3731037e68b2f46a30232cef8bf073d3c90e6691 Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Tue, 15 Nov 2011 17:28:49 -0800 Subject: [PATCH] fix null pointer errors in AntSensorManager --- .../sensors/ant/AntSensorManager.java | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/sensors/ant/AntSensorManager.java b/MyTracks/src/com/google/android/apps/mytracks/services/sensors/ant/AntSensorManager.java index 7b5d896e3..0f565a3a1 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/sensors/ant/AntSensorManager.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/sensors/ant/AntSensorManager.java @@ -92,7 +92,7 @@ public abstract class AntSensorManager extends SensorManager { String antAction = intent.getAction(); Log.i(TAG, "enter data onReceive" + antAction); - if (antAction.equals(AntInterfaceIntent.ANT_RX_MESSAGE_ACTION)) { + if (antAction != null && antAction.equals(AntInterfaceIntent.ANT_RX_MESSAGE_ACTION)) { byte[] antMessage = intent.getByteArrayExtra(AntInterfaceIntent.ANT_MESSAGE); if (DEBUGGING) { Log.d(TAG, "Received RX message " + messageToString(antMessage)); @@ -185,22 +185,23 @@ public abstract class AntSensorManager extends SensorManager { * Cleans up the ANT+ receiver interface, by releasing the interface * and destroying it. */ - private void cleanAntInterface() - { + private void cleanAntInterface() { Log.i(TAG, "Destroying AntSensorManager"); - - if (antReceiver != null) { - try { - antReceiver.releaseInterface(); - } catch (AntServiceNotConnectedException e) { - Log.i(TAG, "ANT service not connected", e); - } catch (AntInterfaceException e) { - Log.e(TAG, "failed to release ANT interface", e); + + try { + if (antReceiver == null) { + Log.e(TAG, "no ANT receiver"); + return; } - + antReceiver.releaseInterface(); antReceiver.destroy(); - antReceiver = null; + } catch (AntServiceNotConnectedException e) { + Log.i(TAG, "ANT service not connected", e); + } catch (AntInterfaceException e) { + Log.e(TAG, "failed to release ANT interface", e); + } catch (RuntimeException e) { + Log.e(TAG, "run-time exception when cleaning the ANT interface", e); } } @@ -213,6 +214,11 @@ public abstract class AntSensorManager extends SensorManager { Log.d(TAG, "ANT service connected"); try { + if (antReceiver == null) { + Log.e(TAG, "no ANT receiver"); + return; + } + if (!antReceiver.claimInterface()) { Log.e(TAG, "failed to claim ANT interface"); return; @@ -300,6 +306,11 @@ public abstract class AntSensorManager extends SensorManager { byte radioFreq, byte proxSearch) { try { + if (antReceiver == null) { + Log.e(TAG, "no ANT receiver"); + return false; + } + // Assign as slave channel on selected network (0 = public, 1 = ANT+, 2 = // ANTFS) antReceiver.ANTAssignChannel(channelNumber, AntDefine.PARAMETER_RX_NOT_TX, networkNumber);