Merge pull request 'features/SD-188-Create_Permission_module_and_request_audio' (#11) from features/SD-188-Create_Permission_module_and_request_audio into develop

Reviewed-on: #11
Reviewed-by: Adriana <adriana.epure@safemobile.com>
This commit is contained in:
Bogdan Ungureanu 2022-03-24 16:59:12 +00:00
commit e80272e0a4
24 changed files with 1864 additions and 1652 deletions

View File

@ -0,0 +1,10 @@
package com.safemobile.enums;
public enum AuthorizationCode {
UNKNOWN,
RECORD_AUDIO,
CAMERA,
GEOLOCATION,
READ_EXTERNAL_STORAGE,
WRITE_EXTERNAL_STORAGE
}

View File

@ -0,0 +1,7 @@
package com.safemobile.enums;
public enum AuthorizationStatus {
AUTHORIZE,
DENIED,
NOT_DETERMINED
}

View File

@ -0,0 +1,6 @@
package com.safemobile.enums;
public enum ProviderSettingsStatus {
APPLICATION_DETAILS,
SETTINGS
}

View File

@ -0,0 +1,37 @@
package com.safemobile.helpers;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.provider.Settings;
import com.safemobile.enums.ProviderSettingsStatus;
public class ProviderSettingsHelper {
public static final String PACKAGE = "package";
public static final String ACTION_APPLICATION_DETAILS_SETTINGS = Settings.ACTION_APPLICATION_DETAILS_SETTINGS;
public static final String ACTION_SETTINGS = Settings.ACTION_SETTINGS;
private ProviderSettingsHelper() {
}
public static String getAction(ProviderSettingsStatus providerSettingsStatus) {
switch (providerSettingsStatus) {
case APPLICATION_DETAILS:
return ACTION_APPLICATION_DETAILS_SETTINGS;
case SETTINGS:
default:
return ACTION_SETTINGS;
}
}
public static boolean canHandleAction(Context context, String action) {
Intent intent = new Intent(action);
Uri uri = Uri.fromParts(PACKAGE, context.getPackageName(), null);
intent.setData(uri);
return context.getPackageManager() != null && intent.resolveActivity(context.getPackageManager()) != null;
}
}

View File

@ -0,0 +1,12 @@
package com.safemobile.interfaces;
import android.app.Activity;
import com.google.android.gms.tasks.Task;
public interface IDialogService {
Task<Boolean> showDialog(Activity activity, String title, String message, String cancel, String ok);
Task<Boolean> showPermissionRequestDialog(Activity activity, String message, String cancel);
void showError(Activity activity, String message);
}

View File

@ -0,0 +1,11 @@
package com.safemobile.interfaces;
import android.app.Activity;
import com.safemobile.enums.AuthorizationCode;
import com.safemobile.enums.AuthorizationStatus;
public interface IPermissionModule {
AuthorizationStatus getAuthorizationStatus(Activity activity, AuthorizationCode authorizationCode);
void requestAuthorization(Activity activity, AuthorizationCode authorizationCode);
}

View File

@ -16,7 +16,7 @@ public interface ITCPListener {
public void onHistoryPositionsCountReceived( TCPEvent event ); public void onHistoryPositionsCountReceived( TCPEvent event );
public void onAlarmsReceived( TCPEvent event ); public void onAlarmsReceived( TCPEvent event );
public void onAlarmAckReceived(TCPEvent event); public void onAlarmAckReceived(TCPEvent event);
public void alarmLiveRecv(TCPEvent event); public void alarmLiveReceived(TCPEvent event);
public void onRecordingPlayReceived(TCPEvent event); public void onRecordingPlayReceived(TCPEvent event);
public void onPollReceived(TCPEvent event); public void onPollReceived(TCPEvent event);
@ -27,7 +27,7 @@ public interface ITCPListener {
public void onRecordingsListReceived(TCPEvent event); public void onRecordingsListReceived(TCPEvent event);
public void onPONGReceived(); public void onPONGReceived();
public void onTCPConnectionDown(boolean previuosWasConnectionUp); public void onTCPConnectionDown(boolean previousWasConnectionUp);
public void onTCPConnectionUp(boolean previuosWasConnectionUp); public void onTCPConnectionUp(boolean previousWasConnectionUp);
public void onTCPConnectionStatusReceived(boolean isConnectionUp, boolean previuosWasConnectionUp); public void onTCPConnectionStatusReceived(boolean isConnectionUp, boolean previousWasConnectionUp);
} }

View File

@ -27,7 +27,7 @@ public class AppParams {
/* SafeMobile Dispatch */ /* SafeMobile Dispatch */
public static ArrayList<User> allUsers = new ArrayList<User>(); public static ArrayList<User> allUsers = new ArrayList<User>();
public static Theme theme = Theme.SAFENET; // the Theme type public static Theme theme = Theme.SAFEDISPATCH; // the Theme type
/* ***************************************** */ /* ***************************************** */

View File

@ -10,7 +10,6 @@ import com.safemobile.interfaces.TCPEvent;
import com.safemobile.lib.OperationCodes; import com.safemobile.lib.OperationCodes;
import com.safemobile.lib.SM; import com.safemobile.lib.SM;
import com.safemobile.lib.TCPmsg; import com.safemobile.lib.TCPmsg;
import com.safemobile.services.TCPhandler;
public class TCPmsgParser implements Runnable{ public class TCPmsgParser implements Runnable{
@ -150,7 +149,7 @@ public class TCPmsgParser implements Runnable{
TCPEvent event = new TCPEvent( this, _msg ); TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator(); Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) { while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).alarmLiveRecv(event); ( (ITCPListener) listeners.next() ).alarmLiveReceived(event);
} }
} }

