更新服务的类MainActivity的Textview

问题描述:

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

这里是MainActivity:http://pastebin.com/6yaP0dYM

这里是扩展一个类服务:http://pastebin.com/cYuAUina

如果有人能提供给我一些提示,以解决我的问题,这将是多伟大!

+0

你想更新哪个服务类的方法textview – 2014-10-17 09:52:32

+0

这就是我所不知道的。我应该在哪里:)?我试图在onCharacteristicRead中做到这一点,因为在这一个我从传感器的价值.. – user3742345 2014-10-17 09:58:49

+0

好的请阅读有关处理程序...您可以更新textview从服务类使用处理程序....即太容易ñ好.. – 2014-10-17 10:02:52

创建广播接收器并在服务中广播。 如果您的活动是开放的,注册接收器并在onReceive()更新UI。

接收器应在活动...

下面是工作的代码

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

+0

感谢您的回复:D让你知道,如果这修复我的问题:) – user3742345 2014-10-17 17:15:29

您可以透过广播接收机值......如下,首先创建自己的IntentFilter如,

Intent intentFilter=new IntentFilter(); 
intentFilter.addAction("YOUR_INTENT_FILTER"); 

然后创建内部类广播接收器的,

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()如,

unregisterReceiver(broadcastReceiver); 

现在最重要的部分......你需要火从任何需要发送值的地方播放.....如此做,

Intent i=new Intent(); 
i.setAction("YOUR_INTENT_FILTER"); 
i.putExtra("KEY", "YOUR_VALUE"); 
sendBroadcast(i); 

....干杯:)

+0

感谢您的答复:D让你知道这是否解决我的问题:) – user3742345 2014-10-17 16:37:41