Compare commits

..

2 Commits

Author SHA1 Message Date
34c578fdf5 SD-188 - cleaned up TabLayoutActivity of unused code
- small refactor
- null checks
2022-03-23 13:07:40 +02:00
7039199208 SD-188 - Create IPermissionService and its implementation 2022-03-21 19:39:55 +02:00
23 changed files with 1702 additions and 1850 deletions

0
gradlew vendored Executable file → Normal file
View File

View File

@ -198,11 +198,12 @@ public abstract class AbstractSDParentActivity extends TabActivity {
return res; return res;
} }
public boolean getHistoryPositions(int sc_id, long timeGMTStart, long timeGMTStop) { public boolean getHistoryPositions(int sc_id, long timeGMTStart, long timeGMTStop)
{
if(tcp == null) if(tcp == null)
return false; return false;
String histSeqID = "1."+ (int) (System.currentTimeMillis() / 1000L); String histSeqID = "1."+Integer.toString((int) (System.currentTimeMillis() / 1000L));
boolean res = tcp.Write(histSeqID,"#26#"+sc_id+"#"+timeGMTStart+"#"+timeGMTStop+"#"); boolean res = tcp.Write(histSeqID,"#26#"+sc_id+"#"+timeGMTStart+"#"+timeGMTStop+"#");
if(res) if(res)
SM.Debug("Message [getHistoryPositions] sent to app server"); SM.Debug("Message [getHistoryPositions] sent to app server");
@ -212,7 +213,8 @@ public abstract class AbstractSDParentActivity extends TabActivity {
return res; return res;
} }
public boolean getRadiosList() { public boolean getRadiosList()
{
if(tcp == null) if(tcp == null)
return false; return false;

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,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

@ -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

@ -1,24 +1,5 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' apply plugin: 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
apply plugin: "com.gladed.androidgitversion"
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
mavenCentral()
}
dependencies {
classpath "gradle.plugin.com.gladed.gradle.androidgitversion:gradle-android-git-version:0.4.3"
}
}
androidGitVersion {
codeFormat 'MNNBBBB'
format '%tag%%.count%'
hideBranches = ['develop']
}
android { android {
compileSdkVersion 31 compileSdkVersion 31
@ -28,9 +9,6 @@ android {
applicationId "com.safemobile.dispatch" applicationId "com.safemobile.dispatch"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 31 targetSdkVersion 31
versionName androidGitVersion.name()
versionCode androidGitVersion.code()
archivesBaseName = "SafeDispatchMobile_v.$versionName"
} }
buildTypes { buildTypes {

View File

@ -1,20 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="com.safemobile.dispatch"> package="com.safemobile.dispatch"
android:versionCode="9"
android:versionName="1.0.9">
<!-- require OpenGL ES version 2 for Google Maps --> <!-- require OpenGL ES version 2 for Google Maps -->
<uses-feature <uses-feature
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

@ -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

@ -12,12 +12,10 @@ import androidx.annotation.NonNull;
import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.Marker;
import com.safemobile.lib.HistPos;
import com.safemobile.lib.SuperVehicle; import com.safemobile.lib.SuperVehicle;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Locale; import java.util.Locale;
@ -27,10 +25,8 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
private final String TAG = GoogleMapsInfoBubble.class.getName(); private final String TAG = GoogleMapsInfoBubble.class.getName();
private final View mWindow; private final View mWindow;
private Hashtable<Long, SuperVehicle> superVehHash; private final Hashtable<Long, SuperVehicle> superVehHash;
private final Context context; private final Context context;
private ArrayList<HistPos> histPosList;
private boolean isLiveTab = true;
public GoogleMapsInfoBubble(LayoutInflater layoutInflater, Context context, Hashtable<Long, SuperVehicle> vehicles) { public GoogleMapsInfoBubble(LayoutInflater layoutInflater, Context context, Hashtable<Long, SuperVehicle> vehicles) {
@ -39,17 +35,6 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
mWindow = layoutInflater.inflate(R.layout.map_marker_info_bubble, null); mWindow = layoutInflater.inflate(R.layout.map_marker_info_bubble, null);
} }
public GoogleMapsInfoBubble(LayoutInflater layoutInflater, Context context) {
isLiveTab = false;
this.context = context;
// this.superVehHash = vehicles;
mWindow = layoutInflater.inflate(R.layout.map_marker_info_bubble, null);
}
public void setHistoryPositions(ArrayList<HistPos> positions) {
this.histPosList = positions;
}
@Override @Override
public View getInfoWindow(@NonNull Marker marker) { public View getInfoWindow(@NonNull Marker marker) {
render(marker, mWindow); render(marker, mWindow);
@ -64,21 +49,13 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
private void render(Marker marker, View view) { private void render(Marker marker, View view) {
long key = 0; long key = 0;
int position = 0;
if (isLiveTab) {
try { try {
key = Long.parseLong(marker.getTitle()); key = Long.parseLong(marker.getTitle());
} catch (Exception ex) { } catch (Exception ex) {
Log.v(TAG, "Unable to parse Google Maps Info Bubble title"); Log.v(TAG, "Unable to parse Google Maps Info Bubble title");
} }
} else { SuperVehicle vehicle = superVehHash.get(key);
try {
position = Integer.getInteger(marker.getTitle());
} catch (Exception e) {
Log.v(TAG, "Unable to parse Google Maps Info Bubble title on History");
}
}
RelativeLayout rlMapInfoBubbleInfo = view.findViewById(R.id.rlMapInfoBubbleInfo); RelativeLayout rlMapInfoBubbleInfo = view.findViewById(R.id.rlMapInfoBubbleInfo);
TextView tvUnitName = view.findViewById(R.id.tvUnitName); TextView tvUnitName = view.findViewById(R.id.tvUnitName);
@ -90,39 +67,27 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
rlMapInfoBubbleInfo.setVisibility(View.VISIBLE); rlMapInfoBubbleInfo.setVisibility(View.VISIBLE);
boolean isMilitaryTime = false; boolean isMilitaryTime = false;
Date positionTime; Date positionTime = new Date(vehicle.timeGMT);
String speed, address, gpsLocation, name = "";
if (isLiveTab) {
SuperVehicle vehicle = superVehHash.get(key);
positionTime = new Date(vehicle.timeGMT);
address = vehicle.Address != null ? vehicle.Address : "";
name = vehicle.name;
speed = String.format(context.getResources().getString(R.string.speedMph), vehicle.speed);
gpsLocation = "[" + String.format("%.4f", vehicle.lat) + "," + String.format("%.4f",vehicle.lng) + "]";
} else {
HistPos histPos = histPosList.get(position);
positionTime = new Date(histPos.timeGMT);
address = histPos.Address != null ? histPos.Address : "";
speed = String.format(context.getResources().getString(R.string.speedMph), histPos.speed);
gpsLocation = "[" + String.format("%.4f", histPos.lat) + "," + String.format("%.4f",histPos.lng) + "]";
}
String timeFormat = isMilitaryTime String timeFormat = isMilitaryTime
? "HH:mm:ss dd.MMM.yyyy" ? "HH:mm:ss dd.MMM.yyyy"
: "hh:mm:ss a dd.MMM.yyy"; : "hh:mm:ss a dd.MMM.yyy";
DateFormat format = new SimpleDateFormat(timeFormat, Locale.ENGLISH); DateFormat format = new SimpleDateFormat(timeFormat, Locale.ENGLISH);
tvTimeAgo.setText(format.format(positionTime)); tvTimeAgo.setText(format.format(positionTime));
tvSpeed.setText(String.format(context.getResources().getString(R.string.speedMph), vehicle.speed));
String address = vehicle.Address != null ? vehicle.Address : "";
tvStreetView.setText(address); tvStreetView.setText(address);
streetView.setVisibility(address.length() > 0 ? View.VISIBLE : View.GONE); streetView.setVisibility(address.length() > 0 ? View.VISIBLE : View.GONE);
tvStreetView.setVisibility(address.length() > 0 ? View.VISIBLE : View.GONE); tvStreetView.setVisibility(address.length() > 0 ? View.VISIBLE : View.GONE);
if (!isLiveTab) tvUnitName.setText(vehicle.name);
tvUnitName.setVisibility(View.GONE); tvGPSLocation.setText("[" + String.format("%.4f", vehicle.lat)
else + "," + String.format("%.4f",vehicle.lng) + "]");
tvUnitName.setText(name);
tvSpeed.setText(speed);
tvGPSLocation.setText(gpsLocation);
} }
} }

View File

@ -1,33 +1,17 @@
package com.safemobile.dispatch; package com.safemobile.dispatch;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.PolylineOptions;
import com.safemobile.lib.AppParams; import com.safemobile.lib.AppParams;
import com.safemobile.lib.HistPos;
import com.safemobile.lib.OperationCodes;
import com.safemobile.lib.SM; import com.safemobile.lib.SM;
import com.safemobile.lib.Vehicle; import com.safemobile.lib.Vehicle;
@ -37,21 +21,19 @@ import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.Locale; import java.util.Locale;
public class HistoryActivity extends AppCompatActivity implements OnMapReadyCallback { public class HistoryActivity extends AppCompatActivity {
public Bundle savedInstanceState; public Bundle savedInstanceState;
private TabLayoutActivity parentTab; private TabLayoutActivity parentTab;
private GoogleMap googleMap; private GoogleMap googleMap;
private Spinner spinnerVehicle; private Spinner spinnerVehicle;
private Button displayButton; private ImageView changeMapType, checkTraffic, slideLayoutImage;
private Date startDate, endDate; private LinearLayout layoutTraffic, slidelayout, layoutVehicles;
private final Handler myHandler = new Handler();
private GoogleMapsInfoBubble infoBubble;
private final ArrayList<Vehicle> allVehicle = new ArrayList<>();
private final ArrayList<String> allVehicleNames = new ArrayList<>();
private final SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd yyyy");
private ArrayList<Vehicle> allVehicle = new ArrayList<>();
private ArrayList<String> allVehicleNames = new ArrayList<>();
private ArrayAdapter<String> adapter;
private boolean showVehicle = true;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -60,20 +42,19 @@ 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);
googleMap = parentTab.getLiveActivity().getMap();
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map); .findFragmentById(R.id.map);
if (mapFragment != null)
mapFragment.getMapAsync(this);
spinnerVehicle = findViewById(R.id.spinnerVehicle); spinnerVehicle = findViewById(R.id.spinnerVehicle);
getVehicles(); getVehicles();
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, allVehicleNames); adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, allVehicleNames);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinnerVehicle.setAdapter(adapter); spinnerVehicle.setAdapter(adapter);
spinnerVehicle.setSelection(0); spinnerVehicle.setSelection(0);
@ -81,87 +62,49 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
changeMapType(); changeMapType();
changeTraffic(); changeTraffic();
displayButton = findViewById(R.id.buttonDisplay); slidelayout = findViewById(R.id.slidelayout);
displayButton.setOnClickListener(view -> { slideLayoutImage = findViewById(R.id.slideLayoutImage);
googleMap.clear(); layoutVehicles = findViewById(R.id.layoutBig);
if (!AppParams.DEMO) { // slidelayout.setOnTouchListener((v, event) -> {
parentTab.dropAllData =false; // if (showVehicle) {
parentTab.firstHistData = true; // layoutVehicles.setVisibility(View.GONE);
parentTab.HistMsgList.clear(); // slideLayoutImage.setImageResource(R.drawable.arrow_right);
parentTab.HistPosList.clear(); // showVehicle = false;
// } else {
// request history // layoutVehicles.setVisibility(View.VISIBLE);
parentTab.executeNetworkStuff(new String[] {OperationCodes.GetHistoryPositions + "", allVehicle.get(spinnerVehicle.getSelectedItemPosition()).sc_id + "", // slideLayoutImage.setImageResource(R.drawable.arrow_left);
(startDate.getTime()/ 1000L) + "", (endDate.getTime()/ 1000L) + ""}); // showVehicle = true;
} else { // }
parentTab.demoPositionsList(); // return false;
displayHistory(parentTab.demoPositions); // });
}
});
setDate(); setDate();
} }
private void displayHistory(ArrayList<HistPos> positions) {
LatLng latLng = null;
PolylineOptions polylineOptions = new PolylineOptions();
BitmapDescriptor markerIcon = BitmapDescriptorFactory.fromResource(R.drawable.history_pin);
for (int i = 0; i < positions.size(); i++) {
HistPos pos = positions.get(i);
if (pos.speed > 0) {
latLng = new LatLng(pos.lat, pos.lng);
polylineOptions.add(latLng);
googleMap.addMarker(new MarkerOptions()
.position(latLng)
.icon(markerIcon)
.title(String.valueOf(i)));
}
}
googleMap.addPolyline(polylineOptions);
if (latLng != null)
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14));
}
private void setDate() { private void setDate() {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
endDate = calendar.getTime(); Date endDate = calendar.getTime();
calendar.add(Calendar.DATE, -1); calendar.add(Calendar.DATE, -1);
startDate = calendar.getTime(); Date startDate = calendar.getTime();
TextView textViewStartDate = findViewById(R.id.textViewStartDate); LinearLayout layoutStartPicker = findViewById(R.id.layoutStartPicker);
TextView textViewEndDate = findViewById(R.id.textViewEndDate); TextView textViewDate = findViewById(R.id.textViewStartDate);
textViewStartDate.setText(sdf.format(startDate)); textViewDate.setText(new SimpleDateFormat("HH:mm, dd.MM.yyyy").format(startDate));
textViewEndDate.setText(sdf.format(endDate)); // layoutStartPicker.setOnTouchListener((v, event) -> {
// showDialog(layoutStartPicker);
// return false;
// });
textViewStartDate.setOnClickListener(view -> openDialog(textViewStartDate, true)); // layoutEndPicker.setOnTouchListener(new OnTouchListener() {
textViewEndDate.setOnClickListener(view -> openDialog(textViewEndDate, false)); // @Override
} // public boolean onTouch(View v, MotionEvent event) {
// showDialog(layoutEndPicker);
// return false;
// }
// });
private void openDialog(TextView textView, Boolean isStartDate) {
Date date = startDate;
if (!isStartDate)
date = endDate;
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
DatePickerDialog.OnDateSetListener setListener = (datePicker, y, m, d) -> {
calendar.set(y, m, d);
String dateString = sdf.format(calendar.getTime());
textView.setText(dateString);
if (isStartDate)
startDate = calendar.getTime();
else
endDate = calendar.getTime();
};
Dialog dialog = new DatePickerDialog(this, android.R.style.Theme_Holo_Light_Dialog_MinWidth, setListener,
calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
} }
private void changeTraffic() { private void changeTraffic() {
@ -178,13 +121,14 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
} }
private void changeMapType() { private void changeMapType() {
ImageView changeMapType = findViewById(R.id.changeMapType); changeMapType = findViewById(R.id.changeMapType);
ImageView changeMapTypeImageView = findViewById(R.id.changeMapType);
changeMapType.setOnClickListener(view -> { changeMapType.setOnClickListener(view -> {
if (googleMap.getMapType() == GoogleMap.MAP_TYPE_SATELLITE) { if (googleMap.getMapType() == GoogleMap.MAP_TYPE_SATELLITE) {
changeMapType.setImageResource(R.drawable.satellite); changeMapTypeImageView.setImageResource(R.drawable.satellite);
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
} else { } else {
changeMapType.setImageResource(R.drawable.map); changeMapTypeImageView.setImageResource(R.drawable.map);
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
} }
}); });
@ -192,27 +136,15 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
public void getVehicles() { public void getVehicles() {
try { try {
allVehicle.clear();
allVehicleNames.clear();
for (Vehicle vehicle : parentTab.getAllVehicle()) { for (Vehicle vehicle : parentTab.getAllVehicle()) {
allVehicleNames.add(vehicle.name); allVehicleNames.add(vehicle.name);
allVehicle.add(vehicle); allVehicle.add(vehicle);
} }
} catch (Exception ignored) { } } catch (Exception ex) { }
} }
final Runnable UpdateMapResults = new Runnable() {
public void run() {
Log.v("updateMap", parentTab.HistPosList.toString());
SM.Debug("Do the Display");
infoBubble.setHistoryPositions(parentTab.HistPosList);
displayHistory(parentTab.HistPosList);
}
};
public void UpdateMap() { public void UpdateMap() {
myHandler.post(UpdateMapResults);
SM.Debug("Do the updateMAP post"); SM.Debug("Do the updateMAP post");
} }
@ -227,15 +159,4 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
public void UpdateNrPos(int size) { public void UpdateNrPos(int size) {
SM.Debug("Do Cancelwindow"); SM.Debug("Do Cancelwindow");
} }
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
this.googleMap = googleMap;
infoBubble = new GoogleMapsInfoBubble(getLayoutInflater(), this);
this.googleMap.setInfoWindowAdapter(infoBubble);
parentTab.demoPositionsList();
displayButton.performClick();
}
} }

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