View File

@ -7,13 +7,15 @@
android:glEsVersion="0x00020000" android:glEsVersion="0x00020000"
android:required="true" /> android:required="true" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" android:required="false"/>
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera" />
<uses-feature <uses-feature

View File

@ -0,0 +1,50 @@
package com.safemobile.lib;
import android.app.Activity;
import android.app.AlertDialog;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.TaskCompletionSource;
import com.safemobile.safedispatch.R;
import com.safemobile.interfaces.IDialogService;
public class DialogService implements IDialogService {
@Override
public Task<Boolean> showDialog(Activity activity, String title, String message, String cancel, String ok) {
TaskCompletionSource<Boolean> taskCompletionSource = new TaskCompletionSource<>();
AlertDialog.Builder builder = new AlertDialog.Builder(activity)
.setTitle(title)
.setMessage(message)
.setCancelable(false)
.setNegativeButton(cancel, (dialog, which) -> {
taskCompletionSource.trySetResult(false);
dialog.dismiss();
})
.setPositiveButton(ok, (dialog, which) -> taskCompletionSource.trySetResult(true));
AlertDialog dialog = builder.create();
dialog.show();
return taskCompletionSource.getTask();
}
@Override
public Task<Boolean> showPermissionRequestDialog(Activity activity, String message, String cancel) {
return showDialog(
activity,
activity.getString(R.string.permission_denied),
message,
cancel,
activity.getString(R.string.go_to_settings));
}
@Override
public void showError(Activity activity, String message) {
showDialog(
activity,
activity.getString(R.string.DialogService_Info_ErrorMessage),
message,
null,
activity.getString(R.string.ok));
}
}

View File

@ -0,0 +1,97 @@
package com.safemobile.lib;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.safemobile.enums.AuthorizationCode;
import com.safemobile.enums.AuthorizationStatus;
import com.safemobile.interfaces.IPermissionModule;
import java.security.InvalidParameterException;
public class PermissionModule implements IPermissionModule {
private static final String[] AUDIO_PERMISSIONS = {Manifest.permission.RECORD_AUDIO};
private static final String[] LOCATION_PERMISSIONS = {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
};
private static final String[] CAMERA_PERMISSIONS = {Manifest.permission.CAMERA};
private static final String[] READ_EXTERNAL_STORAGE_PERMISSIONS = {Manifest.permission.READ_EXTERNAL_STORAGE};
private static final String[] WRITE_EXTERNAL_STORAGE_PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
public static final int RECORD_AUDIO_PERMISSION_REQUEST_CODE = 13042022;
public static final int LOCATION_PERMISSION_REQUEST_CODE = 12021990;
public static final int CAMERA_PERMISSION_REQUEST_CODE = 16031989;
public static final int READ_STORAGE_PERMISSION_REQUEST_CODE = 30062018;
public static final int WRITE_STORAGE_PERMISSION_REQUEST_CODE = 13122012;
private boolean permissionPrompShowed;
@Override
public AuthorizationStatus getAuthorizationStatus(Activity activity, AuthorizationCode authorizationCode) {
switch (authorizationCode) {
case RECORD_AUDIO:
return getPermissionAuthorizationStatus(activity, Manifest.permission.RECORD_AUDIO);
case CAMERA:
return getPermissionAuthorizationStatus(activity, Manifest.permission.CAMERA);
case GEOLOCATION:
return getPermissionAuthorizationStatus(activity, Manifest.permission.ACCESS_COARSE_LOCATION);
case READ_EXTERNAL_STORAGE:
return getPermissionAuthorizationStatus(activity, Manifest.permission.READ_EXTERNAL_STORAGE);
case WRITE_EXTERNAL_STORAGE:
return getPermissionAuthorizationStatus(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
case UNKNOWN:
throw new InvalidParameterException(authorizationCode.name());
default:
throw new IllegalArgumentException(authorizationCode.name());
}
}
@Override
public void requestAuthorization(Activity activity, AuthorizationCode authorizationCode) {
switch (authorizationCode) {
case RECORD_AUDIO:
ActivityCompat.requestPermissions(activity, AUDIO_PERMISSIONS, RECORD_AUDIO_PERMISSION_REQUEST_CODE);
break;
case CAMERA:
ActivityCompat.requestPermissions(activity, CAMERA_PERMISSIONS, CAMERA_PERMISSION_REQUEST_CODE);
break;
case GEOLOCATION:
ActivityCompat.requestPermissions(activity, LOCATION_PERMISSIONS, LOCATION_PERMISSION_REQUEST_CODE);
break;
case READ_EXTERNAL_STORAGE:
ActivityCompat.requestPermissions(activity, READ_EXTERNAL_STORAGE_PERMISSIONS, READ_STORAGE_PERMISSION_REQUEST_CODE);
break;
case WRITE_EXTERNAL_STORAGE:
ActivityCompat.requestPermissions(activity, WRITE_EXTERNAL_STORAGE_PERMISSIONS, WRITE_STORAGE_PERMISSION_REQUEST_CODE);
break;
case UNKNOWN:
throw new InvalidParameterException(authorizationCode.name());
default:
throw new IllegalArgumentException(authorizationCode.name());
}
permissionPrompShowed = true;
}
private AuthorizationStatus getPermissionAuthorizationStatus(Activity activity, String permission) {
int permissionState = ContextCompat.checkSelfPermission(activity.getApplicationContext(), permission);
return authorizationStatus(activity, permissionState);
}
private AuthorizationStatus authorizationStatus(Activity activity, int permissionState) {
if (permissionState == PackageManager.PERMISSION_GRANTED)
return AuthorizationStatus.AUTHORIZE;
if (!permissionPrompShowed)
return AuthorizationStatus.NOT_DETERMINED;
boolean shouldShowPermissionPrompt = ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.ACCESS_COARSE_LOCATION);
return shouldShowPermissionPrompt ? AuthorizationStatus.NOT_DETERMINED : AuthorizationStatus.DENIED;
}
}

