Packet nach Shared verschoben
This commit is contained in:
@@ -96,6 +96,7 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Canvas;
|
||||
@@ -17,6 +18,7 @@ import android.os.Bundle;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Base64;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
@@ -31,27 +33,38 @@ import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.Socket;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
import javax.crypto.NoSuchPaddingException;
|
||||
|
||||
import soapConnection.DataIdentifier;
|
||||
import soapConnection.Packet;
|
||||
import soapConnection.SoapConnectionManager;
|
||||
|
||||
import util.SecurityUtils;
|
||||
import util.Util;
|
||||
|
||||
/**
|
||||
* Created by bib on 03.05.2016.
|
||||
*/
|
||||
public class ChatActivity extends ActionBarActivity{
|
||||
|
||||
private static final String LOG_TAG = "CHAT";
|
||||
|
||||
//View Variablen
|
||||
protected TextView chat;
|
||||
protected EditText text;
|
||||
@@ -59,20 +72,18 @@ public class ChatActivity extends ActionBarActivity{
|
||||
|
||||
//Server Variablen
|
||||
public static Socket socket;
|
||||
protected static final String dstAddress = "192.168.1.103"; //10.0.2.2"
|
||||
protected static final int dstPort = 5000;
|
||||
DataOutputStream st;
|
||||
DataOutputStream socketOutputStream;
|
||||
|
||||
String SaveCompleteMS;
|
||||
String saveCompleteMessage;
|
||||
|
||||
BufferedReader in = null;
|
||||
// BufferedReader inputReader = null;
|
||||
|
||||
//Design View
|
||||
protected ListView listView;
|
||||
protected boolean isMe = true;
|
||||
protected List<ChatMessageFormat> chatMessages;
|
||||
protected ArrayAdapter<ChatMessageFormat> adapter;
|
||||
ChatMessageFormat chatMessage;
|
||||
public static List<ChatMessageFormat> chatMessages;
|
||||
public static ArrayAdapter<ChatMessageFormat> adapter;
|
||||
public static ChatMessageFormat chatMessage;
|
||||
|
||||
|
||||
Thread currentlisten;
|
||||
@@ -119,22 +130,12 @@ public class ChatActivity extends ActionBarActivity{
|
||||
titlepic.setImageBitmap(GetCircleBitmap(customerImage));
|
||||
}
|
||||
|
||||
//Online Status listener
|
||||
/* ImageView img = (ImageView) mCustomView.findViewById(R.id.status);
|
||||
img.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
ChatActivity.this.openOptionsMenu(); // activity's onCreateOptionsMenu gets called
|
||||
//optionsMenu.performIdentifierAction(R.id., 0);
|
||||
}
|
||||
});*/
|
||||
|
||||
titlename.setText(name);
|
||||
|
||||
action.setCustomView(mCustomView);
|
||||
action.setDisplayShowCustomEnabled(true);
|
||||
|
||||
senden = (Button)findViewById(R.id.Sendebutton);
|
||||
//chat = (TextView)findViewById(R.id.ChatText);
|
||||
|
||||
chatMessages = new ArrayList<>();
|
||||
|
||||
@@ -144,26 +145,25 @@ public class ChatActivity extends ActionBarActivity{
|
||||
listView.setAdapter(adapter);
|
||||
|
||||
try {
|
||||
|
||||
|
||||
socket = MainActivityMitarbeiter.socket;
|
||||
|
||||
in = MainActivityMitarbeiter.in;
|
||||
//nachricht an server senden welcher name jetz aktiv connected ist
|
||||
st = new DataOutputStream(socket.getOutputStream());
|
||||
}catch(Exception e){/*Fail*/}
|
||||
MainActivityMitarbeiter.Test();
|
||||
|
||||
Log.i("CHAT", "listen is still alive: " + MainActivityMitarbeiter.listen.isAlive());
|
||||
|
||||
socketOutputStream = new DataOutputStream(socket.getOutputStream());
|
||||
|
||||
} catch(Exception e){
|
||||
Log.e("CHAT_ERROR", "Fehler bei der Socket-Erstellung: " + e.getMessage());
|
||||
}
|
||||
|
||||
// MainActivityMitarbeiter.listen.interrupt();
|
||||
// MainActivityMitarbeiter.listen = null;
|
||||
|
||||
CreateFile();
|
||||
|
||||
ReadMessageToStorage();
|
||||
|
||||
|
||||
//Öffnet eine Verbindung zum Server
|
||||
// new Thread(new OpenConnection()).start();
|
||||
//new Thread(new OpenConnection()).start();
|
||||
|
||||
|
||||
text = (EditText)findViewById(R.id.editText);
|
||||
@@ -175,12 +175,12 @@ public class ChatActivity extends ActionBarActivity{
|
||||
|
||||
//isMe = true;
|
||||
|
||||
if(text.getText().toString().equals("exit")){
|
||||
if(text.getText().toString().equals("exit")) {
|
||||
//eine möglich keit die connection zu schließen
|
||||
// new Thread(new ConnectionClose()).start();
|
||||
}else if(!text.getText().toString().equals("")){
|
||||
} else if(!text.getText().toString().equals("")) {
|
||||
new Thread(new MessageSender()).start();
|
||||
}else{
|
||||
} else {
|
||||
Toast.makeText(ChatActivity.this, "Sie müssen schon Text eingeben ", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
@@ -191,63 +191,54 @@ public class ChatActivity extends ActionBarActivity{
|
||||
t.start();
|
||||
|
||||
//MainActivityMitarbeiter.listen.sus
|
||||
//sharedpreferences = true;
|
||||
|
||||
SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.putBoolean("IsInChatActivity", true);
|
||||
editor.commit();
|
||||
}
|
||||
|
||||
/*public class OpenConnection implements Runnable{
|
||||
public void run(){
|
||||
try {
|
||||
socket = new Socket(dstAddress,dstPort);
|
||||
// Log.v("Status: ","Vorhanden 3");
|
||||
|
||||
//nachricht an server senden welcher name jetz aktiv connected ist
|
||||
dataOutputStream = new DataOutputStream(socket.getOutputStream());
|
||||
name=name+"/1";
|
||||
byte[] ts = name.getBytes();
|
||||
dataOutputStream.write(ts);
|
||||
dataOutputStream.flush();
|
||||
|
||||
} catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
Log.v("Connection: ","Konnte nicht Aufgebaut");
|
||||
socket = null;
|
||||
//methode zur abfrage
|
||||
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
public class MessageSender implements Runnable{
|
||||
public void run(){
|
||||
String al = text.getText().toString();
|
||||
|
||||
byte[] ts = al.getBytes();
|
||||
|
||||
|
||||
//TODO: Packet erstellen
|
||||
//ChatActivity.
|
||||
|
||||
try{
|
||||
if(socket!= null ) {
|
||||
Log.i(LOG_TAG, "Sende Nachricht...");
|
||||
|
||||
if(socket != null ) {
|
||||
|
||||
Log.d(LOG_TAG, "Ist der Socket mit dem Server Verbunden: " + (socket.isConnected()));
|
||||
|
||||
Packet p = new Packet();
|
||||
p.ChatMessage = text.getText().toString();
|
||||
p.SenderPersonOid = SoapConnectionManager.User.getPersonOid().intValue();
|
||||
p.ChatDataIdentifier = DataIdentifier.MESSAGE;
|
||||
p.ChatName = SoapConnectionManager.User.getFullName();
|
||||
p.RecipientPersonOid = personOid;
|
||||
|
||||
st.write(p.GetDataStream());
|
||||
st.flush();
|
||||
SharedPreferences settings = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
|
||||
byte[] tenantByteArray = Base64.decode(settings.getString(Util.PREFS_TENANT_KEY, null), Base64.DEFAULT);
|
||||
ByteArrayInputStream tenantStream = new ByteArrayInputStream(tenantByteArray);
|
||||
|
||||
p.Tenant = SecurityUtils.decrypt(tenantStream).toString();
|
||||
|
||||
socketOutputStream.write(p.GetDataStream());
|
||||
socketOutputStream.flush();
|
||||
}
|
||||
else {
|
||||
Log.i("SEND_CHAT_MESSAGE","Socket ist null");
|
||||
}
|
||||
|
||||
// Update der GUI
|
||||
listView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
Log.i(LOG_TAG, "Führe GUI-Update durch...");
|
||||
|
||||
Calendar c = Calendar.getInstance();
|
||||
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
|
||||
String formattedDate = df.format(c.getTime());
|
||||
|
||||
SaveCompleteMS = text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n";
|
||||
saveCompleteMessage = text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n";
|
||||
|
||||
WriteMessagesfromStorage(text.getText().toString()+"/"+isMe+"%"+formattedDate+"\n");
|
||||
|
||||
@@ -256,113 +247,73 @@ public class ChatActivity extends ActionBarActivity{
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
text.setText("");
|
||||
|
||||
}
|
||||
});
|
||||
}catch(IOException s){
|
||||
Log.v("Status: ","Senden einer Nachricht konnte nicht ausgeführt werden. Save wird ausgeführt");
|
||||
|
||||
SaveAfterLoseConnection(SaveCompleteMS);
|
||||
SaveAfterLoseConnection(saveCompleteMessage);
|
||||
s.printStackTrace();
|
||||
} catch (NoSuchPaddingException | InvalidAlgorithmParameterException | NoSuchAlgorithmException | InvalidKeyException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* public class ConnectionClose implements Runnable{
|
||||
public void run(){
|
||||
try {
|
||||
// Log.v("Bin ich Überhaupt", "Hier drinne");
|
||||
if (dataOutputStream != null) {
|
||||
dataOutputStream.flush();
|
||||
dataOutputStream.close();
|
||||
}
|
||||
if (socket != null)
|
||||
socket = null;
|
||||
// Log.v("Schliesen :","?? Möglich");
|
||||
// }
|
||||
Log.v("Status","Socket succesfull closed");
|
||||
}catch(IOException se){
|
||||
Log.v("Status: ","Schließen nicht möglich. Es ist ein Fehler aufgetreten");
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
// Erhalte Messages all the time
|
||||
public class SocketListener implements Runnable{
|
||||
String str;
|
||||
long i = 1;
|
||||
//BufferedReader in = null;
|
||||
Packet chatPacket;
|
||||
|
||||
public void run(){
|
||||
try{
|
||||
//DesignTechnische gründe
|
||||
Log.v("Komme","ICh den Rein");
|
||||
while(true){
|
||||
|
||||
if (socket != null) {
|
||||
Log.v("Komme","So wie es aussieht nicht ");
|
||||
if(socket.isConnected()) {
|
||||
Log.v("Connection Steht ", "Connection Steht");
|
||||
Log.v("Komme","So wie es aussieht nicht2 ");
|
||||
//final TextView text = (TextView)findViewById(R.id.ChatText);
|
||||
|
||||
final ListView listV = (ListView) findViewById(R.id.list_msg);
|
||||
|
||||
Log.v("Komme","So wie es aussieht nicht 3");
|
||||
// in = new BufferedReader(new InputStreamReader(MainActivityMitarbeiter.socket.getInputStream()));
|
||||
InputStream stream = socket.getInputStream();
|
||||
|
||||
/*---> da wird das pendant ausgeführt und nicht dieses */ String s = in.readLine();
|
||||
Log.v("Komme","So wie es aussieht nicht 4");
|
||||
CharSequence cs = text.getText();
|
||||
int size = stream.available();
|
||||
|
||||
// wir nehmen mal cs raus
|
||||
//str = cs + "\r\n" + s;
|
||||
str = s;
|
||||
if(size == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (s == null)
|
||||
break;
|
||||
Log.i("", "");
|
||||
|
||||
StringBuilder total = new StringBuilder(stream.available());
|
||||
|
||||
int counter = 0;
|
||||
|
||||
while(counter < size) {
|
||||
|
||||
char c = (char) stream.read();
|
||||
total.append(c);
|
||||
|
||||
counter++;
|
||||
}
|
||||
|
||||
chatPacket = new Packet(total.toString());
|
||||
|
||||
//Design Spezifisch
|
||||
listV.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
Calendar c = Calendar.getInstance();
|
||||
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
|
||||
String formattedDate = df.format(c.getTime());
|
||||
WriteMessagesfromStorage(chatPacket.ChatMessage + "/" + false + "%" + chatPacket.getFormattedMessageTimeStamp() + "\n");
|
||||
|
||||
boolean determind = false;
|
||||
|
||||
WriteMessagesfromStorage(str+"/"+determind+"%"+formattedDate+"\n");
|
||||
|
||||
chatMessage = new ChatMessageFormat(str, determind, formattedDate);
|
||||
chatMessage = new ChatMessageFormat(chatPacket.ChatMessage, false, chatPacket.getFormattedMessageTimeStamp());
|
||||
chatMessages.add(chatMessage);
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
Log.v("","");
|
||||
|
||||
if(isOnStop == true){
|
||||
SetNotify("Bärtiger Hanz",str);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
i++;
|
||||
} else {
|
||||
Log.i("SOCKETLISTENER/CHAT", "Nicht mit dem Socket verbunden");
|
||||
}
|
||||
} else {
|
||||
|
||||
if (in != null)
|
||||
in.close();
|
||||
}
|
||||
|
||||
// else Log.v("Connection","nicht aufgebaut"); nach tausend versuchen break und fehler ausgabe
|
||||
|
||||
}
|
||||
|
||||
}catch(Exception e){
|
||||
Log.v("Status ","Verbindung zum Server wurde seitens dem Server getrennt ");
|
||||
// Log.e(getClass().getName(),e.getMessage());
|
||||
// e.printStackTrace();
|
||||
Log.e("Status ","Verbindung zum Server wurde seitens dem Server getrennt ");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -433,11 +384,11 @@ public class ChatActivity extends ActionBarActivity{
|
||||
|
||||
byte[] ts = al.getBytes();
|
||||
try {
|
||||
if (socket != null && st != null) {
|
||||
if (socket != null && socketOutputStream != null) {
|
||||
|
||||
//try catch bei catch SaveAfterLoseConnection();
|
||||
st.write(ts);
|
||||
st.flush();
|
||||
socketOutputStream.write(ts);
|
||||
socketOutputStream.flush();
|
||||
}
|
||||
}catch(Exception xs){
|
||||
|
||||
@@ -518,9 +469,12 @@ public class ChatActivity extends ActionBarActivity{
|
||||
}
|
||||
|
||||
public void onResume() {
|
||||
isOnStop = false;
|
||||
|
||||
|
||||
SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.putBoolean("IsInChatActivity", true);
|
||||
editor.commit();
|
||||
|
||||
super.onResume();
|
||||
}
|
||||
@@ -529,9 +483,12 @@ public class ChatActivity extends ActionBarActivity{
|
||||
// Thread t = new Thread(new ConnectionClose());
|
||||
// t.start();
|
||||
|
||||
SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.putBoolean("IsInChatActivity", false);
|
||||
editor.commit();
|
||||
|
||||
|
||||
isOnStop = true;
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@@ -539,7 +496,10 @@ public class ChatActivity extends ActionBarActivity{
|
||||
// Thread t = new Thread(new ConnectionClose());
|
||||
// t.start();
|
||||
// currentlisten = null;
|
||||
|
||||
SharedPreferences sp = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.putBoolean("IsInChatActivity", false);
|
||||
editor.commit();
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@@ -5,9 +5,11 @@ import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Color;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.os.Bundle;
|
||||
import android.util.Base64;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
@@ -15,11 +17,12 @@ import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.InputStream;
|
||||
import java.net.Socket;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
@@ -31,6 +34,9 @@ import soapConnection.Packet;
|
||||
import soapConnection.SoapCalls;
|
||||
import soapConnection.SoapConnectionManager;
|
||||
|
||||
import util.SecurityUtils;
|
||||
import util.Util;
|
||||
|
||||
|
||||
public class MainActivityMitarbeiter extends Activity {
|
||||
|
||||
@@ -39,10 +45,8 @@ public class MainActivityMitarbeiter extends Activity {
|
||||
protected Button logoutbutton;
|
||||
|
||||
public static Socket socket;
|
||||
protected static final String dstAddress = SoapCalls.DESTINATION_ADDRESS;
|
||||
protected static final int dstPort = 5000;
|
||||
DataOutputStream dataOutputStream;
|
||||
public static BufferedReader in = null;
|
||||
// public static BufferedReader inputReader = null;
|
||||
|
||||
//Name, der Zum Server gesendet wird
|
||||
protected String name;
|
||||
@@ -55,7 +59,7 @@ public class MainActivityMitarbeiter extends Activity {
|
||||
File Unsendfile;
|
||||
|
||||
public static Thread listen;
|
||||
|
||||
public static SocketListener socketListener;
|
||||
|
||||
//Für Notification
|
||||
private static boolean isOnStop = false;
|
||||
@@ -139,7 +143,7 @@ public class MainActivityMitarbeiter extends Activity {
|
||||
public class OpenConnection implements Runnable{
|
||||
public void run(){
|
||||
try {
|
||||
socket = new Socket(dstAddress, dstPort);
|
||||
socket = new Socket(SoapCalls.DESTINATION_ADDRESS, SoapCalls.DESTINATION_PORT);
|
||||
|
||||
Log.d("OpenConnection","Verbindung hergestellt");
|
||||
SendAfterGetConnection();
|
||||
@@ -152,7 +156,8 @@ public class MainActivityMitarbeiter extends Activity {
|
||||
// dataOutputStream.flush();
|
||||
|
||||
// Starte SocketListener
|
||||
listen = new Thread(new SocketListener());
|
||||
socketListener = new SocketListener();
|
||||
listen = new Thread(socketListener);
|
||||
listen.start();
|
||||
|
||||
} catch (Exception e) {
|
||||
@@ -174,54 +179,60 @@ public class MainActivityMitarbeiter extends Activity {
|
||||
}
|
||||
}
|
||||
|
||||
public static void Test() {
|
||||
if(listen.isAlive()) {
|
||||
try {
|
||||
socketListener.terminate();
|
||||
listen.join();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class SocketListener implements Runnable {
|
||||
|
||||
String str;
|
||||
private volatile boolean running = true;
|
||||
|
||||
public void terminate() {
|
||||
running = false;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
while (true) {
|
||||
while (running) {
|
||||
if (socket != null) {
|
||||
if (socket.isConnected()) { //----------> isThreadPausabfrage das könnte das Problem mit dem SocketListener vorort beheben
|
||||
|
||||
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
Log.v("Connection Steht ", "Message Erhalten");
|
||||
String s = in.readLine();
|
||||
InputStream stream = socket.getInputStream();
|
||||
|
||||
String[] splitt = s.split(":");
|
||||
int size = stream.available();
|
||||
|
||||
str = s;
|
||||
|
||||
if (s == null) {
|
||||
break;
|
||||
if(size == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Calendar c = Calendar.getInstance();
|
||||
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
|
||||
String formattedDate = df.format(c.getTime());
|
||||
StringBuilder total = new StringBuilder(stream.available());
|
||||
|
||||
boolean determind = false;
|
||||
int counter = 0;
|
||||
|
||||
Log.v("MESSAGE",splitt[0]);
|
||||
CreateFile(splitt[0]);
|
||||
while(counter < size) {
|
||||
|
||||
Log.v("MESSAGE", "Komme ich in den Save-Bereich hinein");
|
||||
char c = (char) stream.read();
|
||||
|
||||
WriteMessagesfromStorage(splitt[1] + "/" + determind + "%" + formattedDate + "\n");
|
||||
total.append(c);
|
||||
|
||||
SetNotify(splitt[0], splitt[1]);
|
||||
|
||||
} else {
|
||||
if (in != null) {
|
||||
in.close();
|
||||
counter++;
|
||||
}
|
||||
|
||||
Log.i("MESSAGE/MAIN", "Empfangene Nachricht: " + total.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch(Exception e) {
|
||||
Log.v("Status ","Verbindung zum Server wurde serverseitig getrennt ");
|
||||
// Log.e(getClass().getName(),e.getMessage());
|
||||
in = null;
|
||||
Log.e("Listener/Main", "" + e);
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -238,13 +249,9 @@ public class MainActivityMitarbeiter extends Activity {
|
||||
socket.close();
|
||||
}
|
||||
|
||||
if(in != null) {
|
||||
in = null;
|
||||
}
|
||||
|
||||
Log.v("Status","Socket succesfully closed");
|
||||
Log.i("MAIN CONNECTION CLOSE","Socket succesfully closed");
|
||||
}catch(IOException se){
|
||||
Log.v("Fehler Aufgetreten",se.getMessage());
|
||||
Log.e("MAIN ERROR:", se.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -274,9 +281,14 @@ public class MainActivityMitarbeiter extends Activity {
|
||||
if(socket.isConnected()) {
|
||||
try {
|
||||
Packet p = new Packet();
|
||||
p.ChatName = SoapConnectionManager.User.getFullName();
|
||||
|
||||
SharedPreferences settings = getSharedPreferences(Util.PREFS_NAME, 0);
|
||||
|
||||
byte[] tenantByteArray = Base64.decode(settings.getString(Util.PREFS_TENANT_KEY, null), Base64.DEFAULT);
|
||||
ByteArrayInputStream tenantStream = new ByteArrayInputStream(tenantByteArray);
|
||||
|
||||
p.Tenant = SecurityUtils.decrypt(tenantStream).toString();
|
||||
p.ChatDataIdentifier = DataIdentifier.LOGIN;
|
||||
p.SenderPersonOid = SoapConnectionManager.User.getPersonOid().intValue();
|
||||
|
||||
new Thread(new TestMessageSender(p.GetDataStream())).start();
|
||||
} catch(Exception e) {
|
||||
|
||||
@@ -18,8 +18,6 @@ public class MessageAdapter extends ArrayAdapter<ChatMessageFormat> {
|
||||
private Activity activity;
|
||||
private List<ChatMessageFormat> messages;
|
||||
|
||||
|
||||
|
||||
public MessageAdapter(Activity context, int resource, List<ChatMessageFormat> objects) {
|
||||
super(context, resource, objects);
|
||||
this.activity = context;
|
||||
@@ -36,37 +34,21 @@ public class MessageAdapter extends ArrayAdapter<ChatMessageFormat> {
|
||||
ChatMessageFormat chatMessage = getItem(position);
|
||||
int viewType = getItemViewType(position);
|
||||
|
||||
|
||||
|
||||
//Splitt message um zu wissen ob from server oder nicht
|
||||
String line = chatMessage.getMessage();
|
||||
|
||||
String[] splitt = line.split(":");
|
||||
// String line = chatMessage.getMessage();
|
||||
|
||||
//Server nachricht kenntlich machen
|
||||
if (chatMessage.getIsME()) {
|
||||
layoutResource = R.layout.item_chat_right;
|
||||
} else if(splitt[0].equals("Server")) {
|
||||
layoutResource = R.layout.item_chat_sever_right;
|
||||
// } else if(splitt[0].equals("Server")) {
|
||||
// layoutResource = R.layout.item_chat_sever_right;
|
||||
}else {
|
||||
layoutResource = R.layout.item_chat_left;
|
||||
}
|
||||
|
||||
/* Original
|
||||
if (chatMessage.getIsME()) {
|
||||
layoutResource = R.layout.item_chat_left;
|
||||
} else {
|
||||
layoutResource = R.layout.item_chat_right;
|
||||
}
|
||||
*/
|
||||
/* if (convertView != null) {
|
||||
holder = (ViewHolder) convertView.getTag();
|
||||
Log.v("Status","Bin ich hier ?? ");
|
||||
} else {*/
|
||||
convertView = inflater.inflate(layoutResource, parent, false);
|
||||
holder = new ViewHolder(convertView);
|
||||
convertView.setTag(holder);
|
||||
//}
|
||||
|
||||
//set message content
|
||||
holder.msg.setText(chatMessage.getMessage());
|
||||
@@ -74,8 +56,9 @@ public class MessageAdapter extends ArrayAdapter<ChatMessageFormat> {
|
||||
|
||||
//TODO eine weitere option für Chatmessage hinzufügen zum abfragen wegen send Message
|
||||
|
||||
if(holder.send_tick != null)
|
||||
holder.send_tick.setText(Html.fromHtml("✓")+""+Html.fromHtml("✓"));
|
||||
if(holder.send_tick != null) {
|
||||
holder.send_tick.setText(Html.fromHtml("✓") + "" + Html.fromHtml("✓"));
|
||||
}
|
||||
|
||||
|
||||
if(chatMessage.getIsME()){
|
||||
|
||||
@@ -7,7 +7,8 @@ public enum DataIdentifier {
|
||||
MESSAGE(0),
|
||||
LOGIN(1),
|
||||
LOGOUT(2),
|
||||
NULL(3);
|
||||
NULL(3),
|
||||
STATUS_NOTIFICATION(4);
|
||||
|
||||
private final int value;
|
||||
DataIdentifier(int value) {
|
||||
@@ -17,4 +18,16 @@ public enum DataIdentifier {
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static DataIdentifier getEnumValue(int pValue) {
|
||||
DataIdentifier[] identifiers = DataIdentifier.values();
|
||||
|
||||
for (DataIdentifier identifier : identifiers) {
|
||||
if (identifier.getValue() == pValue) {
|
||||
return identifier;
|
||||
}
|
||||
}
|
||||
|
||||
return DataIdentifier.NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,13 @@ import android.util.Log;
|
||||
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
|
||||
/**
|
||||
* Created by JettenM on 05.07.2016.
|
||||
@@ -15,29 +21,73 @@ public class Packet {
|
||||
public int SenderPersonOid;
|
||||
public int RecipientPersonOid;
|
||||
public String ChatMessage;
|
||||
public Date MessageTimeStamp;
|
||||
public String Tenant;
|
||||
|
||||
public Packet() {
|
||||
ChatDataIdentifier = DataIdentifier.NULL;
|
||||
ChatMessage = null;
|
||||
ChatName = null;
|
||||
SenderPersonOid = 0;
|
||||
ChatMessage = "";
|
||||
ChatName = SoapConnectionManager.User.getFullName();
|
||||
Tenant = "";
|
||||
SenderPersonOid = SoapConnectionManager.User.getPersonOid().intValue();
|
||||
RecipientPersonOid = 0;
|
||||
|
||||
MessageTimeStamp = Calendar.getInstance().getTime();
|
||||
}
|
||||
|
||||
public String getFormattedMessageTimeStamp() {
|
||||
DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
|
||||
return df.format(MessageTimeStamp);
|
||||
}
|
||||
|
||||
public Packet(byte[] dataStream) {
|
||||
ChatDataIdentifier = DataIdentifier.values()[ByteBuffer.allocate(4).getInt()];
|
||||
//Aufbau Message:
|
||||
// die ersten fünf ";" ignorieren
|
||||
// SenderOid;RecipientOid;ClientNameLength;MessageLength;ChatDataIdentifier;Tenant;[ClientName][ChatMessage][MessageTimeStamp]
|
||||
|
||||
//23;281;20;389;1;[Tenant]; 6 Semikola
|
||||
|
||||
public Packet(String message) {
|
||||
String[] gesplittet = message.split(";");
|
||||
|
||||
String senderPersonOidString = gesplittet[0];
|
||||
String recipientPersonOidString = gesplittet[1];
|
||||
String chatNameLengthString = gesplittet[2];
|
||||
String chatMessageLengthString = gesplittet[3];
|
||||
String chatIdentifierString = gesplittet[4];
|
||||
Tenant = gesplittet[5];
|
||||
|
||||
SenderPersonOid = Integer.parseInt(senderPersonOidString);
|
||||
RecipientPersonOid = Integer.parseInt(recipientPersonOidString);
|
||||
|
||||
ChatDataIdentifier = DataIdentifier.getEnumValue(Integer.parseInt(chatIdentifierString));
|
||||
|
||||
int chatNameLength = Integer.parseInt(chatNameLengthString);
|
||||
int chatMessageLength = Integer.parseInt(chatMessageLengthString);
|
||||
|
||||
int headerLength = senderPersonOidString.length() + recipientPersonOidString.length() + chatNameLengthString.length() + chatMessageLengthString.length() + chatIdentifierString.length() + Tenant.length() + 7;
|
||||
String actualMessage = message.substring(headerLength - 1);
|
||||
|
||||
ChatName = actualMessage.substring(0, chatNameLength);
|
||||
|
||||
ChatMessage = actualMessage.substring(chatNameLength, chatMessageLength + chatNameLength);
|
||||
|
||||
String dateString = actualMessage.substring(chatMessageLength + chatNameLength);
|
||||
|
||||
DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss", Locale.GERMAN);
|
||||
try {
|
||||
MessageTimeStamp = df.parse(dateString);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] GetDataStream() {
|
||||
|
||||
String dataStreamAsString = "" + SenderPersonOid + ";" + RecipientPersonOid + ";" + ChatName.length() + ";" + ChatMessage.length() + ";";
|
||||
String dataStreamAsString = "" + SenderPersonOid + ";" + RecipientPersonOid + ";" + ChatName.length() + ";" + ChatMessage.length()+ ";" + ChatDataIdentifier.getValue() + ";" + Tenant + ";";
|
||||
|
||||
dataStreamAsString += ChatName + ChatMessage;
|
||||
dataStreamAsString += ChatName + ChatMessage + getFormattedMessageTimeStamp();
|
||||
|
||||
byte[] blaaah = new byte[1024];
|
||||
byte[] blaaah = new byte[dataStreamAsString.length()];
|
||||
|
||||
try {
|
||||
blaaah = dataStreamAsString.getBytes("UTF8");
|
||||
|
||||
@@ -9,6 +9,7 @@ public class SoapCalls {
|
||||
public static String GET_CONTACTS_FOR_PERSON = "GetContactsForPerson";
|
||||
|
||||
public static String DESTINATION_ADDRESS = "192.168.1.103";
|
||||
public static int DESTINATION_PORT = 5000;
|
||||
|
||||
public static String TOKEN_CHECK_URL = "http://" + DESTINATION_ADDRESS + "/bewoplanermobil/main/checktoken?token=";
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
android:id="@+id/editText"
|
||||
android:hint="@string/hinttxt_chat"
|
||||
android:padding="10dp"
|
||||
android:maxLength="1024"
|
||||
/>
|
||||
|
||||
<!-- width -> 300dp heigh -> 60dp android:layout_marginBottom="30dp" android:layout_marginBottom="30dp"
|
||||
|
||||
Reference in New Issue
Block a user