优化界面和修复bug

serial
BlueMatthew 1 year ago
parent d5d1345542
commit c92713cc64

@ -170,7 +170,7 @@ public class FloatingWindow extends Service {
@Override
public void onClick(View v) {
mWindowsParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
mWindowsParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;
// mWindowsParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;
mWindowManager.updateViewLayout(mView, mWindowsParams);
wasInFocus = true;
showSoftKeyboard(v);

@ -1,15 +1,11 @@
package com.xypower.mpapp;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.DataSetObserver;
import android.graphics.SurfaceTexture;
import android.hardware.Camera;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
@ -21,7 +17,6 @@ import android.os.Looper;
import android.os.Message;
import android.os.Messenger;
import android.os.StrictMode;
import android.os.SystemClock;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
@ -33,26 +28,25 @@ import android.os.Bundle;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.text.method.ArrowKeyMovementMethod;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.Display;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.SpinnerAdapter;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;
import android.widget.Toast;
import com.dev.devapi.api.SysApi;
import com.dowse.camera.client.DSCameraManager;
import com.xypower.common.MicroPhotoContext;
import com.xypower.common.ViewUtils;
import com.xypower.mpapp.databinding.ActivityMainBinding;
import com.xypower.mpapp.utils.RandomReader;
import java.io.File;
import java.io.FileOutputStream;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
@ -111,7 +105,6 @@ public class MainActivity extends AppCompatActivity {
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -120,6 +113,12 @@ public class MainActivity extends AppCompatActivity {
setContentView(binding.getRoot());
// getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
// InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
// ViewUtils.hideSoftKeyboard(this);
ActionBar actionBar = getSupportActionBar();
// String buildTime = BuildConfig.BUILD_
@ -128,6 +127,15 @@ public class MainActivity extends AppCompatActivity {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
actionBar.setTitle(actionBar.getTitle().toString() + " v" + MicroPhotoContext.getVersionName(getApplicationContext()) + " " + sdf.format(date));
// CompactSpinnerAdapter adapter = new CompactSpinnerAdapter(this, R.array.networkProtocols, R.layout.spinner_dropdown_item);
// adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// binding.networkProtocol.setAdapter(adapter);
// ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this, R.array.networkProtocols, android.R.layout.simple_spinner_item);
// adapter1.setDropDownViewResource(R.layout.spinner_dropdown_item);
// binding.protocol.setAdapter(adapter1);
binding.logs.setText("");
binding.logs.setMovementMethod(ScrollingMovementMethod.getInstance());
binding.logs.setScrollbarFadingEnabled(false);
@ -462,6 +470,7 @@ public class MainActivity extends AppCompatActivity {
}
public static void startMicroPhotoService(Context context, MicroPhotoContext.AppConfig curAppConfig, Messenger messenger) {
if (TextUtils.isEmpty(curAppConfig.cmdid) || TextUtils.isEmpty(curAppConfig.server) || curAppConfig.port == 0) {
@ -511,13 +520,13 @@ public class MainActivity extends AppCompatActivity {
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
private void setDefaultDataSubId(int subId) {
SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
try {

@ -115,7 +115,7 @@ public class MicroPhotoService extends Service {
private String mCmdid = "";
private NotificationManager mNotificationManager;
private final Map<String, PowerManager.WakeLock> mWakeLocks = new HashMap<>();
private int mHeartbeatDuration = 0; // 5m: 5 * 60 * 1000
private int mHeartbeatDuration = 60000; // Default 10m: 10 * 60 * 1000
private long mNextHeartbeatTime = 0;
private PositionManager mPositionManager = null;

@ -4,7 +4,6 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="false"
android:orientation="horizontal"
tools:context=".MainActivity">
@ -25,9 +24,10 @@
android:layout_marginLeft="4dp"
android:layout_marginTop="8dp"
android:ems="10"
android:maxLines="1"
android:inputType="text"
android:imeOptions="actionDone"
android:inputType="text"
android:maxLines="1"
android:lines="1"
android:singleLine="true"
android:text="XY-ANDROIDSIM-001"
app:layout_constraintLeft_toRightOf="@+id/textViewCmdId"
@ -38,8 +38,8 @@
style="@style/Widget.AppCompat.Spinner.Underlined"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/protocols"
android:spinnerMode="dropdown"
android:entries="@array/protocols"
app:layout_constraintLeft_toRightOf="@+id/cmdid"
app:layout_constraintTop_toTopOf="@+id/cmdid" />
@ -58,8 +58,9 @@
android:layout_width="128dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:ems="10"
android:maxLines="1"
android:lines="1"
android:singleLine="true"
android:inputType="text"
android:imeOptions="actionDone"
android:hint="@string/main_server"
@ -70,11 +71,10 @@
android:id="@+id/port"
android:layout_width="48dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="none|number"
android:imeOptions="actionDone"
android:maxLines="1"
android:text="6891"
android:text=""
app:layout_constraintBottom_toBottomOf="@+id/server"
app:layout_constraintLeft_toRightOf="@+id/server"
app:layout_constraintTop_toTopOf="@+id/server" />
@ -84,8 +84,8 @@
style="@style/Widget.AppCompat.Spinner.Underlined"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/networkProtocols"
android:spinnerMode="dropdown"
android:entries="@array/networkProtocols"
app:layout_constraintLeft_toRightOf="@+id/port"
app:layout_constraintTop_toTopOf="@+id/port" />
@ -104,7 +104,7 @@
android:layout_width="48dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginTop="4dp"
android:ems="10"
android:inputType="none|number"
android:imeOptions="actionDone"
@ -119,7 +119,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginTop="4dp"
android:text="@string/main_packet_size"
app:layout_constraintBottom_toBottomOf="@+id/packetSize"
app:layout_constraintStart_toEndOf="@+id/heartbeat"
@ -130,7 +130,7 @@
android:layout_width="64dp"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginTop="4dp"
android:ems="10"
android:inputType="none|number"
android:imeOptions="actionDone"
@ -158,6 +158,7 @@
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:text="Start"
android:minWidth="@dimen/activity_min_width"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/heartbeat"
@ -169,6 +170,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:minWidth="@dimen/activity_min_width"
android:enabled="false"
android:text="Stop"
app:layout_constraintStart_toEndOf="@+id/startServBtn"
@ -179,42 +181,21 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="0dp"
android:minWidth="@dimen/activity_min_width"
android:text="Save"
app:layout_constraintStart_toEndOf="@+id/stopServBtn"
app:layout_constraintTop_toTopOf="@+id/startServBtn" />
<Button
android:id="@+id/simchange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="sim卡获取"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/startServBtn" />
<Button
android:id="@+id/simchange2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
android:text="切换sim2"
app:layout_constraintStart_toEndOf="@+id/simchange"
app:layout_constraintTop_toBottomOf="@+id/startServBtn" />
<Button
android:id="@+id/btnChannels"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
android:layout_marginStart="8dp"
android:minWidth="@dimen/activity_min_width"
android:text="通道设置"
app:layout_constraintStart_toEndOf="@+id/simchange2"
app:layout_constraintTop_toBottomOf="@+id/startServBtn" />
app:layout_constraintStart_toEndOf="@+id/saveCfg"
app:layout_constraintTop_toTopOf="@+id/startServBtn" />
<Button
android:id="@+id/takePhotoBtn"
@ -222,40 +203,40 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="8dp"
android:text="TK Photo"
android:minWidth="@dimen/activity_min_width"
android:text="@string/btn_tp_ch1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/simchange" />
app:layout_constraintTop_toBottomOf="@+id/startServBtn" />
<Button
android:id="@+id/takePhotoBtn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
android:text="TP 2"
android:layout_marginStart="8dp"
android:minWidth="@dimen/activity_min_width"
android:text="@string/btn_tp_ch2"
app:layout_constraintStart_toEndOf="@+id/takePhotoBtn"
app:layout_constraintTop_toBottomOf="@+id/simchange" />
app:layout_constraintTop_toTopOf="@+id/takePhotoBtn" />
<Button
android:id="@+id/takePhotoBtn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
android:text="TP 3"
android:layout_marginStart="8dp"
android:minWidth="@dimen/activity_min_width"
android:text="@string/btn_tp_ch3"
app:layout_constraintStart_toEndOf="@+id/takePhotoBtn2"
app:layout_constraintTop_toBottomOf="@+id/simchange" />
app:layout_constraintTop_toTopOf="@+id/takePhotoBtn" />
<Button
android:id="@+id/takePhotoBtn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
android:text="TP 4"
android:layout_marginStart="8dp"
android:minWidth="@dimen/activity_min_width"
android:text="@string/btn_tp_ch4"
app:layout_constraintStart_toEndOf="@+id/takePhotoBtn3"
app:layout_constraintTop_toBottomOf="@+id/simchange" />
app:layout_constraintTop_toTopOf="@+id/takePhotoBtn" />
<Button
android:id="@+id/btnSendHb"
@ -263,6 +244,8 @@
android:layout_height="wrap_content"
android:text="@string/main_send_hb"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:minWidth="@dimen/activity_min_width"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/takePhotoBtn" />
@ -272,17 +255,44 @@
android:layout_height="wrap_content"
android:text="@string/main_restart_app"
android:layout_marginStart="8dp"
android:minWidth="@dimen/activity_min_width"
app:layout_constraintStart_toEndOf="@+id/btnSendHb"
app:layout_constraintTop_toBottomOf="@+id/takePhotoBtn" />
app:layout_constraintTop_toTopOf="@+id/btnSendHb" />
<Button
android:id="@+id/btnReboot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/main_reboot"
android:layout_marginStart="4dp"
android:layout_marginStart="8dp"
android:minWidth="@dimen/activity_min_width"
app:layout_constraintStart_toEndOf="@+id/btnRestartApp"
app:layout_constraintTop_toBottomOf="@+id/takePhotoBtn" />
app:layout_constraintTop_toTopOf="@+id/btnSendHb" />
<Button
android:id="@+id/simchange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="sim卡获取"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/startServBtn" />
<Button
android:id="@+id/simchange2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
android:text="切换sim2"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@+id/simchange"
app:layout_constraintTop_toBottomOf="@+id/startServBtn" />
<Button
android:id="@+id/gps"
@ -340,14 +350,24 @@
app:layout_constraintEnd_toStartOf="@+id/logs"
app:layout_constraintTop_toBottomOf="@+id/btnSendHb" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/leftBarrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="right"
app:constraint_referenced_ids="textViewCmdId,cmdid,protocol,networkProtocol,saveCfg,takePhotoBtn4,btnChannels,network"
tools:layout_editor_absoluteX="46dp" />
<TextView
android:id="@+id/logs"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="4dp"
android:padding="4dp"
android:background="@drawable/textview_border"
android:orientation="horizontal"
android:padding="4dp"
android:lineSpacingMultiplier="1.25"
android:scrollbars="vertical"
android:singleLine="false"
@ -356,7 +376,7 @@
android:textIsSelectable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/takePhotoBtn4"
app:layout_constraintStart_toEndOf="@+id/leftBarrier"
app:layout_constraintTop_toTopOf="parent" />
<SurfaceView

@ -4,7 +4,6 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="false"
android:orientation="horizontal"
tools:context=".MainActivity">
@ -76,8 +75,8 @@
style="@style/Widget.AppCompat.Spinner.Underlined"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/networkProtocols"
android:spinnerMode="dropdown"
android:entries="@array/networkProtocols"
app:layout_constraintLeft_toRightOf="@+id/port"
app:layout_constraintTop_toTopOf="@+id/port" />
@ -318,6 +317,14 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/takePhotoBtn4" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/leftBarrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="right"
app:constraint_referenced_ids="textViewCmdId,cmdid,protocol,networkProtocol,saveCfg,takePhotoBtn4,btnChannels"
tools:layout_editor_absoluteX="46dp" />
<TextView
android:id="@+id/logs"
android:layout_width="0dp"

@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="2dp"
android:layout_height="?attr/dropdownListPreferredItemHeight"
android:padding="0dp"
android:textSize="12sp"
android:typeface="serif"
android:singleLine="true"
android:layout_marginLeft="2dip"
android:layout_marginRight="5dip"

@ -6,4 +6,5 @@
<dimen name="activity_vertical_margin_small">4dp</dimen>
<dimen name="activity_horizontal_spacing">8dp</dimen>
<dimen name="activity_vertical_spacing">8dp</dimen>
<dimen name="activity_min_width">72dp</dimen>
</resources>

@ -6,6 +6,5 @@
<item>65284-浙江</item>
<item>65285-河南</item>
<item>65286-郑州</item>
</string-array>
</resources>

@ -22,6 +22,10 @@
<string name="btn_save">保存</string>
<string name="btn_ok">确定</string>
<string name="btn_cancel">取消</string>
<string name="btn_tp_ch1">通道1</string>
<string name="btn_tp_ch2">通道2</string>
<string name="btn_tp_ch3">通道3</string>
<string name="btn_tp_ch4">通道4</string>
<string name="channel_cfg_auto_exposure">自动曝光</string>
<string name="channel_cfg_auto_focus">自动对焦</string>
<string name="channel_cfg_width">照片宽</string>

@ -8,4 +8,8 @@
<item name="android:textSize">12sp</item>
</style>
<style name="Theme.MP.Button" parent="Base.Widget.AppCompat.Button">
<item name="android:minWidth">32sp</item>
</style>
</resources>

@ -0,0 +1,56 @@
package com.xypower.common;
import android.content.Context;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import java.util.List;
public class CompactSpinnerAdapter extends BaseAdapter implements SpinnerAdapter {
private Context mContext ;
private String[] mList;
private int mLayoutViewId;
public CompactSpinnerAdapter(Context context, int arrayResId, int layoutViewId){
mContext = context;
mList = context.getResources().getStringArray(arrayResId);
mLayoutViewId = layoutViewId;
}
@Override
public int getCount() {
return mList.length;
}
@Override
public Object getItem(int position) {
return mList[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
View view = layoutInflater.inflate(mLayoutViewId, null);
if(view != null)
{
if (view.getClass().isInstance(TextView.class)) {
TextView textView = (TextView) view;
textView.setText(mList[position]);
}
}
return view;
}
}

@ -0,0 +1,19 @@
package com.xypower.common;
import android.app.Activity;
import android.view.inputmethod.InputMethodManager;
public class ViewUtils {
public static void hideSoftKeyboard(Activity activity) {
InputMethodManager inputMethodManager =
(InputMethodManager) activity.getSystemService(
Activity.INPUT_METHOD_SERVICE);
if(inputMethodManager.isAcceptingText()){
inputMethodManager.hideSoftInputFromWindow(
activity.getCurrentFocus().getWindowToken(),
0
);
}
}
}

@ -5,6 +5,7 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@ -55,4 +56,36 @@ public class ZipUtils {
}
}
public static void ZipFiles(List<String> srcFiles, File zipFile) {
try {
ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFile));
// ZipFiles(srcFile.getParent() + File.separator, srcFile.getName(), outZip);
byte[] buffer = new byte[1024 * 256];
for (String path : srcFiles) {
File file = new File(path);
if (!file.exists()) {
continue;
}
ZipEntry zipEntry = new ZipEntry(path);
FileInputStream inputStream = new FileInputStream(file);
outZip.putNextEntry(zipEntry);
int len;
while ((len = inputStream.read(buffer)) != -1) {
outZip.write(buffer, 0, len);
}
outZip.closeEntry();
}
outZip.finish();
outZip.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -4,7 +4,7 @@ plugins {
def AppMajorVersion = 1
def AppMinorVersion = 0
def AppBuildNumber = 4
def AppBuildNumber = 5
def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber
def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber

@ -5,6 +5,7 @@ import android.os.Environment;
import android.os.PowerManager;
import android.text.TextUtils;
import android.util.Pair;
import android.util.Base64;
import com.dev.devapi.api.SysApi;
import com.xypower.common.FileDownloader;
@ -14,11 +15,14 @@ import com.xypower.common.JSONUtils;
import com.xypower.common.MicroPhotoContext;
import com.xypower.common.ZipUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
@ -38,7 +42,8 @@ public class AppMaster {
private String mCmdid;
private PowerManager.WakeLock mWakelock;
public static final String CMD_REBOOT_APP = "";
public static final String CMD_REBOOT_APP = "cmd_reboot_app";
public static final String CMD_REBOOT_MASTER = "cmd_reboot_mpmaster";
public static final String CMD_REBOOT_DEV = "yw_cmd_android_reboot";
public static final String CMD_UPGRADE = "upgrade";
public static final String CMD_UPLOAD_LOGS = "yw_cmd_upload_i1_zip_log";
@ -46,6 +51,8 @@ public class AppMaster {
public static final String CMD_SET_MNTN = "i1_cmd_set_xy_yw_ip_port";
public static final String CMD_SET_APP_HB = "i1_cmd_set_i1_heart_beat_time";
public static final String CMD_UPDATE_CONFIG = "upd_cfg";
public static final String CMD_PULL_FILE = "pull_files";
public static final String CMD_PUSH_FILE = "push_file";
public static final String CMD_HOT_SPOT = "yw_cmd_hot_spot";
public static final String CMD_ENABLE_GPS = "yw_cmd_enable_gps";
public static final String CMD_ENABLE_OTG = "yw_cmd_enable_otg";
@ -110,6 +117,8 @@ public class AppMaster {
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestProperty("Accept-Cmds", "Multiple");
List<Pair<String, String>> postParams = new ArrayList<>();
postParams.add(new Pair<String, String>("id", mCmdid));
postParams.add(new Pair<String, String>("i1Version", mService.getMpAppVersion()));
@ -145,7 +154,6 @@ public class AppMaster {
JSONObject jsonObject = new JSONObject(content);
int isUpgrade = jsonObject.optInt("isUpgrade", 0);
String url = jsonObject.optString("url", null);
String cmd = jsonObject.optString("cmd", "");
int mntnMode = jsonObject.optInt("yw", 0);
int quickHbMode = jsonObject.optInt("kxt", 0);
@ -154,42 +162,20 @@ public class AppMaster {
if (isUpgrade == 1 && !TextUtils.isEmpty(url)) {
upgradeApp(url);
} else if (TextUtils.equals(cmd, CMD_REBOOT_DEV)) {
SysApi.reboot(mService.getApplicationContext());
} else if (TextUtils.equals(cmd, CMD_UPLOAD_LOGS)) {
uploadLogs(url);
} else if (TextUtils.equals(cmd, CMD_SET_CMA)) {
String ip = jsonObject.optString("value_str", null);
int port = jsonObject.optInt("value_int", 0);
updateCma(ip, port);
} else if (TextUtils.equals(cmd, CMD_SET_MNTN)) {
String ip = jsonObject.optString("value_str", null);
int port = jsonObject.optInt("value_int", 0);
String newUrl = buildMntnServer(ip, port);
if (newUrl != null) {
mService.updateMntn(newUrl);
}
} else if (TextUtils.equals(cmd, CMD_UPDATE_CONFIG)) {
String path = jsonObject.optString("path", null);
String fileName = jsonObject.optString("fileName", null);
String name = jsonObject.optString("name", null);
int fieldType = jsonObject.optInt("type", 0);
JSONObject val = jsonObject.optJSONObject("value");
} else if (TextUtils.equals(cmd, CMD_HOT_SPOT)) {
int enable = jsonObject.optInt("enable", 1);
String name = jsonObject.optString("name", "XYMP");
if (enable != 0) {
SysApi.enableApp(mService.getApplicationContext(), name);
} else {
SysApi.disableApp(mService.getApplicationContext(), name);
}
} else if (TextUtils.equals(cmd, CMD_ENABLE_GPS)) {
int enable = jsonObject.optInt("enable", 1);
SysApi.enableGps(mService.getApplicationContext(), (enable != 0));
} else if (TextUtils.equals(cmd, CMD_ENABLE_OTG)) {
int enable = jsonObject.optInt("enable", 1);
SysApi.setOtgState((enable != 0));
}
processCmd(jsonObject);
JSONArray cmdObjects = jsonObject.optJSONArray("cmds");
if (cmdObjects != null) {
int cnt = cmdObjects.length();
for (int idx = 0; idx < cnt; idx++) {
JSONObject cmdObject = cmdObjects.getJSONObject(idx);
if (cmdObject != null) {
processCmd(cmdObject);
}
}
}
} catch (Exception e) {
@ -198,6 +184,81 @@ public class AppMaster {
}
private void processCmd(JSONObject jsonObject) {
String cmd = jsonObject.optString("cmd", "");
if (TextUtils.equals(cmd, CMD_REBOOT_DEV)) {
SysApi.reboot(mService.getApplicationContext());
} else if (TextUtils.equals(cmd, CMD_UPLOAD_LOGS)) {
String url = jsonObject.optString("url", null);
uploadLogs(url);
} else if (TextUtils.equals(cmd, CMD_SET_CMA)) {
String ip = jsonObject.optString("value_str", null);
int port = jsonObject.optInt("value_int", 0);
updateCma(ip, port);
} else if (TextUtils.equals(cmd, CMD_SET_MNTN)) {
String ip = jsonObject.optString("value_str", null);
int port = jsonObject.optInt("value_int", 0);
String newUrl = buildMntnServer(ip, port);
if (newUrl != null) {
mService.updateMntn(newUrl);
}
} else if (TextUtils.equals(cmd, CMD_UPDATE_CONFIG)) {
String path = jsonObject.optString("path", null);
String fileName = jsonObject.optString("fileName", null);
String name = jsonObject.optString("name", null);
int fieldType = jsonObject.optInt("type", 0);
JSONObject val = jsonObject.optJSONObject("value");
} else if (TextUtils.equals(cmd, CMD_PUSH_FILE)) {
String path = jsonObject.optString("path", null);
String content = jsonObject.optString("content", null);
File file = new File(path);
File parentPath = file.getParentFile();
if (!parentPath.exists()) {
parentPath.mkdirs();
}
byte[] data = null;
try {
data = Base64.decode(content, Base64.DEFAULT);
} catch (Exception ex) {
}
if (data != null) {
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
outputStream.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (Exception ex) {
}
}
}
}
} else if (TextUtils.equals(cmd, CMD_HOT_SPOT)) {
int enable = jsonObject.optInt("enable", 1);
String name = jsonObject.optString("name", "XYMP");
if (enable != 0) {
SysApi.enableApp(mService.getApplicationContext(), name);
} else {
SysApi.disableApp(mService.getApplicationContext(), name);
}
} else if (TextUtils.equals(cmd, CMD_ENABLE_GPS)) {
int enable = jsonObject.optInt("enable", 1);
SysApi.enableGps(mService.getApplicationContext(), (enable != 0));
} else if (TextUtils.equals(cmd, CMD_ENABLE_OTG)) {
int enable = jsonObject.optInt("enable", 1);
SysApi.setOtgState((enable != 0));
}
}
private boolean updateConfig(String path, String fileName, String name, int fieldType, JSONObject val) {
if (name == null) {
@ -330,6 +391,40 @@ public class AppMaster {
}
}
private void uploadFiles(String url, List<String> paths) {
String appDir = mService.buildAppDir();
try {
long ts = System.currentTimeMillis();//long now = android.os.SystemClock.uptimeMillis();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
Date dt = new Date(ts);
final String fileName = mCmdid + "_" + format.format(dt) + ".zip";
final File file = File.createTempFile(fileName, null, new File(appDir));
if (file == null) {
return;
}
// ZipUtils
// ZipUtils.ZipFiles(logDir, file);
if (!file.exists()) {
return;
}
FileUploader fileUploader = new FileUploader(url);
fileUploader.addFilePart("file", file, fileName, "application/x-zip-compressed");
String response = fileUploader.finish();
if (response != null) {
}
} catch (Exception ex) {
}
}
private void buildParams(OutputStream output) {
BufferedWriter bufferedWriter = null;
try {

@ -170,7 +170,7 @@ public class FloatingWindow extends Service {
@Override
public void onClick(View v) {
mWindowsParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
mWindowsParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;
// mWindowsParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;
mWindowManager.updateViewLayout(mView, mWindowsParams);
wasInFocus = true;
showSoftKeyboard(v);

Loading…
Cancel
Save