View File

@ -76,7 +76,7 @@ public class AlarmActivity extends Activity {
textView1.setTypeface(Typeface.createFromAsset(getAssets(), "Sketch_Block.ttf")); textView1.setTypeface(Typeface.createFromAsset(getAssets(), "Sketch_Block.ttf"));
textView1.setTextSize(24); textView1.setTextSize(24);
getParentTab().alarmActivity = this; getParentTab().setAlarmActivity(this);
} }
@Override @Override

View File

@ -60,7 +60,7 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
setContentView(R.layout.tabhistory); setContentView(R.layout.tabhistory);
parentTab = (TabLayoutActivity) getParent(); parentTab = (TabLayoutActivity) getParent();
parentTab.historyActivity = this; parentTab.setHistoryActivity(this);
Locale locale = new Locale(AppParams.LANGUAGETMP); Locale locale = new Locale(AppParams.LANGUAGETMP);
Locale.setDefault(locale); Locale.setDefault(locale);
@ -85,17 +85,17 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
displayButton.setOnClickListener(view -> { displayButton.setOnClickListener(view -> {
googleMap.clear(); googleMap.clear();
if (!AppParams.DEMO) { if (!AppParams.DEMO) {
parentTab.dropAllData =false; parentTab.setDropAllData(false);
parentTab.firstHistData = true; parentTab.setFirstHistoryData(true);
parentTab.HistMsgList.clear(); parentTab.clearHistoryMessageList();
parentTab.HistPosList.clear(); parentTab.clearHistoryPositionList();
// request history // request history
parentTab.executeNetworkStuff(new String[] {OperationCodes.GetHistoryPositions + "", allVehicle.get(spinnerVehicle.getSelectedItemPosition()).sc_id + "", parentTab.executeNetworkStuff(new String[] {OperationCodes.GetHistoryPositions + "", allVehicle.get(spinnerVehicle.getSelectedItemPosition()).sc_id + "",
(startDate.getTime()/ 1000L) + "", (endDate.getTime()/ 1000L) + ""}); (startDate.getTime()/ 1000L) + "", (endDate.getTime()/ 1000L) + ""});
} else { } else {
parentTab.demoPositionsList(); parentTab.demoPositionsList();
displayHistory(parentTab.demoPositions); displayHistory(parentTab.getDemoPositions());
} }
}); });
@ -204,10 +204,10 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
final Runnable UpdateMapResults = new Runnable() { final Runnable UpdateMapResults = new Runnable() {
public void run() { public void run() {
Log.v("updateMap", parentTab.HistPosList.toString()); Log.v("updateMap", parentTab.getHistoryPositionList().toString());
SM.Debug("Do the Display"); SM.Debug("Do the Display");
infoBubble.setHistoryPositions(parentTab.HistPosList); infoBubble.setHistoryPositions(parentTab.getHistoryPositionList());
displayHistory(parentTab.HistPosList); displayHistory(parentTab.getHistoryPositionList());
} }
}; };

