我正在尝试创建一个与蓝牙低能耗模块通信的Android应用。我能够连接到模块,读取数据等。但问题是我不知道如何从扩展Service的类(与BLE的整个连接正在进行的那个)更新textview。我知道有像BILLION或更多这样的帖子,但相信我,我试过。
以下是MainActivity:http://pastebin.com/6yaP0dYM
这是一个扩展Service:http://pastebin.com/cYuAUina
的类如果有人可以提供一些解决我的问题的技巧,那就太棒了!
答案 0 :(得分:1)
创建广播接收器并在服务中广播。 如果您的Activity是ope,则注册接收器并在onReceive()中更新UI。
接收者应该在活动中......
以下是工作代码
答案 1 :(得分:0)
您可以通过广播接收器获取值......如下所示,首先创建您自己的IntentFilter,
Intent intentFilter=new IntentFilter();
intentFilter.addAction("YOUR_INTENT_FILTER");
然后创建内部类BroadcastReceiver as,
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
/** Receives the broadcast that has been fired */
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction()=="YOUR_INTENT_FILTER"){
//HERE YOU WILL GET VALUES FROM BROADCAST THROUGH INTENT EDIT YOUR TEXTVIEW///////////
String receivedValue=intent.getStringExtra("KEY");
}
}
};
现在在onResume()
中注册您的广播接收器,
registerReceiver(broadcastReceiver, intentFilter);
最后在onDestroy()
中取消注册BroadcastReceiver,
unregisterReceiver(broadcastReceiver);
现在最重要的部分......你需要从需要发送值的地方发射广播.....所以这样做,
Intent i=new Intent();
i.setAction("YOUR_INTENT_FILTER");
i.putExtra("KEY", "YOUR_VALUE");
sendBroadcast(i);
....欢呼:)