Skip to content

Commit

Permalink
Add command send button
Browse files Browse the repository at this point in the history
  • Loading branch information
Philipp0002 committed Jul 30, 2024
1 parent ba9dab4 commit ab7b362
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,14 @@ public class Device extends NotifyDevice {
public String GPS;
public String GSM;

public String CmdSendUrl;
public String CmdRecordUrl;
public String CellPhone;
public String SignalType;
public String IsRecharge;
public String RechargeUrl;
public String BluetoothFunc;

public String[] getDeviceInfoShort(Context context) {
String[] description = new String[]{"?", ""};
if(isStop != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package de.raffaelhahn.xadgps_client.ui;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
Expand Down Expand Up @@ -54,6 +56,7 @@ public class DeviceInfoSheet extends BottomSheetDialogFragment implements Device
private TextView deviceDistance;
private Button deviceShowOnMapButton;
private MaterialButton deviceNotifyButton;
private MaterialButton deviceSettingsButton;

private Device deviceRef;

Expand Down Expand Up @@ -112,10 +115,13 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
deviceDistance = view.findViewById(R.id.deviceDistance);
deviceShowOnMapButton = view.findViewById(R.id.deviceShowOnMap);
deviceNotifyButton = view.findViewById(R.id.deviceNotify);
deviceSettingsButton = view.findViewById(R.id.deviceSettings);

deviceShowOnMapButton.setVisibility(View.GONE);
deviceSettingsButton.setVisibility(View.GONE);
deviceShowOnMapButton.setOnClickListener(v -> showDeviceOnMap());
deviceNotifyButton.setOnClickListener(v -> notifyOnMovement());
deviceSettingsButton.setOnClickListener(v -> openURL(this.deviceRef.CmdSendUrl));
}

private void updateView(Device device) {
Expand Down Expand Up @@ -147,55 +153,66 @@ private void updateView(Device device) {
deviceSpeed.setText(device.speed + " km/h");
deviceDistance.setText(device.distance);
deviceShowOnMapButton.setVisibility(View.VISIBLE);
if(MovementMonitorService.isMonitoring(getActivity(), deviceRef)) {
deviceNotifyButton.setIconResource(R.drawable.no_notify);
} else {
deviceNotifyButton.setIconResource(R.drawable.notify);
}
deviceNotifyButton.setIconResource(
MovementMonitorService.isMonitoring(getActivity(), deviceRef) ?
R.drawable.no_notify :
R.drawable.notify
);
deviceSettingsButton.setVisibility(
(device.CmdSendUrl == null || device.CmdSendUrl.isEmpty()) ?
View.GONE :
View.VISIBLE
);
}

@Override
public void onResume() {
super.onResume();
((MainActivity)getActivity()).deviceListService.registerUpdateListener(this);
((MainActivity) getActivity()).deviceListService.registerUpdateListener(this);
}

@Override
public void onPause() {
super.onPause();
((MainActivity)getActivity()).deviceListService.unregisterUpdateListener(this);
((MainActivity) getActivity()).deviceListService.unregisterUpdateListener(this);
}

@Override
public void onDestroy() {
super.onDestroy();
((MainActivity)getActivity()).deviceListService.unregisterUpdateListener(this);
((MainActivity) getActivity()).deviceListService.unregisterUpdateListener(this);
}

@Override
public void onDeviceListUpdate(ArrayList<Device> deviceList) {
Optional<Device> optDevice = deviceList.stream().filter(device -> id.equals(device.id)).findFirst();
if(optDevice.isPresent()) {
if(getActivity() != null){
if (optDevice.isPresent()) {
if (getActivity() != null) {
getActivity().runOnUiThread(() -> updateView(optDevice.get()));
}
}
}

public void showDeviceOnMap() {
((MainActivity)getActivity()).showDeviceOnMap(id);
((MainActivity) getActivity()).showDeviceOnMap(id);
this.dismiss();
}

private void notifyOnMovement() {
if(!MovementMonitorService.isMonitoring(getActivity(), deviceRef)) {
if (!MovementMonitorService.isMonitoring(getActivity(), deviceRef)) {
boolean started = MovementMonitorService.startMonitoring(getActivity(), deviceRef);
if(started) {
if (started) {
deviceNotifyButton.setIconResource(R.drawable.no_notify);
}
} else {
MovementMonitorService.stopMonitoring(getActivity(), deviceRef);
deviceNotifyButton.setIconResource(R.drawable.notify);
}
}

private void openURL(String url) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
}
10 changes: 10 additions & 0 deletions app/src/main/res/drawable/settings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M370,880L354,752Q341,747 329.5,740Q318,733 307,725L188,775L78,585L181,507Q180,500 180,493.5Q180,487 180,480Q180,473 180,466.5Q180,460 181,453L78,375L188,185L307,235Q318,227 330,220Q342,213 354,208L370,80L590,80L606,208Q619,213 630.5,220Q642,227 653,235L772,185L882,375L779,453Q780,460 780,466.5Q780,473 780,480Q780,487 780,493.5Q780,500 778,507L881,585L771,775L653,725Q642,733 630,740Q618,747 606,752L590,880L370,880ZM440,800L519,800L533,694Q564,686 590.5,670.5Q617,655 639,633L738,674L777,606L691,541Q696,527 698,511.5Q700,496 700,480Q700,464 698,448.5Q696,433 691,419L777,354L738,286L639,328Q617,305 590.5,289.5Q564,274 533,266L520,160L441,160L427,266Q396,274 369.5,289.5Q343,305 321,327L222,286L183,354L269,418Q264,433 262,448Q260,463 260,480Q260,496 262,511Q264,526 269,541L183,606L222,674L321,632Q343,655 369.5,670.5Q396,686 427,694L440,800ZM482,620Q540,620 581,579Q622,538 622,480Q622,422 581,381Q540,340 482,340Q423,340 382.5,381Q342,422 342,480Q342,538 382.5,579Q423,620 482,620ZM480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480Z"/>
</vector>
9 changes: 9 additions & 0 deletions app/src/main/res/layout/device_info_sheet.xml
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,15 @@
android:layout_gravity="end"
>

<com.google.android.material.button.MaterialButton
style="@style/Widget.Material3.Button.IconButton"
android:id="@+id/deviceSettings"
android:layout_marginEnd="4dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/settings"
/>

<com.google.android.material.button.MaterialButton
style="@style/Widget.Material3.Button.IconButton"
android:id="@+id/deviceNotify"
Expand Down

0 comments on commit ab7b362

Please sign in to comment.