View File

@ -112,7 +112,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
// get parentTab // get parentTab
setParentTab((AbstractSDParentActivity) getParent()); setParentTab((AbstractSDParentActivity) getParent());
try { try {
((TabLayoutActivity) getParentTab()).liveActivity = this; ((TabLayoutActivity) getParentTab()).setLiveActivity(this);
} catch (Exception ignored) { } catch (Exception ignored) {
// ignored // ignored
} }

View File

@ -215,7 +215,7 @@ public class MessagesActivity extends Activity {
gridView.setId(1); // id needed for IconContextMenu gridView.setId(1); // id needed for IconContextMenu
registerForContextMenu(gridView); registerForContextMenu(gridView);
parentTab.messageActivity = this; parentTab.setMessageActivity(this);
} }
// Create runnable for posting // Create runnable for posting

View File

@ -236,7 +236,7 @@ public class RadioActivity extends Activity {
} }
// send current activity to parrent // send current activity to parrent
parentTab.radioActivity = this; parentTab.setRadioActivity(this);
// register to be notified when an event is triggered // register to be notified when an event is triggered
registerBroadcastIntents(); registerBroadcastIntents();
@ -315,10 +315,10 @@ public class RadioActivity extends Activity {
if(!pttONoff) if(!pttONoff)
{ {
String chanMsg = "", statMsg = ""; String chanMsg = "", statMsg = "";
if(parentTab.crtRadio!= null) if(parentTab.getCrtRadio() != null)
SendPTT(selectedCallType, selectedID,parentTab.crtRadio.GW_ID, parentTab.crtRadio.ID,AppParams.USERID); SendPTT(selectedCallType, selectedID, parentTab.getCrtRadio().GW_ID, parentTab.getCrtRadio().ID,AppParams.USERID);
// flag in Call // flag in Call
parentTab.inCall = true; parentTab.setInCall(true);
pttONoff= true; pttONoff= true;
if(audioH!=null) if(audioH!=null)
audioH.soundNeeded = true; audioH.soundNeeded = true;
@ -381,7 +381,7 @@ public class RadioActivity extends Activity {
{ {
String chanMsg = "", statMsg = ""; String chanMsg = "", statMsg = "";
if(!AppParams.DEMO) if(!AppParams.DEMO)
SendPTT(selectedCallType+10, 1,parentTab.crtRadio.GW_ID, parentTab.crtRadio.ID,AppParams.USERID); SendPTT(selectedCallType+10, 1, parentTab.getCrtRadio().GW_ID, parentTab.getCrtRadio().ID,AppParams.USERID);
pttONoff= false; pttONoff= false;
if(audioH!=null) if(audioH!=null)
audioH.soundNeeded = false; audioH.soundNeeded = false;
@ -417,7 +417,7 @@ public class RadioActivity extends Activity {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if(parentTab.crtRadio!=null) if(parentTab.getCrtRadio() !=null)
{ {
// display dialog with adapter // display dialog with adapter
ArrayList<String> tmp = new ArrayList<String>(); ArrayList<String> tmp = new ArrayList<String>();
@ -438,7 +438,7 @@ public class RadioActivity extends Activity {
//textViewChannel.setText(crtChannels.get(which).chName); //textViewChannel.setText(crtChannels.get(which).chName);
// send change to App // send change to App
onZoneCHChange(parentTab.crtRadio.ID, parentTab.crtRadio.GW_ID, getNR4Zone(textViewZone.getText().toString()), getNR4CH(crtChannels.get(which).chName)); onZoneCHChange(parentTab.getCrtRadio().ID, parentTab.getCrtRadio().GW_ID, getNR4Zone(textViewZone.getText().toString()), getNR4CH(crtChannels.get(which).chName));
} }
}); });
@ -492,7 +492,7 @@ public class RadioActivity extends Activity {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if(parentTab.crtRadio!=null) if(parentTab.getCrtRadio() !=null)
{ {
// display dialog with adapter // display dialog with adapter
ArrayList<String> tmp = new ArrayList<String>(); ArrayList<String> tmp = new ArrayList<String>();
@ -511,7 +511,7 @@ public class RadioActivity extends Activity {
// send change to App // send change to App
//onZoneCHChange(parentTab.crtRadio.ID, parentTab.crtRadio.GW_ID, getNR4Zone(crtZones.get(which).ZoneName), getNR4CH(textViewChannel.getText().toString())); //onZoneCHChange(parentTab.crtRadio.ID, parentTab.crtRadio.GW_ID, getNR4Zone(crtZones.get(which).ZoneName), getNR4CH(textViewChannel.getText().toString()));
onZoneCHChange(parentTab.crtRadio.ID, parentTab.crtRadio.GW_ID, getNR4Zone(crtZones.get(which).ZoneName), 1); onZoneCHChange(parentTab.getCrtRadio().ID, parentTab.getCrtRadio().GW_ID, getNR4Zone(crtZones.get(which).ZoneName), 1);
} }
}); });
@ -560,7 +560,7 @@ public class RadioActivity extends Activity {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if(parentTab.crtRadio!=null) if(parentTab.getCrtRadio() !=null)
{ {
// create spinner selected // create spinner selected
AlertDialog.Builder builder = new AlertDialog.Builder(context); AlertDialog.Builder builder = new AlertDialog.Builder(context);
@ -686,17 +686,17 @@ public class RadioActivity extends Activity {
{ {
// save radios // save radios
AppParams.listRadios = radios; AppParams.listRadios = radios;
if(parentTab.crtRadio == null) if(parentTab.getCrtRadio() == null)
parentTab.crtRadio = AppParams.listRadios.get(0); parentTab.setCrtRadio(AppParams.listRadios.get(0));
// if crtRadio not exists anymore // if crtRadio not exists anymore
if(!AppParams.listRadios.contains(parentTab.crtRadio)) if(!AppParams.listRadios.contains(parentTab.getCrtRadio()))
parentTab.crtRadio = AppParams.listRadios.get(0); parentTab.setCrtRadio(AppParams.listRadios.get(0));
SM.Debug(parentTab.crtRadio.toString()); SM.Debug(parentTab.getCrtRadio().toString());
// get status for selected Radio // get status for selected Radio
ReqRadioStatus(parentTab.crtRadio.ID, parentTab.crtRadio.GW_ID); ReqRadioStatus(parentTab.getCrtRadio().ID, parentTab.getCrtRadio().GW_ID);
// get selected Zone and CH // get selected Zone and CH
onZoneCHChange(parentTab.crtRadio.ID, parentTab.crtRadio.GW_ID, 0,0); onZoneCHChange(parentTab.getCrtRadio().ID, parentTab.getCrtRadio().GW_ID, 0,0);
myHandler.post(updateGatewaysRUN); myHandler.post(updateGatewaysRUN);
} }
@ -716,7 +716,7 @@ public class RadioActivity extends Activity {
allGWsIP.clear(); allGWsIP.clear();
for(RadioGW radio: AppParams.listRadios) for(RadioGW radio: AppParams.listRadios)
allGWsIP.add(radio.IP); allGWsIP.add(radio.IP);
textViewGateway.setText(parentTab.crtRadio.IP); textViewGateway.setText(parentTab.getCrtRadio().IP);
} }
@ -743,20 +743,20 @@ public class RadioActivity extends Activity {
SM.Debug("am primit: " + _radioID + "," + _GWID + "," + _zoneNR + "," + _chNR); SM.Debug("am primit: " + _radioID + "," + _GWID + "," + _zoneNR + "," + _chNR);
if ((parentTab.crtRadio == null)||((parentTab.crtRadio.GW_ID == _GWID)&&(parentTab.crtRadio.ID == _radioID))) if ((parentTab.getCrtRadio() == null)||((parentTab.getCrtRadio().GW_ID == _GWID)&&(parentTab.getCrtRadio().ID == _radioID)))
{ {
// update crtRadios, crtZones, and crtChannel // update crtRadios, crtZones, and crtChannel
for(RadioGW radio: AppParams.listRadios) for(RadioGW radio: AppParams.listRadios)
if(radio.GW_ID == _GWID && radio.ID == _radioID) if(radio.GW_ID == _GWID && radio.ID == _radioID)
{ {
parentTab.crtRadio = radio; parentTab.setCrtRadio(radio);
crtZones = radio.zoneList; crtZones = radio.zoneList;
cmdForMe = true; cmdForMe = true;
} }
} }
if (cmdForMe) if (cmdForMe)
{ {
for(Zone zone: parentTab.crtRadio.zoneList) for(Zone zone: parentTab.getCrtRadio().zoneList)
if(zone.id == _zoneNR) if(zone.id == _zoneNR)
crtChannels = zone.channelList; crtChannels = zone.channelList;
// update UI // update UI
@ -776,7 +776,7 @@ public class RadioActivity extends Activity {
if(AppParams.listRadios.size()>0) if(AppParams.listRadios.size()>0)
{ {
textViewGateway.setText(parentTab.crtRadio.IP); textViewGateway.setText(parentTab.getCrtRadio().IP);
// get all radio IP // get all radio IP
allGWsIP.clear(); allGWsIP.clear();
@ -784,13 +784,13 @@ public class RadioActivity extends Activity {
allGWsIP.add(radio.IP); allGWsIP.add(radio.IP);
// set spinners and text // set spinners and text
if(parentTab.crtRadio == null) if(parentTab.getCrtRadio() == null)
{ {
parentTab.crtRadio = AppParams.listRadios.get(0); parentTab.setCrtRadio(AppParams.listRadios.get(0));
textViewGateway.setText(allGWsIP.get(0)); textViewGateway.setText(allGWsIP.get(0));
// set zone // set zone
ArrayList<String> zones = new ArrayList<String>(); ArrayList<String> zones = new ArrayList<String>();
crtZones = parentTab.crtRadio.zoneList; crtZones = parentTab.getCrtRadio().zoneList;
for(Zone zone: crtZones) for(Zone zone: crtZones)
zones.add(zone.ZoneName); zones.add(zone.ZoneName);
@ -799,7 +799,7 @@ public class RadioActivity extends Activity {
//spinnerZone.setSelection(0); //spinnerZone.setSelection(0);
// set channel // set channel
ArrayList<String> channel = new ArrayList<String>(); ArrayList<String> channel = new ArrayList<String>();
crtChannels = parentTab.crtRadio.zoneList.get(0).channelList; crtChannels = parentTab.getCrtRadio().zoneList.get(0).channelList;
for(Channel ch: crtChannels) for(Channel ch: crtChannels)
channel.add(ch.chName); channel.add(ch.chName);
textViewChannel.setText(channel.get(0).toString()); textViewChannel.setText(channel.get(0).toString());
@ -811,10 +811,10 @@ public class RadioActivity extends Activity {
{ {
for(RadioGW radio: AppParams.listRadios) for(RadioGW radio: AppParams.listRadios)
if(radio.ID == radioID && radio.GW_ID == GWID) if(radio.ID == radioID && radio.GW_ID == GWID)
parentTab.crtRadio = radio; parentTab.setCrtRadio(radio);
// get zones for adapter // get zones for adapter
ArrayList<String> zones = new ArrayList<String>(); ArrayList<String> zones = new ArrayList<String>();
crtZones = parentTab.crtRadio.zoneList; crtZones = parentTab.getCrtRadio().zoneList;
int position = 0; int position = 0;
// get selected Zone // get selected Zone
for(int i=0; i< crtZones.size(); i++) for(int i=0; i< crtZones.size(); i++)
@ -828,7 +828,7 @@ public class RadioActivity extends Activity {
// set channel // set channel
ArrayList<String> channel = new ArrayList<String>(); ArrayList<String> channel = new ArrayList<String>();
crtChannels = parentTab.crtRadio.zoneList.get(position).channelList; crtChannels = parentTab.getCrtRadio().zoneList.get(position).channelList;
position = 0; position = 0;
// get current channel // get current channel
for(int i=0; i< crtChannels.size(); i++) for(int i=0; i< crtChannels.size(); i++)
@ -856,7 +856,7 @@ public class RadioActivity extends Activity {
{ {
UpdateEnableDisableButtons("offline"); UpdateEnableDisableButtons("offline");
onZoneCHChange(radio.ID, radio.GW_ID,0,0); // get zone and channel for crt radio onZoneCHChange(radio.ID, radio.GW_ID,0,0); // get zone and channel for crt radio
parentTab.crtRadio = radio; parentTab.setCrtRadio(radio);
} }
textViewGateway.setText(newIP); textViewGateway.setText(newIP);
@ -957,10 +957,10 @@ public class RadioActivity extends Activity {
buttonPTT.setEnabled(true); buttonPTT.setEnabled(true);
buttonDKey.setEnabled(false); buttonDKey.setEnabled(false);
} }
if(parentTab.crtActivity == parentTab.RADIO && selectedCallType == calltype) if(parentTab.getCrtActivity() == parentTab.RADIO_TAB_ID && selectedCallType == calltype)
parentTab.enableMenuButtons(false); parentTab.enableMenuButtons(false);
if(selectedCallType == calltype) if(selectedCallType == calltype)
parentTab.inCall = true; parentTab.setInCall(true);
} }
else if (callstatus==3) else if (callstatus==3)
@ -986,7 +986,7 @@ public class RadioActivity extends Activity {
} }
parentTab.enableMenuButtons(true); parentTab.enableMenuButtons(true);
parentTab.inCall = false; parentTab.setInCall(false);
} }
} }
} }
@ -1182,8 +1182,8 @@ public class RadioActivity extends Activity {
// send Dekey to AppServer // send Dekey to AppServer
private void SendDekey() private void SendDekey()
{ {
if(parentTab.crtRadio != null) if(parentTab.getCrtRadio() != null)
parentTab.sendDekey(parentTab.crtRadio.GW_ID, parentTab.crtRadio.ID); parentTab.sendDekey(parentTab.getCrtRadio().GW_ID, parentTab.getCrtRadio().ID);
} }
// send change Channel and Zone message to AppServer // send change Channel and Zone message to AppServer
@ -1215,8 +1215,8 @@ public class RadioActivity extends Activity {
//113 -grpcall stop //113 -grpcall stop
public void SendPTT(int callType, int id,int gwid, int rgwid,long userID) public void SendPTT(int callType, int id,int gwid, int rgwid,long userID)
{ {
SM.Debug("SendPTT callType:"+callType); SM.Debug("sendPTT callType:"+callType);
parentTab.SendPTT(callType, id,gwid,rgwid,userID); parentTab.sendPTT(callType, id,gwid,rgwid,userID);
} }
@ -1241,13 +1241,13 @@ public class RadioActivity extends Activity {
UpdateZoneCH(zc.rgwID, zc.gwID, zc.zoneNr, zc.channelNr); UpdateZoneCH(zc.rgwID, zc.gwID, zc.zoneNr, zc.channelNr);
} }
else if (action.equals(OperationCodes.RADIOID_CHANGED+"")) { else if (action.equals(OperationCodes.RADIOID_CHANGED+"")) {
textViewGateway.setText(parentTab.crtRadio.IP); textViewGateway.setText(parentTab.getCrtRadio().IP);
textViewChannel.setText(parentTab.crtRadio.getChannelName()); textViewChannel.setText(parentTab.getCrtRadio().getChannelName());
textViewZone.setText(parentTab.crtRadio.getZoneName()); textViewZone.setText(parentTab.getCrtRadio().getZoneName());
// update UI // update UI
myHandler.post(UpdateResultsZoneChannelRUN); myHandler.post(UpdateResultsZoneChannelRUN);
radioGWChanged(parentTab.crtRadio.IP); radioGWChanged(parentTab.getCrtRadio().IP);
} }
} }
}; };

View File

@ -127,7 +127,7 @@ public class RecordingsActivity extends Activity {
// change gateway // change gateway
textViewGateway.setText(allGWsIP.get(which)); textViewGateway.setText(allGWsIP.get(which));
Toast.makeText(context, getString(R.string.loadingRecordings), Toast.LENGTH_SHORT).show(); Toast.makeText(context, getString(R.string.loadingRecordings), Toast.LENGTH_SHORT).show();
GetRecordings(parentTab.allRadios.get(which).GW_ID, parentTab.allRadios.get(which).ID); GetRecordings(parentTab.getAllRadios().get(which).GW_ID, parentTab.getAllRadios().get(which).ID);
} }
}); });
AlertDialog alert = builder.create(); AlertDialog alert = builder.create();
@ -137,7 +137,7 @@ public class RecordingsActivity extends Activity {
textViewGateway.setVisibility(View.INVISIBLE); textViewGateway.setVisibility(View.INVISIBLE);
parentTab.recordingsActivity = this; parentTab.setRecordingsActivity(this);
// register to receive broadcasts // register to receive broadcasts
registerBroadcastIntents(); registerBroadcastIntents();
@ -208,17 +208,17 @@ public class RecordingsActivity extends Activity {
Toast.makeText(context, getString(R.string.moreRecordings), Toast.LENGTH_SHORT).show(); Toast.makeText(context, getString(R.string.moreRecordings), Toast.LENGTH_SHORT).show();
if(parentTab.crtRadio != null) if(parentTab.getCrtRadio() != null)
textViewGateway.setText(parentTab.crtRadio.IP); textViewGateway.setText(parentTab.getCrtRadio().IP);
/* /*
if(parentTab.allRadios == null) if(parentTab.allRadios == null)
GetGWRadios(); GetGWRadios();
*/ */
if(playingPosition < 0 && parentTab.crtRadio != null) if(playingPosition < 0 && parentTab.getCrtRadio() != null)
{ {
SM.Debug("GetRecordings resume + crtRadio:"+parentTab.crtRadio.toString()); SM.Debug("GetRecordings resume + crtRadio:"+ parentTab.getCrtRadio().toString());
GetRecordings(parentTab.crtRadio.GW_ID, parentTab.crtRadio.ID); GetRecordings(parentTab.getCrtRadio().GW_ID, parentTab.getCrtRadio().ID);
} }
} }
@ -402,8 +402,8 @@ public class RecordingsActivity extends Activity {
updateNumberOfRecordings(); updateNumberOfRecordings();
} }
else if (action.equals(OperationCodes.RADIOID_CHANGED+"")) { else if (action.equals(OperationCodes.RADIOID_CHANGED+"")) {
textViewGateway.setText(parentTab.crtRadio.IP); textViewGateway.setText(parentTab.getCrtRadio().IP);
GetRecordings(parentTab.crtRadio.GW_ID, parentTab.crtRadio.ID); GetRecordings(parentTab.getCrtRadio().GW_ID, parentTab.getCrtRadio().ID);
} }
} }
}; };

