From 3f96055a6e4cee36a5844536c81aa930b9203985 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Wed, 30 Mar 2022 10:34:57 +0300 Subject: [PATCH] SD-211 - show all recordings and play them --- .../adapters/RecordingsGridViewAdapter.java | 62 ++--- .../database/DatabaseCommunication.java | 6 +- .../java/com/safemobile/lib/RecordMSG.java | 61 +++-- .../java/com/safemobile/lib/Recording.java | 18 +- .../com/safemobile/services/TCPhandler.java | 11 +- safeDispatch/src/main/AndroidManifest.xml | 1 - .../com/safemobile/lib/sound/AudioHandle.java | 6 +- .../safemobile/lib/sound/RecordingHandle.java | 4 +- .../safemobile/lib/sound/TCPaudioClient.java | 241 ++++++++---------- .../safedispatch/RecordingsActivity.java | 19 +- .../safedispatch/TabLayoutActivity.java | 98 +++++-- .../src/main/res/layout/dialog_login.xml | 6 +- 12 files changed, 283 insertions(+), 250 deletions(-) diff --git a/libSafeMobile/src/main/java/com/safemobile/adapters/RecordingsGridViewAdapter.java b/libSafeMobile/src/main/java/com/safemobile/adapters/RecordingsGridViewAdapter.java index d626ec5..2a97ae8 100644 --- a/libSafeMobile/src/main/java/com/safemobile/adapters/RecordingsGridViewAdapter.java +++ b/libSafeMobile/src/main/java/com/safemobile/adapters/RecordingsGridViewAdapter.java @@ -1,7 +1,6 @@ package com.safemobile.adapters; import android.app.Activity; -import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -11,7 +10,6 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.safemobile.activities.AbstractRecordingsActivity; -import com.safemobile.lib.AppParams; import com.safemobile.lib.R; import com.safemobile.lib.Recording; import com.safemobile.lib.SM; @@ -27,14 +25,12 @@ public class RecordingsGridViewAdapter extends BaseAdapter { private final ArrayList recordingExists; private final ArrayList playingPositions; private final Activity activity; - private final Context context; private final Hashtable hash = new Hashtable<>(); - public RecordingsGridViewAdapter(Activity activity, Context context, ArrayList listRecordings, ArrayList recordingExists) { + public RecordingsGridViewAdapter(Activity activity, ArrayList listRecordings, ArrayList recordingExists) { super(); this.activity = activity; - this.context = context; this.listRecordings = listRecordings; this.recordingExists = recordingExists; @@ -129,12 +125,12 @@ public class RecordingsGridViewAdapter extends BaseAdapter { if (convertView == null) { view = new ViewHolder(); convertView = layoutInflater.inflate(R.layout.row_recordings, null); - view.setLayoutRecording((LinearLayout) convertView.findViewById(R.id.layoutRecording)); - view.setImageViewPlay((ImageView) convertView.findViewById(R.id.imageViewPlay)); - view.setTextViewSender((TextView) convertView.findViewById(R.id.textViewSender)); - view.setTextViewDuration((TextView) convertView.findViewById(R.id.textViewDuration)); - view.setTextViewDate((TextView) convertView.findViewById(R.id.textViewDate)); - view.setImageViewRecycle((ImageView) convertView.findViewById(R.id.imageViewRecycle)); + view.setLayoutRecording(convertView.findViewById(R.id.layoutRecording)); + view.setImageViewPlay(convertView.findViewById(R.id.imageViewPlay)); + view.setTextViewSender(convertView.findViewById(R.id.textViewSender)); + view.setTextViewDuration(convertView.findViewById(R.id.textViewDuration)); + view.setTextViewDate(convertView.findViewById(R.id.textViewDate)); + view.setImageViewRecycle(convertView.findViewById(R.id.imageViewRecycle)); view.getImageViewRecycle().setVisibility(View.GONE); convertView.setTag(view); } else { @@ -155,25 +151,25 @@ public class RecordingsGridViewAdapter extends BaseAdapter { } /* change icon according to call type [outgoing or incoming] */ - SM.Exception("REC TYPE : " + listRecordings.get(position).type); - switch (listRecordings.get(position).type) { - case AppParams.AllCall: - if (listRecordings.get(position).destinationRadioID == 0) - view.getImageViewPlay().setImageResource(R.drawable.call_received_all); - else - view.getImageViewPlay().setImageResource(R.drawable.call_made_all); + SM.Exception("REC TYPE : " + listRecordings.get(position).callType); + switch (listRecordings.get(position).callType) { + case 6: + view.getImageViewPlay().setImageResource(R.drawable.call_received_all); break; - case AppParams.PrivateCall: - if (listRecordings.get(position).destinationRadioID == 0) - view.getImageViewPlay().setImageResource(R.drawable.call_received); - else - view.getImageViewPlay().setImageResource(R.drawable.call_made); + case 2: + view.getImageViewPlay().setImageResource(R.drawable.call_made_all); break; - case AppParams.GroupCall: - if (listRecordings.get(position).destinationRadioID == 0) - view.getImageViewPlay().setImageResource(R.drawable.call_received_group); - else - view.getImageViewPlay().setImageResource(R.drawable.call_made_group); + case 4: + view.getImageViewPlay().setImageResource(R.drawable.call_received); + break; + case 0: + view.getImageViewPlay().setImageResource(R.drawable.call_made); + break; + case 5: + view.getImageViewPlay().setImageResource(R.drawable.call_received_group); + break; + case 1: + view.getImageViewPlay().setImageResource(R.drawable.call_made_group); break; default: view.getImageViewPlay().setImageResource(R.drawable.alert); @@ -193,14 +189,8 @@ public class RecordingsGridViewAdapter extends BaseAdapter { ((AbstractRecordingsActivity) activity).deleteSelected(position); }); - // set recording image - if (getItem(position).NameForDisplay.equals(AppParams.USERNAME)) - view.getImageViewPlay().setImageDrawable(context.getResources().getDrawable(R.drawable.call_made_group)); - else - view.getImageViewPlay().setImageDrawable(context.getResources().getDrawable(R.drawable.call_received_group)); - - view.getTextViewSender().setText(getItem(position).NameForDisplay); - view.textViewDuration.setText("[" + getItem(position).duration + " sec]"); + view.getTextViewSender().setText(String.format("%s -> %s", getItem(position).userWhoCalled, getItem(position).userWhoWasCalled)); + view.textViewDuration.setText(String.format("[%d sec]", getItem(position).duration)); /* Add call Date */ Date date = new Date(); diff --git a/libSafeMobile/src/main/java/com/safemobile/database/DatabaseCommunication.java b/libSafeMobile/src/main/java/com/safemobile/database/DatabaseCommunication.java index 7049f6e..4fa1b11 100644 --- a/libSafeMobile/src/main/java/com/safemobile/database/DatabaseCommunication.java +++ b/libSafeMobile/src/main/java/com/safemobile/database/DatabaseCommunication.java @@ -285,7 +285,7 @@ public class DatabaseCommunication { while (cursor.isAfterLast() == false) { Recording rec = new Recording(); - rec.ID =cursor.getInt(0); + rec.id =cursor.getInt(0); rec.sourceRadioID = cursor.getInt(1); rec.destinationRadioID = cursor.getInt(2); rec.date = cursor.getInt(3); @@ -315,7 +315,7 @@ public class DatabaseCommunication { if(cursor.getCount() > 0) { Recording rec = new Recording(); - rec.ID =cursor.getInt(0); + rec.id =cursor.getInt(0); rec.sourceRadioID = cursor.getInt(1); rec.destinationRadioID = cursor.getInt(2); rec.date = cursor.getInt(3); @@ -364,7 +364,7 @@ public class DatabaseCommunication { values.put("duration", rec.duration); values.put("filename", rec.filename); values.put("type", rec.type); - id = database.delete("Recordings", "_id=" + rec.ID, null); + id = database.delete("Recordings", "_id=" + rec.id, null); SM.Debug("DBQuery","Database Remove result: " + id); } //INSERT into SMS (timeGMT, imei_sour, imei_dest, mess, status) VALUES( 1324016412, 0, 101, 'two', 1) diff --git a/libSafeMobile/src/main/java/com/safemobile/lib/RecordMSG.java b/libSafeMobile/src/main/java/com/safemobile/lib/RecordMSG.java index b4c4165..34c966e 100644 --- a/libSafeMobile/src/main/java/com/safemobile/lib/RecordMSG.java +++ b/libSafeMobile/src/main/java/com/safemobile/lib/RecordMSG.java @@ -4,36 +4,43 @@ import java.util.ArrayList; public class RecordMSG extends TCPmsg { - public ArrayList recordList; - public static int count=0; - public RecordMSG(TCPmsg tcp) - { - super(tcp); - recordList = new ArrayList(); + private ArrayList recordList; + + public RecordMSG(TCPmsg tcp) { + super(tcp); + setRecordList(new ArrayList<>()); String date4parsing = super.data; - //SM.Debug("SMS date4parsing:"+date4parsing); String[] tempArr = date4parsing.split(";"); - - //SM.Debug("SMS tempArr.length:" +tempArr.length); - for(int i =0; i getRecordList() { + return recordList; + } + + public void setRecordList(ArrayList recordList) { + this.recordList = recordList; } } diff --git a/libSafeMobile/src/main/java/com/safemobile/lib/Recording.java b/libSafeMobile/src/main/java/com/safemobile/lib/Recording.java index d7700b5..5b3ee63 100644 --- a/libSafeMobile/src/main/java/com/safemobile/lib/Recording.java +++ b/libSafeMobile/src/main/java/com/safemobile/lib/Recording.java @@ -1,15 +1,20 @@ package com.safemobile.lib; public class Recording { - public long ID; + public long id; public int startGMT; public int endGMT; public int gwID; public int radioGWID; + public int callType; + public int groupCpsId; + public int dispatcherId; public int subID; public int typeID; - public String NameForDisplay=""; - + public String userWhoCalled=""; + public String userWhoWasCalled = ""; + public String groupName = ""; + /** RadioPad */ public long date; public int duration; @@ -18,13 +23,8 @@ public class Recording { public long sourceRadioID; public int type; - public Recording() - { - - } - public String toString() { - return "ID: " + ID + " | start: " + startGMT + " | end: " + endGMT + " | gwID: " + gwID + " | radioGWID: " + radioGWID + " | subID: " + subID + " | typeID: " + typeID; + return "id: " + id + " | start: " + startGMT + " | end: " + endGMT + " | gwID: " + gwID + " | radioGWID: " + radioGWID + " | subID: " + subID + " | typeID: " + typeID; } } diff --git a/libSafeMobile/src/main/java/com/safemobile/services/TCPhandler.java b/libSafeMobile/src/main/java/com/safemobile/services/TCPhandler.java index f9416d4..bc89785 100644 --- a/libSafeMobile/src/main/java/com/safemobile/services/TCPhandler.java +++ b/libSafeMobile/src/main/java/com/safemobile/services/TCPhandler.java @@ -293,7 +293,7 @@ public class TCPhandler implements Runnable { /** * Send a message through the TCP Socket * - * @param seqID The messages's sequence ID (a number of order) + * @param seqID The messages's sequence id (a number of order) * @param msg The messages which will be sent * @return True if the message was sent */ @@ -310,7 +310,7 @@ public class TCPhandler implements Runnable { cmdok = "#" + Integer.toString(tmp) + cmdok; byte[] mess = encryptTEA(cmdok); - Thread gfgThread = new Thread(() -> { + Thread tcpThread = new Thread(() -> { try { output.write(mess); output.flush(); @@ -319,15 +319,14 @@ public class TCPhandler implements Runnable { } }); - gfgThread.start(); + tcpThread.start(); SM.Debug(" ", new String(mess)); return true; - //} catch (IOException e) { - // SM.Exception("TCPClient[Send]", e.toString()); } catch (InterruptedException e) { SM.Exception("TCPClient[Send]", e.toString()); + Thread.currentThread().interrupt(); } catch (NoSuchElementException e) { SM.Exception("TCPClient[Send]", e.toString()); } @@ -335,7 +334,7 @@ public class TCPhandler implements Runnable { return false; } } catch (Exception e) { - SM.Debug("TCPhandler Write Procedure:" + e.toString()); + SM.Debug("TCPhandler Write Procedure:" + e); } return false; } diff --git a/safeDispatch/src/main/AndroidManifest.xml b/safeDispatch/src/main/AndroidManifest.xml index db92082..23f0048 100644 --- a/safeDispatch/src/main/AndroidManifest.xml +++ b/safeDispatch/src/main/AndroidManifest.xml @@ -45,7 +45,6 @@ android:name="com.safemobile.safedispatch.SDMobileActivity" android:configChanges="orientation" android:exported="true" - android:label="@string/app_name_demo" android:screenOrientation="landscape"> diff --git a/safeDispatch/src/main/java/com/safemobile/lib/sound/AudioHandle.java b/safeDispatch/src/main/java/com/safemobile/lib/sound/AudioHandle.java index 12bbd55..a164224 100644 --- a/safeDispatch/src/main/java/com/safemobile/lib/sound/AudioHandle.java +++ b/safeDispatch/src/main/java/com/safemobile/lib/sound/AudioHandle.java @@ -22,7 +22,7 @@ public class AudioHandle implements Runnable{ private DataOutputStream outData =null; private Thread t_micListner; private UDPclient udp; - private TCPaudioClient tcp; + private TcpAudioClient tcp; private int audioport = 50001; public int typeUDP; @@ -56,7 +56,7 @@ public class AudioHandle implements Runnable{ else { try { - tcp = new TCPaudioClient(IP,audioport); + tcp = new TcpAudioClient(IP,audioport); bufferSize = AudioTrack.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); @@ -155,7 +155,7 @@ public class AudioHandle implements Runnable{ /* tempBuffer = new byte[16384];//128];//invers3.bufferSize]; bRead = recDev.read(tempBuffer, 0,16384);// 128);//invers3.bufferSize);*/ - tcp.Send(tempBuffer,bRead); + tcp.send(tempBuffer,bRead); SM.Debug("TCP sending b:"+bRead); } } diff --git a/safeDispatch/src/main/java/com/safemobile/lib/sound/RecordingHandle.java b/safeDispatch/src/main/java/com/safemobile/lib/sound/RecordingHandle.java index 844fd86..eaee66b 100644 --- a/safeDispatch/src/main/java/com/safemobile/lib/sound/RecordingHandle.java +++ b/safeDispatch/src/main/java/com/safemobile/lib/sound/RecordingHandle.java @@ -13,7 +13,7 @@ public class RecordingHandle { public RecordingHandle(String ip) { try { final int RECORDING_PORT = 50003; - TCPaudioClient tcp = new TCPaudioClient(ip, RECORDING_PORT); + TcpAudioClient tcp = new TcpAudioClient(ip, RECORDING_PORT); final int sampleRate = 8000; int bufferSize = AudioTrack.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); //init play device @@ -36,7 +36,7 @@ public class RecordingHandle { playDev.write(data, 0, data.length); playDev.play(); } else { - SM.Debug("Cannot play sound playDev NOT init corectly"); + SM.Debug("Cannot play sound playDev NOT init correctly"); } } } diff --git a/safeDispatch/src/main/java/com/safemobile/lib/sound/TCPaudioClient.java b/safeDispatch/src/main/java/com/safemobile/lib/sound/TCPaudioClient.java index 6ffb8a1..81d09f0 100644 --- a/safeDispatch/src/main/java/com/safemobile/lib/sound/TCPaudioClient.java +++ b/safeDispatch/src/main/java/com/safemobile/lib/sound/TCPaudioClient.java @@ -8,140 +8,108 @@ import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -public class TCPaudioClient implements Runnable{ -private boolean alive = true; - - public String serverHostname = new String ("10.120.1.114");// - private int port = 50001; +public class TcpAudioClient implements Runnable { + private boolean alive = true; + + private String serverHostname; + private final int port; private Thread listenThread; - private Socket soc =null; - + private Socket soc = null; + private InputStream recv; private OutputStream writer; - private volatile int n=0; - - public Boolean connOK=false; + private Boolean connOK = false; byte[] buffer = new byte[16384]; - private List _listeners = new ArrayList(); - - public TCPaudioClient(String hostName, int _port) - { - serverHostname=hostName; - this.port = _port; - SM.Debug("---TCPhandler construcort--- port:"+_port); - listenThread = new Thread(this, "TCPlisten"); + private final List listeners = new ArrayList<>(); + + public TcpAudioClient(String hostName, int port) { + setServerHostname(hostName); + this.port = port; + SM.Debug("---TcpHandler constructor--- port:" + port); + listenThread = new Thread(this, "TcpListen"); listenThread.start(); // (2) Start the thread. - + } - + @Override - public void run() - { - try - { - soc = new Socket(serverHostname, port); - SM.Debug("Socket timeout:" + soc.getSoTimeout() ); - //soc.setSoTimeout(5000); - recv= soc.getInputStream(); - writer =soc.getOutputStream() ; - if(soc !=null) - connOK = true; - - } - catch (UnknownHostException e) - { - SM.Debug("UnknownHostException", "break:"+e.toString()); - } - catch (IOException e) - { - SM.Debug("IOException", "break:"+e.toString()); + public void run() { + try { + soc = new Socket(getServerHostname(), port); + SM.Debug("Socket timeout:" + soc.getSoTimeout()); + recv = soc.getInputStream(); + writer = soc.getOutputStream(); + if (soc != null) + setConnOK(true); + + } catch (UnknownHostException e) { + SM.Debug("UnknownHostException", "break:" + e); + } catch (IOException e) { + SM.Debug("IOException", "break:" + e); } - - while(alive) - { + + while (alive) { try { Thread.sleep(3000); } catch (InterruptedException e) { - // TODO Auto-generated catch block SM.Debug(e.toString()); + Thread.currentThread().interrupt(); } - while(connOK) - { - try - { - buffer = new byte[16384]; - n = recv.read(buffer); - if(n==-1) + while (Boolean.TRUE.equals(getConnOK())) { + try { + buffer = new byte[16384]; + int n = recv.read(buffer); + if (n == -1) break; - _fireDataArrived(buffer,n); + fireDataArrived(buffer, n); + } catch (Exception ex) { + SM.Debug("break:" + ex); + setConnOK(false); } - catch(Exception ex) - { - SM.Debug("break:"+ex.toString()); - connOK = false; - } - }//while(connOK) - + } + try { Thread.sleep(3000); } catch (InterruptedException e) { - // TODO Auto-generated catch block SM.Debug(e.toString()); + Thread.currentThread().interrupt(); } - if(alive)RestartTCP(); - }//while(alive) + + if (alive) restartTCP(); + } SM.Debug("=================================="); - SM.Debug("TCP listenThread stoped!! alive = false"); + SM.Debug("TCP listenThread stopped!! alive = false"); SM.Debug("=================================="); } - - public boolean Send(byte[] data,int len) - { - - try - { - - if(writer != null) - { - writer.write(data,0,len); + + public boolean send(byte[] data, int len) { + + try { + + if (writer != null) { + writer.write(data, 0, len); return true; - } - else - { + } else { return false; } - } - catch (Exception e) - { - // TODO Auto-generated catch block + } catch (Exception e) { SM.Debug(e.toString()); } return false; } - - private void RestartTCP() - { - try - { - SM.Debug("Restarting TCP...ip:"+serverHostname); - soc = new Socket(serverHostname, port); - recv= soc.getInputStream(); - writer =soc.getOutputStream(); - if(soc !=null) - connOK = true; - - } - catch (UnknownHostException e) - { - SM.Debug("break:"+e.toString()); - } - catch (IOException e) - { - SM.Debug("break:"+e.toString()); + + private void restartTCP() { + try { + SM.Debug("Restarting TCP...ip:" + getServerHostname()); + soc = new Socket(getServerHostname(), port); + recv = soc.getInputStream(); + writer = soc.getOutputStream(); + setConnOK(true); + + } catch (IOException e) { + SM.Debug("break:" + e); } } @@ -152,44 +120,55 @@ private boolean alive = true; public void setAlive(boolean alive) { this.alive = alive; } - - public void Stop() - { - + + public void stop() { + this.alive = false; - if(soc !=null) - { + if (soc != null) { try { soc.close(); soc = null; } catch (IOException e) { - // TODO Auto-generated catch block - SM.Debug("break:"+e.toString()); + SM.Debug("break:" + e); } - connOK = false; + setConnOK(false); } // stop thread - if(listenThread != null) - { - Thread moribund = listenThread; - listenThread = null; - moribund.interrupt(); - } + if (listenThread != null) { + Thread moribund = listenThread; + listenThread = null; + moribund.interrupt(); + } } - - public synchronized void addTCPListener( ITCPaudioLis l ) { - _listeners.add( (ITCPaudioLis) l ); - } - - public synchronized void removeTCPListener( ITCPaudioLis l ) { - _listeners.remove( l ); + + public synchronized void addTCPListener(ITCPaudioLis l) { + listeners.add(l); } - - private synchronized void _fireDataArrived(byte[] data, int len) { - TCPaudioEvent event = new TCPaudioEvent( this, data, len ); - Iterator listeners = _listeners.iterator(); - while( listeners.hasNext() ) { - ( (ITCPaudioLis) listeners.next() ).dataRecv(event); - } + + public synchronized void removeTCPListener(ITCPaudioLis l) { + listeners.remove(l); } -} + + private synchronized void fireDataArrived(byte[] data, int len) { + TCPaudioEvent event = new TCPaudioEvent(this, data, len); + for (ITCPaudioLis listener : listeners) { + listener.dataRecv(event); + } + } + + public String getServerHostname() { + return serverHostname; + } + + public void setServerHostname(String serverHostname) { + this.serverHostname = serverHostname; + } + + public Boolean getConnOK() { + return connOK; + } + + public void setConnOK(Boolean connOK) { + this.connOK = connOK; + } +} \ No newline at end of file diff --git a/safeDispatch/src/main/java/com/safemobile/safedispatch/RecordingsActivity.java b/safeDispatch/src/main/java/com/safemobile/safedispatch/RecordingsActivity.java index 21dfec9..a13aba0 100644 --- a/safeDispatch/src/main/java/com/safemobile/safedispatch/RecordingsActivity.java +++ b/safeDispatch/src/main/java/com/safemobile/safedispatch/RecordingsActivity.java @@ -80,12 +80,12 @@ public class RecordingsActivity extends Activity { activity = this; // change tab header fontFace - TextView textView1 = (TextView) findViewById(R.id.textViewTitle); + TextView textView1 = findViewById(R.id.textViewTitle); textView1.setTypeface(Typeface.createFromAsset(getAssets(), "Sketch_Block.ttf")); textView1.setTextSize(24); - gridView = (GridView) findViewById(R.id.gridViewRecordings); - adapter = new RecordingsGridViewAdapter(activity, context, getAllRecordings(), playingPositions); + gridView = findViewById(R.id.gridViewRecordings); + adapter = new RecordingsGridViewAdapter(activity, getAllRecordings(), playingPositions); gridView.setAdapter(adapter); gridView.setOnItemClickListener(onItemClickListener); @@ -93,10 +93,10 @@ public class RecordingsActivity extends Activity { if (recHandle == null && !AppParams.DEMO) recHandle = new RecordingHandle(AppParams.IP); - textViewCount = (TextView) findViewById(R.id.textViewCount); + textViewCount = findViewById(R.id.textViewCount); updateNumberOfRecordings(); - textViewGateway = (TextView) findViewById(R.id.textViewGateway); + textViewGateway = findViewById(R.id.textViewGateway); textViewGateway.setTypeface(Typeface.createFromAsset(getAssets(), "Sketch_Block.ttf")); textViewGateway.setTextSize(24); textViewGateway.setOnClickListener(v -> { @@ -185,7 +185,7 @@ public class RecordingsActivity extends Activity { // if no recording is playing and not DEMO if (getPlayingPosition() < 0 && !AppParams.DEMO) { // send recording request to App Server - sendPlayRequest(getAllRecordings().get(position).ID); + sendPlayRequest(getAllRecordings().get(position).id); // flag that sound is needed recHandle.startSound(); recHandle.setSoundNeeded(true); @@ -272,10 +272,7 @@ public class RecordingsActivity extends Activity { public void updateRecordings(ArrayList list) { setAllRecordings(new ArrayList<>()); for (Recording rec : list) { - if (rec.typeID == 1 && rec.subID == AppParams.USERID) - getAllRecordings().add(rec); - else if (rec.typeID != 1) - getAllRecordings().add(rec); + getAllRecordings().add(rec); } myHandler.post(updateResultsRUN); } @@ -294,7 +291,7 @@ public class RecordingsActivity extends Activity { for (int i = 0; i < getAllRecordings().size(); i++) playingPositions.add(true); // set adapter - where playingPositions stores exists values - adapter = new RecordingsGridViewAdapter(activity, context, getAllRecordings(), playingPositions); + adapter = new RecordingsGridViewAdapter(activity, getAllRecordings(), playingPositions); // playing positions need to be false because no recording is played playingPositions.clear(); diff --git a/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java b/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java index 1b9a4fc..4a3a056 100644 --- a/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java +++ b/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java @@ -47,6 +47,7 @@ import com.safemobile.lib.SMSmsg; import com.safemobile.lib.SerializedObject; import com.safemobile.lib.SuperVehicle; import com.safemobile.lib.TCPmsg; +import com.safemobile.lib.User; import com.safemobile.lib.VehMSG; import com.safemobile.lib.Vehicle; import com.safemobile.lib.radio.RadioGW; @@ -402,7 +403,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { } } - SM.Debug("Logged user:" + AppParams.USERNAME + " | ID: " + AppParams.USERID); + SM.Debug("Logged user:" + AppParams.USERNAME + " | id: " + AppParams.USERID); // do not dim the display getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); @@ -633,7 +634,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { if (AppParams.DEMO && getRecordingsActivity() != null && getRecordingsActivity().getAllRecordings() != null && getRecordingsActivity().getAllRecordings().isEmpty()) { ArrayList listRecordings = new ArrayList<>(); Recording rec = new Recording(); - rec.NameForDisplay = "Rob"; + rec.userWhoWasCalled = "Rob"; rec.subID = 101; rec.endGMT = (int) Calendar.getInstance().getTime().getTime(); rec.startGMT = rec.endGMT - 2; @@ -641,7 +642,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { listRecordings.add(rec); rec = new Recording(); - rec.NameForDisplay = "Call1 [Rob]"; + rec.userWhoWasCalled = "Call1 [Rob]"; rec.subID = 102; rec.endGMT = (int) Calendar.getInstance().getTime().getTime(); rec.startGMT = rec.endGMT - 2; @@ -649,7 +650,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { listRecordings.add(rec); rec = new Recording(); - rec.NameForDisplay = "Call2 [Rob]"; + rec.userWhoWasCalled = "Call2 [Rob]"; rec.subID = 101; rec.endGMT = (int) Calendar.getInstance().getTime().getTime(); rec.startGMT = rec.endGMT - 3; @@ -1004,8 +1005,6 @@ public class TabLayoutActivity extends AbstractSDParentActivity { moribund.interrupt(); } - this.unregisterReceiver(mReceiver); - // unbound from tcp service if (isBound) { getApplicationContext().unbindService(serviceConnection); @@ -1359,7 +1358,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { SM.Debug("Got PlayRec :" + msg.allData); if (NO_SOUND) { - SM.Debug("Recording Play file ID:" + msg.data); + SM.Debug("Recording Play file id:" + msg.data); //list for SMS if (AppParams.crtTab == AppParams.Tabs.recordings) { @@ -1610,13 +1609,13 @@ public class TabLayoutActivity extends AbstractSDParentActivity { setAllRadios(radioMSG.RadioGWList); if (getCrtRadio() == null) { setCrtRadio(getAllRadios().get(0)); - SM.Debug("radioMSG set 0 crtRadio GW_ID:" + getCrtRadio().GW_ID + " ID:" + getCrtRadio().ID + ")"); + SM.Debug("radioMSG set 0 crtRadio GW_ID:" + getCrtRadio().GW_ID + " id:" + getCrtRadio().ID + ")"); notifyBroadcast(OperationCodes.RADIOID_CHANGED + ""); } } - // save crt Radio ID and GW + // save crt Radio id and GW if (radioMSG.zac != null) { for (RadioGW radio : getAllRadios()) { if (radio.GW_ID == radioMSG.zac.gwID && radio.ID == radioMSG.zac.rgwID) @@ -1717,19 +1716,76 @@ public class TabLayoutActivity extends AbstractSDParentActivity { //list for SMS if (AppParams.crtTab == AppParams.Tabs.recordings) { - for (Recording rec : recordMSG.recordList) { - // set the name to be displayed - if (rec.typeID == 1) - rec.NameForDisplay = AppParams.USERNAME; - else { - SuperVehicle superVehicle = getSuperVehHash().get((long) rec.subID); - if (superVehicle != null) - rec.NameForDisplay = superVehicle.name; + for (Recording rec : recordMSG.getRecordList()) { + SuperVehicle superVehicle = getSuperVehHash().get((long) rec.subID); + // set the name to be displayed + switch (rec.callType) { + case 0: + for (User u : AppParams.allUsers) { + if (u.id == rec.dispatcherId) + rec.userWhoCalled = u.login; + } + if (rec.userWhoCalled == null || rec.userWhoCalled.isEmpty()) + rec.userWhoCalled = String.valueOf(rec.dispatcherId); + + if (superVehicle != null) + rec.userWhoWasCalled = superVehicle.name; + else + rec.userWhoWasCalled = String.valueOf(rec.subID); + break; + case 4: + rec.userWhoWasCalled = AppParams.USERNAME; + if (superVehicle != null) + rec.userWhoCalled = superVehicle.name; + else + rec.userWhoCalled = String.valueOf(rec.subID); + break; + case 1: + for (User u : AppParams.allUsers) { + if (u.id == rec.dispatcherId) + rec.userWhoCalled = u.login; + } + if (rec.userWhoCalled == null || rec.userWhoCalled.isEmpty()) + rec.userWhoCalled = String.valueOf(rec.dispatcherId); + + if (rec.groupName == null || rec.groupName.isEmpty()) + rec.userWhoWasCalled = String.valueOf(rec.groupCpsId); + else + rec.userWhoWasCalled = rec.groupName; + break; + case 5: + if (superVehicle != null) + rec.userWhoCalled = superVehicle.name; + else + rec.userWhoCalled = String.valueOf(rec.subID); + + if (rec.groupName == null || rec.groupName.isEmpty()) + rec.userWhoWasCalled = String.valueOf(rec.groupCpsId); + else + rec.userWhoWasCalled = rec.groupName; + break; + case 2: + for (User u : AppParams.allUsers) { + if (u.id == rec.dispatcherId) + rec.userWhoCalled = u.login; + } + if (rec.userWhoCalled == null || rec.userWhoCalled.isEmpty()) + rec.userWhoCalled = String.valueOf(rec.dispatcherId); + + rec.userWhoWasCalled = "All Call"; + break; + case 6: + rec.userWhoWasCalled = "All Call"; + if (superVehicle != null) + rec.userWhoCalled = superVehicle.name; + else + rec.userWhoCalled = String.valueOf(rec.subID); + break; } } // save recordings to AppParams - AppParams.recordings = recordMSG.recordList; + AppParams.recordings = recordMSG.getRecordList(); // notify recordings were received notifyBroadcast(OperationCodes.RECORDINGS_LIST_REP + ""); @@ -2322,4 +2378,10 @@ public class TabLayoutActivity extends AbstractSDParentActivity { this.startActivity(intent); } } + + @Override + protected void onDestroy() { + super.onDestroy(); + this.unregisterReceiver(mReceiver); + } } diff --git a/safeDispatch/src/main/res/layout/dialog_login.xml b/safeDispatch/src/main/res/layout/dialog_login.xml index 681d913..95b8f57 100644 --- a/safeDispatch/src/main/res/layout/dialog_login.xml +++ b/safeDispatch/src/main/res/layout/dialog_login.xml @@ -11,7 +11,7 @@ android:paddingTop="2dp" android:text="TITLE" android:textAppearance="?android:attr/textAppearanceLarge" - android:textColor="#FFFFFF" + android:textColor="@color/black" />