안드로이드 개발 질문/답변
(글 수 45,052)
package exx.x;
import java.io.*;
import java.net.*;
import java.util.*;
import android.app.*;
import android.graphics.*;
import android.os.*;
import android.view.*;
import android.widget.*;
public class ExxActivity extends Activity implements Runnable{
private FrameLayout framelayout;
private Socket socket;
private DataInputStream dataIn;
private DataOutputStream dataOut;
private String message = "Hello from Client";
public void run() {
try {
socket = new Socket("IP", PORT);
dataIn = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
dataOut = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
sendMessage();
}
catch(Exception e){
}
}
public void sendMessage(){
try{
dataOut.writeUTF(message);
dataOut.flush(); }
catch(Exception e){
}
}
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
Random random = new Random();
int color=0;
color = Color.rgb(random.nextInt(255),
random.nextInt(255),
random.nextInt(255));
framelayout.setBackgroundColor(color);
}
return super.onTouchEvent(event);
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread cThread = new Thread(new ExxActivity());
cThread.start();
framelayout = (FrameLayout)findViewById(R.id.frameLayout1);
}
}
-------------------------------------------------------------------------------------------------------------------
소캣통신과 이벤트발생시 처리에 관해서 공부하고 있는데요
소스는 화면 클릭시 배경색이 바뀌는데 이때 배경색이 바뀌면서 서버에 메시지를 전송하려고 합니다.
sendMessage()라는 함수를 만들어 화면 클릭시 실행하게 하였는데요
프로그램 실행시 서버에 접속과 메시지는 오는데 화면 터치시 메시지가 전송이 안옵니다.
터치이벤트 발생에 sendMessage함수가 작동하지 않는것 같은데
터치발생시에 소켓을 생성하게 하면 작동은하는데......
다른방향으로 수정하고 싶습니다.
onTouchEvent 안에 메세지를 전송하는 코드가 보이지 않는데요. 거기에 메세지 전송을 해주는 코드가 있어야 하는 거 아닌가요?
그리고 제 개인적인 생각으로는 onTouchEvent에서 메세지 송수신 처리를 하는 것은 좋은 선택이 아닐 듯합니다. 왜냐하면 모바일 디바이스 특성상 해당 이벤트가 사용자가 실수로 잘못 화면을 터치해서 발생하거나 하는 예외적인 상황이 너무 많을 것 같습니다.