View File

@ -965,7 +965,7 @@ public class SDMobileActivity extends Activity {
} }
@Override @Override
public void alarmLiveRecv(TCPEvent event) { public void alarmLiveReceived(TCPEvent event) {
} }
@Override @Override
@ -994,7 +994,7 @@ public class SDMobileActivity extends Activity {
} }
@Override @Override
public void onTCPConnectionDown(boolean previuosWasConnectionUp) { public void onTCPConnectionDown(boolean previousWasConnectionUp) {
SM.Debug("TCP connection with:" + (tcp != null ? tcp.serverHostname : AppParams.RADIOIP) + ":" SM.Debug("TCP connection with:" + (tcp != null ? tcp.serverHostname : AppParams.RADIOIP) + ":"
+ (tcp != null ? tcp.getPort() : 0) + " is DOWN!!!"); + (tcp != null ? tcp.getPort() : 0) + " is DOWN!!!");
// update ui only when a change happens with tcp connection // update ui only when a change happens with tcp connection
@ -1034,7 +1034,7 @@ public class SDMobileActivity extends Activity {
} }
@Override @Override
public void onTCPConnectionStatusReceived(boolean isConnectionUp, boolean previuosWasConnectionUp) { public void onTCPConnectionStatusReceived(boolean isConnectionUp, boolean previousWasConnectionUp) {
} }

View File

@ -1403,7 +1403,7 @@ public class SDMobileActivity_beforeMod extends Activity {
public void onAlarmAckReceived(TCPEvent event) { } public void onAlarmAckReceived(TCPEvent event) { }
@Override @Override
public void alarmLiveRecv(TCPEvent event) { } public void alarmLiveReceived(TCPEvent event) { }
@Override @Override
@ -1425,7 +1425,7 @@ public class SDMobileActivity_beforeMod extends Activity {
public void onRecordingsListReceived(TCPEvent event) { } public void onRecordingsListReceived(TCPEvent event) { }
@Override @Override
public void onTCPConnectionDown(boolean previousConnectionWasUP) { public void onTCPConnectionDown(boolean previousWasConnectionUp) {
SM.Debug("TCP Connection Down"); SM.Debug("TCP Connection Down");
// set connection is down // set connection is down
@ -1450,7 +1450,7 @@ public class SDMobileActivity_beforeMod extends Activity {
} }
@Override @Override
public void onTCPConnectionUp(boolean previousConnectionWasUP) { public void onTCPConnectionUp(boolean previousWasConnectionUp) {
SM.Debug("TCP Connection UP"); SM.Debug("TCP Connection UP");
// set connection is up // set connection is up
@ -1505,7 +1505,7 @@ public class SDMobileActivity_beforeMod extends Activity {
} }
@Override @Override
public void onTCPConnectionStatusReceived(final boolean isConnectionUp, boolean previuosWasConnectionUp) { public void onTCPConnectionStatusReceived(final boolean isConnectionUp, boolean previousWasConnectionUp) {
//SM.Debug("TCP STATUS", "ConnectionUP: " + isConnectionUp + " | previous: " + previuosWasConnectionUp ); //SM.Debug("TCP STATUS", "ConnectionUP: " + isConnectionUp + " | previous: " + previuosWasConnectionUp );
/* /*
if(!lastTCPstatus && isConnectionUp) { if(!lastTCPstatus && isConnectionUp) {

View File

@ -199,7 +199,7 @@ public class SetupActivity extends Activity {
// get default com port // get default com port
//COMPORT = prefs.getString("comport", "n/a"); //COMPORT = prefs.getString("comport", "n/a");
// get Language // get Language
AppParams.LANGUAGE = AppParams.prefs.getString("language", parentTab.databaseLanguage); AppParams.LANGUAGE = AppParams.prefs.getString("language", parentTab.DATABASE_LANGUAGE);
} }
catch(Exception ex) catch(Exception ex)
{ {
@ -245,7 +245,7 @@ public class SetupActivity extends Activity {
parentTab.stopTCPParser(); parentTab.stopTCPParser();
// recreate TCP with new settings // recreate TCP with new settings
parentTab.loadSettings(); parentTab.loadSettings();
parentTab.TCPinit(); parentTab.tcpInit();
*/ */
// start thread to add listener // start thread to add listener
/* /*

View File

@ -24,14 +24,14 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="8dp" android:paddingTop="8dp"
android:textSize="18dp" android:textSize="18dp"
android:textColor="#FFFFFF" android:textColor="@color/black"
/> />
<TextView android:id="@+id/text2" <TextView android:id="@+id/text2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="8dp" android:paddingTop="8dp"
android:textSize="18dp" android:textSize="18dp"
android:textColor="#FFFFFF" android:textColor="@color/black"
/> />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -257,5 +257,11 @@
<string name="speedMph">%1$d mph</string> <string name="speedMph">%1$d mph</string>
<string name="DialogService_Info_ErrorMessage">Oops, something happened</string>
<string name="go_to_settings">Go to settings</string>
<string name="permission_denied">Permission Denied</string>
<string name="permissionBlocked">%1$s permission was not accepted. To be able to use the %2$s, please open application settings and grant the %3$s permission</string>
<string name="microphone">Microphone</string>
<string name="radio_tab">Radio Tab</string>
</resources> </resources>