SensorTest must unregister sensor event listener after each test case done.

SensorTest#testRegisterTwiceWithSameSensor and #testBatchAndFlushWithHandler
must unregister sensor event listener after test done.

Change-Id: I0e7c561f6e0dc7cf2763cefe6d737906d328795a
Signed-off-by: Han, He <he.han@intel.com>
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
index d606b70..6703c47 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
@@ -58,8 +58,10 @@
 
     private PowerManager.WakeLock mWakeLock;
     private SensorManager mSensorManager;
+    private TestSensorManager mTestSensorManager;
     private NullTriggerEventListener mNullTriggerEventListener;
     private NullSensorEventListener mNullSensorEventListener;
+    private Sensor mTriggerSensor;
     private List<Sensor> mSensorList;
 
     @Override
@@ -85,6 +87,20 @@
 
     @Override
     protected void tearDown(){
+        if (mSensorManager != null) {
+            // SensorManager will check listener and status, so just unregister listener
+            mSensorManager.unregisterListener(mNullSensorEventListener);
+            if (mTriggerSensor != null) {
+                mSensorManager.cancelTriggerSensor(mNullTriggerEventListener, mTriggerSensor);
+                mTriggerSensor = null;
+            }
+        }
+
+        if (mTestSensorManager != null) {
+            mTestSensorManager.unregisterListener();
+            mTestSensorManager = null;
+        }
+
         if (mWakeLock != null && mWakeLock.isHeld()) {
             mWakeLock.release();
         }
@@ -234,20 +250,20 @@
     }
 
     public void testRequestTriggerWithNonTriggerSensor() {
-        Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
-        if (sensor == null) {
+        mTriggerSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+        if (mTriggerSensor == null) {
             throw new SensorNotSupportedException(Sensor.TYPE_ACCELEROMETER);
         }
-        boolean  result = mSensorManager.requestTriggerSensor(mNullTriggerEventListener, sensor);
+        boolean  result = mSensorManager.requestTriggerSensor(mNullTriggerEventListener, mTriggerSensor);
         assertFalse(result);
     }
 
     public void testCancelTriggerWithNonTriggerSensor() {
-        Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
-        if (sensor == null) {
+        mTriggerSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+        if (mTriggerSensor == null) {
             throw new SensorNotSupportedException(Sensor.TYPE_ACCELEROMETER);
         }
-        boolean result = mSensorManager.cancelTriggerSensor(mNullTriggerEventListener, sensor);
+        boolean result = mSensorManager.cancelTriggerSensor(mNullTriggerEventListener, mTriggerSensor);
         assertFalse(result);
     }
 
@@ -323,16 +339,16 @@
                 sensor,
                 SensorManager.SENSOR_DELAY_FASTEST,
                 (int) TimeUnit.SECONDS.toMicros(5));
-        TestSensorManager sensorManager = new TestSensorManager(environment);
+        mTestSensorManager = new TestSensorManager(environment);
 
         HandlerThread handlerThread = new HandlerThread("sensorThread");
         handlerThread.start();
         Handler handler = new Handler(handlerThread.getLooper());
         TestSensorEventListener listener = new TestSensorEventListener(environment, handler);
 
-        CountDownLatch eventLatch = sensorManager.registerListener(listener, 1);
+        CountDownLatch eventLatch = mTestSensorManager.registerListener(listener, 1);
         listener.waitForEvents(eventLatch, 1);
-        CountDownLatch flushLatch = sensorManager.requestFlush();
+        CountDownLatch flushLatch = mTestSensorManager.requestFlush();
         listener.waitForFlushComplete(flushLatch);
         listener.assertEventsReceivedInHandler();
     }