さて、私は学校のプロジェクトの一環として Android MUD クライアントを設計しています。ただし、ANSI カラー解析の実装中に問題が発生しています。バイト単位でデータを読み込みます。文字「hex」を「\033」、「27」、および「0x1B」に設定しようとしましたが、エスケープ文字を検出できないようです。私のチェックで何か間違っていることがわかりますか?また、「char check = String.valueOf(j).charAt(0);」という行 は一時的なもので、もともと文字変数「hex」をバイト「j」に対してチェックしようとしていました。キャラクターをチェックするより良い方法はありますか?
while(isConnected) {
int j = 0;
try {
int i = arrayOfByte.length;
j = streamInput.read(arrayOfByte, 0, i);
char check = String.valueOf(j).charAt(0);
Log.d("Console","Char is - " + check);
if (j == -1)
{
Log.d("Console","j = -1");
throw new Exception("Error while reading socket.");
} else if (j == 0) {
Log.d("Console","Continuing");
continue;
} else if (check == hex) {
Log.d("Console","Yo, daddio!");
} else {
final String strData = new String(arrayOfByte, 0, j).replace("\r", "");
runOnUiThread(new Runnable() {
public void run() {
textContent.append(strData);
scrollToBottom();
}
});
}
} catch (Exception e) {
Handler handlerException = GameWindow.this.mHandler;
String strException = e.getMessage();
final String strMessage = "Error while receiving from server:\r\nConnection terminated";
Runnable rExceptionThread = new Runnable()
{
public void run()
{
Toast.makeText(context, strMessage, 3000).show();
}
};
handlerException.post(rExceptionThread);
if(strException.indexOf("reset") != -1 || strException.indexOf("rejected") != -1)
{
isConnected = false;
try
{
connectionSocket.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
isConnected = false;
}
}