Added some TCP connection stuff.

This commit is contained in:
2013-11-06 11:49:11 -04:30
parent 5663418b47
commit b3229d908c
2 changed files with 35 additions and 18 deletions

View File

@@ -39,8 +39,6 @@ public class CamActivity extends Activity{
Intent intent = getIntent(); Intent intent = getIntent();
serverIp = intent.getStringExtra("address"); serverIp = intent.getStringExtra("address");
imThread = new ImageTransferThread();
} }
@Override @Override
@@ -73,12 +71,17 @@ public class CamActivity extends Activity{
camSetupTask = new CameraSetupTask(); camSetupTask = new CameraSetupTask();
camSetupTask.execute(); camSetupTask.execute();
imThread = new ImageTransferThread(serverIp);
imThread.start();
} }
@Override @Override
public void onPause(){ public void onPause(){
super.onPause(); super.onPause();
// TODO: Disconnect and destroy the imThread object.
cPreview.removePreviewCallback(); cPreview.removePreviewCallback();
cPreview.setCamera(null); cPreview.setCamera(null);
releaseCamera(); releaseCamera();

View File

@@ -9,11 +9,11 @@ import java.net.InetAddress;
import java.net.Socket; import java.net.Socket;
import ve.ucv.ciens.ccg.nxtcam.camera.CameraImageMonitor; import ve.ucv.ciens.ccg.nxtcam.camera.CameraImageMonitor;
import ve.ucv.ciens.ccg.nxtcam.utils.Logger;
import ve.ucv.ciens.ccg.nxtcam.utils.Logger.LOG_TYPES;
import ve.ucv.ciens.ccg.nxtcam.utils.ProjectConstants; import ve.ucv.ciens.ccg.nxtcam.utils.ProjectConstants;
import android.util.Log;
public class ImageTransferThread extends Thread{ public class ImageTransferThread extends Thread{
private final String TAG = "IM_THREAD"; private final String TAG = "IM_THREAD";
private final String CLASS_NAME = ImageTransferThread.class.getSimpleName(); private final String CLASS_NAME = ImageTransferThread.class.getSimpleName();
@@ -24,8 +24,10 @@ public class ImageTransferThread extends Thread{
private BufferedWriter writer; private BufferedWriter writer;
private BufferedReader reader; private BufferedReader reader;
private byte[] image; private byte[] image;
private String serverIp;
public ImageTransferThread(){ public ImageTransferThread(String serverIp){
this.serverIp = serverIp;
pause = false; pause = false;
done = false; done = false;
connected = false; connected = false;
@@ -37,8 +39,9 @@ public class ImageTransferThread extends Thread{
} }
public void run(){ public void run(){
if(!connected){ connectToServer();
Log.e(TAG, CLASS_NAME + ".run() :: Not connected to a server. Finishing thread."); if(socket.isConnected()){
Logger.log(Logger.LOG_TYPES.ERROR, TAG, CLASS_NAME + ".run() :: Not connected to a server. Finishing thread.");
}else{ }else{
while(!done){ while(!done){
checkPause(); checkPause();
@@ -48,29 +51,37 @@ public class ImageTransferThread extends Thread{
} }
} }
public void connectToServer(String serverIp){ private void connectToServer(){
try{ try{
if(ProjectConstants.DEBUG) Log.i(TAG, CLASS_NAME + ".connectToServer() :: Connecting to the server at " + serverIp); Logger.log(Logger.LOG_TYPES.INFO, TAG, CLASS_NAME + ".connectToServer() :: Connecting to the server at " + serverIp);
socket = new Socket(InetAddress.getByName(serverIp), ProjectConstants.SERVER_TCP_PORT_1); socket = new Socket(InetAddress.getByName(serverIp), ProjectConstants.SERVER_TCP_PORT_1);
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
connected = true; Logger.log(Logger.LOG_TYPES.INFO, TAG, CLASS_NAME + ".connectToServer() :: Connection successful.");
if(ProjectConstants.DEBUG) Log.i(TAG, CLASS_NAME + ".connectToServer() :: Connection successful.");
}catch(IOException io){ }catch(IOException io){
Log.e(TAG, CLASS_NAME + ".connectToServer() :: Connection failed with message: " + io.getMessage()); Logger.log(Logger.LOG_TYPES.ERROR, TAG, CLASS_NAME + ".connectToServer() :: Connection failed with message: " + io.getMessage());
connected = false; }
}
public void disconnect(){
if(socket != null && socket.isConnected()){
try{
socket.close();
}catch (IOException io) {
Logger.log(Logger.LOG_TYPES.ERROR, TAG, CLASS_NAME + ".connectToServer() :: " + io.getMessage());
}
} }
} }
public synchronized void finish(){ public synchronized void finish(){
done = true; done = true;
if(ProjectConstants.DEBUG) Log.i(TAG, CLASS_NAME + ".finish() :: Finishing thread."); Logger.log(Logger.LOG_TYPES.INFO, TAG, CLASS_NAME + ".finish() :: Finishing thread.");
} }
private void checkPause(){ private void checkPause(){
synchronized (threadPauseMonitor){ synchronized (threadPauseMonitor){
while(pause){ while(pause){
if(ProjectConstants.DEBUG) Log.d(TAG, CLASS_NAME + ".checkPause() :: Pause requested."); Logger.log(Logger.LOG_TYPES.DEBUG, TAG, CLASS_NAME + ".checkPause() :: Pause requested.");
try{ threadPauseMonitor.wait(); }catch(InterruptedException ie){} try{ threadPauseMonitor.wait(); }catch(InterruptedException ie){}
} }
} }
@@ -78,11 +89,11 @@ public class ImageTransferThread extends Thread{
public synchronized void pauseThread(){ public synchronized void pauseThread(){
pause = true; pause = true;
if(ProjectConstants.DEBUG) Log.d(TAG, CLASS_NAME + ".pauseThread() :: Pausing thread."); Logger.log(Logger.LOG_TYPES.DEBUG, TAG, CLASS_NAME + ".pauseThread() :: Pausing thread.");
} }
public synchronized void resumeThread(){ public synchronized void resumeThread(){
if(ProjectConstants.DEBUG) Log.d(TAG, CLASS_NAME + ".resumeThread() :: Resuming thread."); Logger.log(Logger.LOG_TYPES.DEBUG, TAG, CLASS_NAME + ".resumeThread() :: Resuming thread.");
synchronized (threadPauseMonitor) { synchronized (threadPauseMonitor) {
pause = false; pause = false;
threadPauseMonitor.notifyAll(); threadPauseMonitor.notifyAll();
@@ -90,6 +101,9 @@ public class ImageTransferThread extends Thread{
} }
public boolean isConnected(){ public boolean isConnected(){
return connected; if(socket != null && socket.isConnected())
return true;
else
return false;
} }
} }