package com.live2support; import java.util.ArrayList; import java.util.HashMap; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.media.MediaPlayer; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class VisitorChat extends Activity { private static final String TAG = "Chat"; private static final boolean D = true; private final int NOTIFICATION_ID = 1012; private int sendmsg,receivemsg; private ArrayList chatMessages; BackgroundThread backgroundThread; private NotificationManager mNotificationManager; private String response; private String chatMsg,previousChatMsg,sender,textchat,lastnum; String[] timeduration; public static String sendmessage,receivedmsg; // Layout Views private ListView mConversationView; private EditText mOutEditText; private Button mSendButton,header,showall; private String delimiter,delimiter1,delimiter2,delimiter3,url; private TextView message; private String[] valueArray,valueArray1,messagelist,temp1; private String strchattext,strResponseFirst,strMsgNewNum,strMsgOldNum; private CustomAdapter mAdapter; // Member object for the chat services private static final String DEB_TAG = "Error Message"; final static int PACKET_CAME = 1; final static int TOAST1 = 2; protected static final int TOAST = 0; //user name private String mUserName= Main.loginId.getText().toString(); ServerThread myThread; private Timer timer = new Timer(); int odd_resID,even_resID; public class BackgroundThread extends Thread { boolean running = false; void setRunning(boolean b){ running = b; } @Override public void run() { // TODO Auto-generated method stub //super.run(); while(running){ try { sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } getResponseMessage(BaseActivity.session); } } } public void setUserName(String userName){ mUserName = userName; } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.chat); Log.i(DEB_TAG, "error in chat window"); header = (Button) findViewById(R.id.btnheadertext); showall = (Button) findViewById(R.id.btnshowall); Controls.preferences = getPreferences(MODE_PRIVATE); Controls.chatOnlyPref = Controls.preferences.getBoolean("chatOnlyPref", true); //default is true Controls.soundOnlyPref = Controls.preferences.getBoolean("soundOnlyPref", true); // Initialize the compose field with a listener for the return key mOutEditText = (EditText) findViewById(R.id.edit_text_out); mSendButton = (Button) findViewById(R.id.button_send); //mConversationArrayAdapter = new ArrayAdapter(this, R.layout.message3); mConversationView = (ListView) findViewById(R.id.in); chatMessages = new ArrayList(); mConversationView.setDivider(null); mConversationView.setDividerHeight(0); if(D) Log.e(TAG, "+++ ON CREATE +++"); Bundle extras = getIntent().getExtras(); if (extras != null) { try{ extras.getString(BaseActivity.ip); extras.getString(BaseActivity.session); extras.getString(BaseActivity.status); extras.getString("from"); extras.getInt("Position"); extras.getString(VisitorDetail.name); setTitle("Messaging with " + BaseActivity.ip); } catch(Exception e){ e.printStackTrace(); } } try{ header.setText(BaseActivity.ip); }catch(Exception e){ e.printStackTrace(); } mAdapter = new CustomAdapter(); mConversationView.setAdapter(mAdapter); mConversationView.setCacheColorHint(0); message = (TextView) findViewById(R.id.edit_text_out); sendmessage = message.getText().toString(); mSendButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { if(D) Log.e(TAG, "[sendButton clicked]"); // Send a message using content of the edit text widget message = (TextView) findViewById(R.id.edit_text_out); sendmessage = message.getText().toString(); try{ setupChat(BaseActivity.session); postMessage(); } catch(Exception e){ e.printStackTrace(); } /*TimerTask timerTask = new TimerTask() { @Override public void run() { try{ getResponseMessage(BaseActivity.session); } catch(Exception e){ e.printStackTrace(); } } }; timer.schedule(timerTask, 6000);*/ } }); showall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(VisitorChat.this,MultiChat.class); startActivity(intent); } }); } public void onStart() { super.onStart(); if(D) Log.e(TAG, "++ ON START ++"); /*TimerTask timerTask = new TimerTask() { @Override public void run() { try{ getResponseMessage(BaseActivity.session); } catch(Exception e){ e.printStackTrace(); } } }; timer.schedule(timerTask, 6000);*/ myMethod(); backgroundThread = new BackgroundThread(); backgroundThread.setRunning(true); backgroundThread.start(); Toast.makeText(this, "onStart()", Toast.LENGTH_LONG).show(); } //------------------------Showing all chat message to user---------------------------- private void myMethod(){ url = "http://"+Main.tempurl+"/"+Main.url1+"/"+Url.IDS_GETCHAT_TEXT; final HashMap postParameters = new HashMap(); try{ postParameters.put("uname", VisitorDetail.name); postParameters.put("adminid", Main.loginId.getText().toString()); postParameters.put("csesid",BaseActivity.session); postParameters.put("ipadd",BaseActivity.ip); postParameters.put("sid", Main.siteId.getText().toString()); postParameters.put("lastnum", "0"); } catch(Exception e){ e.printStackTrace(); } Runnable searchThread = new Runnable(){ public void run() { // TODO Auto-generated method stub try { response = CustomHttpClient.executeHttpPost1(url,postParameters); Log.i(DEB_TAG, "Requesting to server"+response); System.out.println("the chat msg are================:"+response); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if(response!=null){ runOnUiThread(new Runnable() { public void run() { // TODO Auto-generated method stub delimiter = ""; delimiter1= ""; delimiter2 = ""; delimiter3 = ""; valueArray = response.split(delimiter); //lastnum = valueArray[1]; //System.out.println("lastnum is"+lastnum); if(valueArray.length==3){ strResponseFirst = valueArray[0]; System.out.println("first response================"+strResponseFirst); if(!strResponseFirst.equalsIgnoreCase("")){ valueArray1 = strResponseFirst.split(delimiter1); if(valueArray1.length==4){ strchattext = valueArray1[0]; strMsgNewNum = valueArray1[1]; strMsgOldNum = valueArray1[2]; temp1 = strchattext.split(delimiter2); for(int i=0;i postParameters = new HashMap(); try{ postParameters.put("uname", VisitorDetail.name); postParameters.put("adminid", Main.loginId.getText().toString()); postParameters.put("sid", Main.siteId.getText().toString()); if(BaseActivity.session!=null){ postParameters.put("csesid",BaseActivity.session); } postParameters.put("lastnum", lastnum); } catch(Exception e){ e.printStackTrace(); } Runnable searchThread = new Runnable(){ public void run() { // TODO Auto-generated method stub try { response = CustomHttpClient.executeHttpPost1(url,postParameters); Log.i(DEB_TAG, "Requesting to server"+response); //CustomHttpClient.getResponseInString(response ); delimiter = ""; delimiter1= ""; delimiter2 = ""; delimiter3 = ""; valueArray = response.split(delimiter); if(valueArray.length==3){ strResponseFirst = valueArray[0]; System.out.println("first response================"+strResponseFirst); if(!strResponseFirst.equalsIgnoreCase("")){ valueArray1 = strResponseFirst.split(delimiter1); if(valueArray1.length==4){ strchattext = valueArray1[0]; strMsgNewNum = valueArray1[1]; strMsgOldNum = valueArray1[2]; System.out.println("strchattext=================="+valueArray1[0]+"\n"+"strMsgNewNum======================"+strMsgNewNum+"\n"+"strOldNum============"+strMsgOldNum); temp1 = strchattext.split(delimiter2); System.out.println("value of temp variable"+temp1[1]); System.out.println("value of strchatmsg============="+valueArray1[0]+"\n"+"value of new num"+valueArray1[1]+"\n"+"value of old num=="+strMsgOldNum); for(int i=0;i postParameters = new HashMap(); try{ postParameters.put("say",sendmessage); if(BaseActivity.session!=null){ postParameters.put("csesid",BaseActivity.session); } if(Main.loginId.getText().toString()!=null){ postParameters.put("adminid", Main.loginId.getText().toString()); } postParameters.put("sid", Main.siteId.getText().toString()); } catch(Exception e) { e.printStackTrace(); } Runnable searchThread = new Runnable(){ public void run() { // TODO Auto-generated method stub try { response = CustomHttpClient.executeHttpPost1(url,postParameters); Log.i(DEB_TAG, "Requesting to server"+response); //CustomHttpClient.getResponseInString(response ); System.out.println("Output of httpResponse:"+response); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if(response!=null){ runOnUiThread(new Runnable() { public void run() { if(CustomHttpClient.Response.getStatusLine().getStatusCode()==200){ // TODO Auto-generated method stub System.out.println(response); //playsound(); } } }); } } }; Thread thread = new Thread(null, searchThread, "MagentoBackground"); thread.start(); } //--------------------For seeing message if any exists-------------------- private void handleMessage(String receivedmsg) { // TODO Auto-generated method stub String receivemsg = receivedmsg; try{ if(BaseActivity.ip!=null) chatMessages.add(BaseActivity.ip+":"+receivemsg); message.setText(""); } catch(Exception e){ e.printStackTrace(); } } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); backgroundThread.setRunning(false); Toast.makeText(this, "onStop()", Toast.LENGTH_LONG).show(); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); backgroundThread.setRunning(false); Toast.makeText(this, "onStop()", Toast.LENGTH_LONG).show(); } //---------------------when user click any of these button--------------- @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { finish(); return true; } return super.onKeyDown(keyCode, event); } }