我目前正在制作一个小型的恐慌按钮"应用程序应该在医疗机构中运行。由于该项目的一个假设是独立于互联网,我决定选择在本地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的工作?也许他使用的图书馆现在已经过时了?谁能伸出援助之手?凭借我的基本技能,我不敢自己搞砸。
答案 0 :(得分:0)
Dale的工作非常过时,使用Paho Android service代替,因为它使用最新的Paho Java MQTT客户端,并且与旧的IBM代码不同,它是主动维护的。