从扩展Service的类更新MainActivity的textview

时间:2014-10-17 09:40:25

标签: java android bluetooth textview

我正在尝试创建一个与蓝牙低能耗模块通信的Android应用。我能够连接到模块,读取数据等。但问题是我不知道如何从扩展Service的类(与BLE的整个连接正在进行的那个)更新textview。我知道有像BILLION或更多这样的帖子,但相信我,我试过。

以下是MainActivity:http://pastebin.com/6yaP0dYM

这是一个扩展Service:http://pastebin.com/cYuAUina

的类

如果有人可以提供一些解决我的问题的技巧,那就太棒了!

2 个答案:

答案 0 :(得分:1)

创建广播接收器并在服务中广播。 如果您的Activity是ope,则注册接收器并在onReceive()中更新UI。

接收者应该在活动中......

以下是工作代码

https://stackoverflow.com/a/14695943/1403112

答案 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);

....欢呼:)