@Override
  public void handleMessage(Message aMsg) {
    if (mRecorder == null) return;

    switch (aMsg.what) {
      case MSG_RECORD_FILE_OPEN:
        BleBeaconDetectorMainActivity activity = mActivityRef.get();
        if (activity != null) {
          if (mRecorder.isRecordFileOpened()) {
            activity.notifyFileOpenResult(_SUCCESS);
          } else {
            activity.notifyFileOpenResult(mRecorder.openRecordFile() ? _SUCCESS : _FAILURE);
          }
        }
        break;

      case MSG_RECORD_FILE_CLOSE:
        if (mRecorder.isRecordFileOpened()) mRecorder.closeRecordFile();
        break;

      case MSG_WRITE_ONE_RECORD_AND_LINE:
        BleAdvertiseDataStructure data = (BleAdvertiseDataStructure) aMsg.obj;
        mRecorder.writeOneRecord(data);
        break;

      case MSG_WRITE_ONE_STRING_AND_LINE:
        String writeStr = (String) aMsg.obj;
        mRecorder.writeDataStrAndLine(writeStr);
        break;
    }
  }
 public boolean isActive() {
   if (mRecorder == null) return false;
   return mRecorder.isRecordFileOpened();
 }