无法使用MQTT Android服务进行连接

时间:2016-06-02 18:52:59

标签: android mqtt

我目前正在制作一个小型的恐慌按钮"应用程序应该在医疗机构中运行。由于该项目的一个假设是独立于互联网,我决定选择在本地WLAN中设置服务器的MQTT。

由于我还是一名婴儿开发人员,我已经从his blog.的Dale Lane的精彩(但已经过时的)指南开始了,就像他,我和#一样39; m使用IBM's library.

除了重写通知构建器以符合现代Android标准之外,我还没有为他的服务做过任何挑战。

由于用户不应该对订阅的代理和主题的选择有任何控制权,因此我在登录过程中基本上是硬编码。

public class LoginActivity extends AppCompatActivity {

/**SharedPreference is the most compact way to save variables on device's memory */
private SharedPreferences sharedPref;
private SharedPreferences.Editor sharedEdit;
private static final int PREFERENCE_MODE_PRIVATE = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    sharedPref = getSharedPreferences("database",PREFERENCE_MODE_PRIVATE);
    sharedEdit = sharedPref.edit();
    sharedEdit.putString("broker", "test.mosquitto.org");
    sharedEdit.putString("topic", "/hello/hello");
    sharedEdit.commit();

    Intent svc = new Intent(this, MQTTService.class);
    startService(svc);
}

...
...
...

然而,这不起作用 - 不是在AVD模拟器中,也不在我可用的两个智能手机中的任何一个上。每次我获得的通知都来自

    notifyUser("Unable to subscribe", "MQTT", "Unable to subscribe"); 

使用桌面应用程序测试相同的代理/主题我看到它正常工作,这意味着问题在于我对Android的MQTT实现。

此时我不确定应该采取哪些步骤来创建修复程序。也许我错过了Dale Lane的工作?也许他使用的图书馆现在已经过时了?谁能伸出援助之手?凭借我的基本技能,我不敢自己搞砸。

1 个答案:

答案 0 :(得分:0)

Dale的工作非常过时,使用Paho Android service代替,因为它使用最新的Paho Java MQTT客户端,并且与旧的IBM代码不同,它是主动维护的。