2014-10-17 4 views
0

Я пытаюсь создать приложение для Android, которое связывается с модулем низкой энергии Bluetooth. Я могу подключиться к модулю, читать данные и так далее. Но проблема в том, что я не знаю, как обновлять textview из класса, который расширяет Service (тот, в котором происходит все соединение с BLE). Я знаю, что есть как МИЛЛИАРД или еще больше сообщений, подобных этим, но поверьте, я попробовал.Обновить текстовое представление MainActivity из класса, который расширяет службу

Вот MainActivity: http://pastebin.com/6yaP0dYM

и вот это класс, который расширяет Услуги: http://pastebin.com/cYuAUina

Если кто-то может дать мне несколько советов, чтобы решить мою проблему, что было бы более чем здорово!

+0

, в котором метод класса обслуживания ur, который вы хотите обновить textview –

+0

Вот чего я точно не знаю. Где я должен :)? Я попытался сделать это в onCharacteristicRead, так как в этом я принимаю значение от датчика. – user3742345

+0

ОК, пожалуйста, прочитайте о обработчике ... вы можете обновить текстовое представление из класса обслуживания с помощью обработчика .... т.е. слишком легко n хорошо .. –

ответ

1

Создайте широковещательный приемник и передайте его на Службе. Если ваша операция активна, зарегистрируйте приемник и в onReceive() обновите пользовательский интерфейс.

Приемник должен быть в деятельности ...

Ниже рабочий код

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

+0

Спасибо за ответ: D плохо сообщите, если это исправить мою проблему :) – user3742345

0

Вы можете получить значения через широковещательный приемник ...... следующим образом, сначала создать свой собственный IntentFilter, как,

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

Затем создать внутренний BroadcastReceiver класс, как,

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

И, наконец, Разрегистрировать BroadcastReceiver в onDestroy() как,

unregisterReceiver(broadcastReceiver); 

Теперь самая важная часть ... Вам нужно уволить транслировать из любого места, куда вам нужно отправлять значения ..... так делают, как,

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

.... cheers :)

+0

Спасибо за ответ: D плохо сообщите, если это исправить мою проблему :) – user3742345

Смежные вопросы