@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    handler = new Handler(Looper.getMainLooper());

    devices = new ArrayList<>();
    // devices.add(new Device(1, "Z-Wave Light Bulb", false, true));

    ListView list = (ListView) findViewById(R.id.list);
    adapter = new Adapter(this, devices);
    list.setAdapter(adapter);

    // MQTT initialization
    Log.d(TAG, "Start to connect to MQTT server.");
    // connect to server
    try {
      client = new MqttAndroidClient(this, URI, CLIENT_ID);
      client.setCallback(this);
      // connect to server
      client.connect(null, this);
    } catch (MqttException e) {
      Log.d(TAG, "Error when connect to server " + URI + ", error code:  " + e.getReasonCode());
    }

    // Alljoyn initialzation
    alljoyn_wrapper = new AlljoynWrapper();

    // InviteShare Initialzation
    HttpWrapper.disableSSLCertificateChecking();
  }
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      case R.id.option_menu_shareTopic_searching:
        alljoyn_wrapper.mBusHandler.sendEmptyMessage(alljoyn_wrapper.mBusHandler.CONNECT);
        mHandler.sendEmptyMessage(alljoyn_wrapper.MESSAGE_ALLJOYN_START_PROGRESS_DIALOG);
        return true;

      case R.id.option_menu_shareTopic_get_topic:
        Message msg =
            alljoyn_wrapper.mBusHandler.obtainMessage(
                AlljoynWrapper.BusHandler.GET_TOPIC, alljoyn_wrapper.keyValue);
        alljoyn_wrapper.mBusHandler.sendMessage(msg);

        return true;

      case R.id.option_menu_inviteShare_genTopic:
        {
          HttpWrapper http_request = new HttpWrapper();
          http_request.topic = topic;
          http_request.setOutputListener(this);
          SettingActivity.cur_command = SettingActivity.COMMAND_INVITESHARE_GEN_PINCODE;
          String url = new String("https://");
          url += inviteSRV + "/generateInvite";
          http_request.execute(url);
        }
        return true;

      case R.id.option_menu_inviteShare_getTopic:
        {
          HttpWrapper http_request = new HttpWrapper();
          http_request.setOutputListener(this);
          SettingActivity.cur_command = SettingActivity.COMMAND_INVITESHARE_GET_TOPIC;

          String url = new String("https://");
          url += inviteSRV + "/getTopic/" + pincode;
          http_request.execute(url);
        }
        return true;

      case R.id.option_menu_setting:
        Intent intent1 = new Intent(this, SettingActivity.class);
        intent1.putExtra(share_invite_srv, inviteSRV);
        intent1.putExtra(share_mqtt_srv, mqttSRV);
        intent1.putExtra(share_topic, topic);
        intent1.putExtra(share_pin, pincode);
        intent1.putExtra(share_key, alljoyn_wrapper.keyValue);
        startActivityForResult(intent1, INTENT_SETTING_RESULT_CODE);
        return true;
      case R.id.option_menu_remoteAccess_get_list: // Get list of menu item
        MqttMessage message = null;
        try {
          message = MQTTMessageWrapper.CreateGetListMsg();
        } catch (JSONException e) {
          e.printStackTrace();
        }
        try {
          MainActivity.client.publish(topic, message);
        } catch (MqttException e) {
          Log.d(MainActivity.TAG, "Publish error with message: " + e.getMessage());
        }

        return true;

      case R.id.option_menu_help:
        return true;

      case R.id.option_menu_wifi_setup_scan:
        Intent intent2 = new Intent(this, ScanWIFIActivity.class);

        startActivity(intent2);

        return true;
      default:
        return super.onOptionsItemSelected(item);
    }
  }