2014-10-17 57 views
0

我正在嘗試創建一個與藍牙低能耗模塊進行通信的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

回答

1

創建廣播接收器並在服務中廣播。 如果您的活動是開放的,註冊接收器並在onReceive()更新UI。

接收器應在活動...

下面是工作的代碼

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

+0

感謝您的回覆:D讓你知道,如果這修復我的問題:) – user3742345 2014-10-17 17:15:29

0

您可以透過廣播接收機值......如下,首先創建自己的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