Android:读取套接字响应的服务

时间:2013-01-17 14:14:50

标签: android sockets service

我正在开发一个应用程序,其中我有12位数字字节数组来读取模拟器上的按钮状态。我在socket上写这些字节数组来获得响应。我希望持续监控此结果,并希望在更改值时收到通知。目前我正在使用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中的

我正在设置ToggleButton on|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); 
}

如何使用服务实现此功能?任何想法和建议将不胜感激

1 个答案:

答案 0 :(得分:0)

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