서버에서 카메라 이미지를 받아오는 앱을 만드는 중인데요 서버와 소켓생성이 안되는지 연결이 안되네요;; 이유가 뭔지 도움 부탁드립니다. ㅠ.ㅠ
package konkuk.camera;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class WirelessCamera extends Activity {
/** Called when the activity is first created. */
private BufferedOutputStream networkWriter;
private BufferedInputStream networkReader;
private FileOutputStream fileWriter;
private Socket socket;
private String ip = "192.168.0.7";
private final static int port = 50000;
private byte[] MotionMessage = new byte[16];
private byte[] CameraMessage = new byte[6];
private byte[] ImageMessage = new byte[102];
private byte[] ImageFile = new byte[40000];
private int size;
private int numtran;
private int byte_number;
private Handler mhandler;
private int num;
private int tmp = 1;
private int state;
public static final int MAINMENU = 0;
public static final int CAMERA = 2;
public static final int SUBCAMERA = 6;
public static final int DELAY = 50;
private ImageView sensing_box;
@Override
protected void onStop() {
super.onStop();
try {
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
setSocket(ip, port);
}catch(IOException e){}
if (socket == null){
Toast.makeText(WirelessCamera.this, "connection failed", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(WirelessCamera.this, "connection is accomplished", Toast.LENGTH_SHORT).show();
ReceiveMessage.start();
}
setContentView(R.layout.main);
}
public void onStart() {
super.onStart();
mhandler = new Handler();
setupMain();
}
public void onResume() {
super.onResume();
}
private void setupMain(){
state = MAINMENU;
setContentView(R.layout.main);
Button CameraButton = (Button) findViewById(R.id.CameraButton);
CameraButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
setupCamera();
}
});
Button Finish = (Button) findViewById(R.id.Finish);
Finish.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
private void setupCamera(){
state = CAMERA;
setContentView(R.layout.camera);
Button ConnectionCamera = (Button) findViewById(R.id.ConnectionCamera);
ConnectionCamera.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendButtonMessage ((byte)0x01);
}
});
Button GetPicture = (Button) findViewById(R.id.GetPicture);
GetPicture.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendButtonMessage ((byte)0x02);
}
});
Button GetPicture1 = (Button) findViewById(R.id.GetPicture1);
GetPicture1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendButtonMessage ((byte)0x03);
}
});
Button GetPicture2 = (Button) findViewById(R.id.GetPicture2);
GetPicture2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendButtonMessage ((byte)0x04);
}
});
Button ACK = (Button) findViewById(R.id.Ack);
ACK.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendButtonMessage ((byte)0x06);
}
});
Button Reset = (Button) findViewById(R.id.Reset);
Reset.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendButtonMessage ((byte)0x07);
}
});
}
private Thread ReceiveMessage = new Thread() {
public void run() {
byte[] Camerabuffer = new byte[6];
byte[] Imagebuffer = new byte[102];
byte[] Motionbuffer = new byte[16];
while (true) {
switch(state){
case CAMERA:
try{
networkReader.read(Camerabuffer);
CameraMessage = Camerabuffer;
mhandler.post(SendCameraMessage01);
}catch(Exception e){
Toast.makeText(WirelessCamera.this, "connection is lost", Toast.LENGTH_SHORT).show();
break;
}
if(CameraMessage[2] == 0x05)
{
sendButtonMessage((byte)0x08);
state = SUBCAMERA;
}
break;
case SUBCAMERA:
try{
if(networkReader.available() == 102 && numtran > 1){
networkReader.read(Imagebuffer);
Thread.sleep(DELAY);
ImageMessage = Imagebuffer;
numtran--;
mhandler.post(SendCameraMessage02);
}
else if(networkReader.available() == 102 && numtran == 1){
networkReader.read(Imagebuffer);
Thread.sleep(DELAY);
ImageMessage = Imagebuffer;
numtran--;
mhandler.post(SendCameraMessage02);
setFile();
//Intent open_file = new Intent( getApplicationContext(), open_file.class);
//startActivityForResult(open_file, 3);
break;
}
else if(networkReader.available() == (size%96)+6 && numtran == 1){
networkReader.read(Imagebuffer);
Thread.sleep(DELAY);
ImageMessage = Imagebuffer;
numtran--;
mhandler.post(SendCameraMessage02);
setFile();
//Intent open_file = new Intent( getApplicationContext(), open_file.class);
//startActivityForResult(open_file, 3);
break;
}
} catch (Exception e) {
Toast.makeText(WirelessCamera.this, "connection is lost", Toast.LENGTH_SHORT).show();
break;
}
break;
default:
break;
}
}
}
};
public void setSocket(String ip, int port) throws IOException, UnknownHostException {
try {
socket = new Socket(ip, port);
networkWriter = new BufferedOutputStream((socket.getOutputStream()));
networkReader = new BufferedInputStream((socket.getInputStream()));
} catch (IOException e) {
System.out.println(e);
e.printStackTrace();
}
}
private Runnable SendCameraMessage01 = new Runnable() {
public void run() {
switch(CameraMessage[2]){
case 0x00:
byte[] buffer0 = {0x02, (byte)0xAA, 0x0E, (byte)0xFF, 0x01, 0x00, 0x00};
try{
networkWriter.write(buffer0);
networkWriter.flush();
}catch(IOException e){}
Toast.makeText(WirelessCamera.this, "Camera connection is acomplished", Toast.LENGTH_SHORT).show();
break;
case 0x01:
byte[] buffer1 = {0x02, (byte)0xAA, 0x06, 0x08, 0x66, 0x00, 0x00};
try{
networkWriter.write(buffer1);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x06:
byte[] buffer2 = {0x02, (byte)0xAA, 0x04, (byte)0x05, 0x00, 0x00, 0x00};
try{
networkWriter.write(buffer2);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x08:
Toast.makeText(WirelessCamera.this, "Reset is acomplished", Toast.LENGTH_SHORT).show();
break;
case 0x05:
if(CameraMessage[3] < 0){
size = ((int)CameraMessage[4]<<8) | ((int)CameraMessage[3] & 0xFF);
}else{
size = ((int)CameraMessage[4]<<8) | ((int)CameraMessage[3]);
}
if (size%96 != 0)
numtran = (size/96)+1;
else
numtran = (size/96);
Toast.makeText(WirelessCamera.this, "Data Size : "+size, Toast.LENGTH_SHORT).show();
Toast.makeText(WirelessCamera.this, "the Number of TX : "+numtran, Toast.LENGTH_SHORT).show();
break;
}
}
};
private Runnable SendCameraMessage02 = new Runnable() {
public void run() {
byte[] buffer2 = {0x02, (byte)0xAA, 0x0E, 0x00, 0x00, 0x00, 0x00};
switch(size%96){
case 0:
System.arraycopy( ImageMessage , 4 , ImageFile , byte_number , 96 ) ;
byte_number += 96;
break;
default:
if(numtran > 0){
System.arraycopy( ImageMessage , 4 , ImageFile , byte_number , 96 ) ;
byte_number += 96;
}
else if(numtran == 0){
System.arraycopy( ImageMessage , 4 , ImageFile , byte_number , ImageMessage[2] ) ;
byte_number += ImageMessage[2];
}
break;
}
switch(ImageMessage[0]){
case (byte)0xFF:
buffer2[5] = 0x00;
buffer2[6] = (byte)(ImageMessage[1] + 0x01);
try{
networkWriter.write(buffer2);
networkWriter.flush();
}catch(IOException e){}
break;
default:
buffer2[5] = (byte)(ImageMessage[0] + 0x01);
buffer2[6] = ImageMessage[1];
try{
networkWriter.write(buffer2);
networkWriter.flush();
}catch(IOException e){}
break;
}
}
};
private void sendButtonMessage (byte x){
switch(state){
case CAMERA:
switch(x){
case 0x01:
byte[] CameraBuffer01 = {0x02, (byte)0xAA, 0x0D, 0x00, 0x00, 0x00, 0x00};
try{
networkWriter.write(CameraBuffer01);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x02:
byte[] CameraBuffer02 = {0x02, (byte)0xAA, 0x01, 0x00, 0x07, 0x09, 0x07};//1 < 3 < 5 < 7
try{
networkWriter.write(CameraBuffer02);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x03:
byte[] CameraBuffer03 = {0x02, (byte)0xAA, 0x01, 0x00, 0x07, 0x09, 0x05};//1 < 3 < 5 < 7
try{
networkWriter.write(CameraBuffer03);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x04:
byte[] CameraBuffer04 = {0x02, (byte)0xAA, 0x01, 0x00, 0x07, 0x09, 0x03};//1 < 3 < 5 < 7
try{
networkWriter.write(CameraBuffer04);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x05:
byte[] CameraBuffer05 = {0x02, (byte)0xAA, 0x01, 0x00, 0x07, 0x09, 0x01};//1 < 3 < 5 < 7
try{
networkWriter.write(CameraBuffer05);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x06:
byte[] CameraBuffer06 = {0x02, (byte)0xAA, 0x0E, 0x00, 0x00, ImageMessage[0], ImageMessage[1]};
try{
networkWriter.write(CameraBuffer06);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x07:
byte[] CameraBuffer07 = {0x02, (byte)0xAA, 0x08, 0x01, 0x00, 0x00, (byte)0xFF};
try{
networkWriter.write(CameraBuffer07);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x08:
byte[] CameraBuffer08 = {0x02, (byte)0xAA, 0x0E, 0x00, 0x00, 0x00, 0x00};
try{
networkWriter.write(CameraBuffer08);
networkWriter.flush();
}catch(IOException e){}
break;
}
break;
case SUBCAMERA:
switch(x){
case 0x01:
byte[] CameraBuffer01 = {0x02, (byte)0xAA, 0x0D, 0x00, 0x00, 0x00, 0x00};
try{
networkWriter.write(CameraBuffer01);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x02:
byte[] CameraBuffer02 = {0x02, (byte)0xAA, 0x01, 0x00, 0x07, 0x09, 0x07};//1 < 3 < 5 < 7
try{
networkWriter.write(CameraBuffer02);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x03:
byte[] CameraBuffer03 = {0x02, (byte)0xAA, 0x01, 0x00, 0x07, 0x09, 0x05};//1 < 3 < 5 < 7
try{
networkWriter.write(CameraBuffer03);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x04:
byte[] CameraBuffer04 = {0x02, (byte)0xAA, 0x01, 0x00, 0x07, 0x09, 0x03};//1 < 3 < 5 < 7
try{
networkWriter.write(CameraBuffer04);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x05:
byte[] CameraBuffer05 = {0x02, (byte)0xAA, 0x01, 0x00, 0x07, 0x09, 0x01};//1 < 3 < 5 < 7
try{
networkWriter.write(CameraBuffer05);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x06:
byte[] CameraBuffer06 = {0x02, (byte)0xAA, 0x0E, 0x00, 0x00, ImageMessage[0], ImageMessage[1]};
try{
networkWriter.write(CameraBuffer06);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x07:
byte[] CameraBuffer07 = {0x02, (byte)0xAA, 0x08, 0x01, 0x00, 0x00, (byte)0xFF};
try{
networkWriter.write(CameraBuffer07);
networkWriter.flush();
}catch(IOException e){}
break;
case 0x08:
byte[] CameraBuffer08 = {0x02, (byte)0xAA, 0x04, 0x05, 0x00, 0x00, 0x00};
try{
networkWriter.write(CameraBuffer08);
networkWriter.flush();
}catch(IOException e){}
break;
}
break;
}
}
private void setFile(){
File root = Environment.getExternalStorageDirectory();
if(root.canWrite()){
try{
fileWriter = new FileOutputStream(new File(root, "tset.jpg"));
fileWriter.write(ImageFile, 0, size);
}catch(IOException e){}
}
else
Toast.makeText(WirelessCamera.this, "File Writing is impossible", Toast.LENGTH_SHORT).show();
}
}