1

シミュレーターのボタンの状態を読み取るための12桁のバイト配列を持つアプリケーションを開発しています。応答を得るために、これらのバイト配列をソケットに書き込んでいます。この結果を継続的に監視し、値が変更されたときに通知を受け取りたいです。現在、タイマーを使用して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で私はon|offこのようなreslutに基づいてToggleButtonを設定しています

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 に答える