ステータスをポーリングできるリモートデバイスへの非常に基本的なTCPソケット接続があります。TCPストリームからのAndroid文字列処理
私はasynctaskを通して大部分を理解したソケットプログラミング以外に、返す文字列を解析する方法を考え出しています。
- 私はデバイスに「VOL?」のような質問をします。
- 装置はこれに12個の異なるオーディオ出力の音量で応答: "VOL:33,0,21,12,0,43,0,0,0,0,20,0"
":"文字はいつも最初のコマンドのエコーの後に戻ってくるだけなので、コロンの前に来るものはどんな種類の答えが入っているかを示すことができます(VOL、BAS、MUT、TRE、BALなど)。 ) VOLの場合は、コンマの間にあるすべての部分をまとめてみたいので、すべてのゾーンのボリュームを整理して配列に入れることができます。
私は考えることができる唯一のことは、それがコンマ一つ一つを探してループのために実行し、文字列の長さをつかむことであるが、それは途方もなく厄介なようだ:
int oldPos = 0; //used in the upcoming 'if clause' to mark where the last comma was found
int y = 0; //used to old the resulting value's array position
String strIncoming; = //the incoming TCP string
for(int x = 0; x <= strIncoming.length(); x++){
if(",".equals(strIncoming[x]){
volzoneVal[y] = strIncoming.subString(oldPos,x);
oldPos = x;
y++;
}
}
そこは持っていますより良い方法であると確信しています(そして、私はこれがうまくいくかどうかもわかりません。私はこの問題をブレーンストーミングするので、初めてここに入力しているので、実行されていないか、コンパイルされていません)
ヒットを探している文字列をスキャンするより良い方法は?