1

我正在开发一个应用程序,其中我有 12 位字节数组来读取模拟器上按钮的状态。我在套接字上写这些字节数组以获得响应。我想持续监控这个结果,并希望在值发生变化时得到通知。目前我正在使用 Timer 做同样的事情,每 10 秒运行一次,现在我想做的是运行相同的方法来监控响应,但使用 Android 服务。

try {
            byte[] data1 = new byte[1024], packet1 = 
                { 
                    (byte) 0x00,(byte) 0x00,(byte) 0x00, 
                    (byte) 0x00,(byte) 0x00,(byte) 0x06, 
                    (byte) 0x01,(byte) 0x01,(byte) 0x00,
                    (byte) 0x00,(byte) 0x00,(byte) 0x19
                };

            o.write(packet1);
            i.read(data1, 0, 1024);

            byte_to_hex = ConversionMethods.bytesToHex(data1).substring(18, 26);

            char[] arr = byte_to_hex.toCharArray();
            for (int i = 0; i < arr.length - 1; i += 2) 
            {
                char temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }

            swapped_result=new String(arr);
            result = ConversionMethods.hexStringToNBitBinary(swapped_result, 32);

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        this.runOnUiThread(Timer_Tick);

在 Timer_Tick 我设置 ToggleButtonon|off基于 reslut 这样

char[] c=result.toCharArray();
int count=0;
for (int i=0;i<result.length();i++)
{
    count++;
    char j=c[i];

    if(count==1)
        toggleButton=dimmerLight1;
    else if(count==2)
        toggleButton=fanDimmer2;
    else if(count==3)
        toggleButton=fanDimmer1;
    if(j=='1')
        toggleButton.setChecked(true);
    else
        toggleButton.setChecked(false); 
}

我如何使用服务来实现这个?任何想法和建议将不胜感激
谢谢

4

1 回答 1

0

这是编写服务的一个很好的例子,其功能与您的任务非常相似(“服务将在启动时启动并定期获取数据。该服务将由将自身绑定到服务的活动使用。活动将允许请求服务的最新数据。”)http://www.vogella.com/articles/AndroidServices/article.html#tutorial_ownservice

于 2013-01-17T14:44:25.170 回答