@ -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 PermissionService 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;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -162,11 +162,10 @@
android:text="@string/startDate" android:text="@string/startDate"
android:textSize="22dp" android:textSize="22dp"
android:paddingLeft="5dp" android:paddingLeft="5dp"
android:layout_marginTop="15sp"
android:textColor="#000000" android:textColor="#000000"
android:gravity="left" android:gravity="left"
android:id="@+id/labelStartDate" android:id="@+id/labelStartDate"
/> android:visibility="gone"/>
<LinearLayout <LinearLayout
android:id="@+id/layoutStartPicker" android:id="@+id/layoutStartPicker"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -203,7 +202,7 @@
android:textColor="#000000" android:textColor="#000000"
android:gravity="left" android:gravity="left"
android:id="@+id/labelEndDate" android:id="@+id/labelEndDate"
/> android:visibility="gone"/>
<LinearLayout <LinearLayout
android:id="@+id/layoutEndPicker" android:id="@+id/layoutEndPicker"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -285,15 +284,14 @@
</LinearLayout> </LinearLayout>
<fragment <fragment
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:id="@+id/map" android:id="@+id/map"
android:layout_toRightOf="@id/slidelayout" android:layout_toRightOf="@id/slidelayout"
android:layout_weight="1" android:layout_weight="1"
tools:context=".HistoryActivity"
android:name="com.google.android.gms.maps.SupportMapFragment" /> android:name="com.google.android.gms.maps.SupportMapFragment" />
</LinearLayout> </LinearLayout>
<ImageView <ImageView
android:id="@+id/changeMapType" android:id="@+id/changeMapType"