(activity, wifis));
+ wifiDialog.show();
+ wv_water.setCurrentItem(0);
+ bt_submit.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ wifiDialog.dismiss();
+ tvWifiName.setText(wifis[wv_water.getCurrentItem()]);
+ }
+ });
+ }
+
+ public String getCurWifiSsid(AppCompatActivity activity) {
+ WifiManager wifiManager = (WifiManager) activity.getApplicationContext().getSystemService(WIFI_SERVICE);
+ WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+ if (!wifiManager.isWifiEnabled()) {
+ ToastUtil.show(activity.getApplicationContext(), "请检查WiFi是否开启");
+ return wifiInfo.getSSID();
+ }
+ String wifissid = wifiInfo.getSSID();
+ wifissid = wifissid.replaceAll("\"", "");
+ if (TextUtils.isEmpty(wifissid)) {
+ ToastUtil.show(activity.getApplicationContext(), "您没有连接WiFi");
+ return wifiInfo.getSSID();
+ }
+
+ return wifissid;
+ }
+
+ public void checkCurAP(AppCompatActivity activity, String wifiName, String wifiPwd, String devicetype) {
+ String wifissid = getCurWifiSsid(activity);
+ if (TextUtils.isEmpty(wifissid)) {
+ wifissid = "";
+ }
+
+ Intent intent = new Intent();
+
+ if ("camera".equals(devicetype)) {
+ if (!wifissid.startsWith("GW_AP_")) {
+ ToastUtil.show(activity.getApplicationContext(), "请先连接摄像头ifish-xxxx的网络");
+ return;
+ }
+ //todo 摄像头
+ intent.setClass(activity, HotSpotConnentDeviceCameraActivity.class);
+ } else if ("pet".equals(devicetype)) {
+ if (!wifissid.startsWith("ifish-")) {
+ ToastUtil.show(activity.getApplicationContext(), "请先连接宠物笼ifish-xxxx的网络");
+ return;
+ }
+ //todo 宠物
+ intent.setClass(activity, HotSpotConnentPetDeviceActivity.class);
+ } else {
+ if (!wifissid.startsWith("ifish-")) {
+ ToastUtil.show(activity.getApplicationContext(), "请先连接ifish-xxxx的网络");
+ return;
+ }
+ //todo 设备
+ intent.setClass(activity, HotSpotConnentDeviceActivity.class);
+ }
+
+ if (wifissid.equals(wifiName)) {
+ ToastUtil.show(activity.getApplicationContext(), "WiFi名称不能和热点名称一致");
+ return;
+ }
+
+ intent.putExtra("wifiname", (!TextUtils.isEmpty(wifiName) ? wifiName : ""));
+ intent.putExtra("wifipwd", (!TextUtils.isEmpty(wifiPwd) ? wifiPwd : ""));
+ intent.putExtra("wifihotid", wifissid);
+ activity.startActivity(intent);
+ AnimationUtil.startAnimation(activity);
+
+ }
+
+}
diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/ConnectType.java b/iFish7/src/main/java/com/ifish/activity/newbind/ConnectType.java
new file mode 100644
index 000000000..647e67f34
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/activity/newbind/ConnectType.java
@@ -0,0 +1,14 @@
+package com.ifish.activity.newbind;
+
+/**
+ * @ClassName: ConnectType
+ * @Description: 作用描述
+ * @Author: LiHongda
+ * @CreateDate: 2024/2/22 21:22
+ */
+public enum ConnectType {
+ APConnect,
+ SmartConfig,
+ AirKiss,
+ BlueTooth
+}
diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/DeviceUtils.java b/iFish7/src/main/java/com/ifish/activity/newbind/DeviceUtils.java
new file mode 100644
index 000000000..4d6e236d4
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/activity/newbind/DeviceUtils.java
@@ -0,0 +1,89 @@
+package com.ifish.activity.newbind;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.Build;
+import android.util.Log;
+import android.view.View;
+import android.view.inputmethod.InputMethodManager;
+
+public class DeviceUtils {
+
+ /**
+ * 隐藏软键盘
+ *
+ * {@link InputMethodManager#hideSoftInputFromWindow}第一个参数如果使用getCurrentFocus.getWindowToken,在使用模拟器调试时,
+ * 存在获取不到焦点的情况,故会出现空指针异常。
+ *
+ * @param view 任意一个当前layout的view
+ */
+ public static void hideKeyboard(View view) {
+ InputMethodManager inputMethodManager = (InputMethodManager) view.getContext()
+ .getSystemService(Context.INPUT_METHOD_SERVICE);
+ if (inputMethodManager != null) {
+ inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
+ }
+ }
+
+ /**
+ * 判断网络连接是否是WiFi,否则返回false
+ */
+ public static boolean isWifi(Context context) {
+ ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (cm != null) {
+ NetworkInfo netInfo = cm.getActiveNetworkInfo();
+ if (netInfo != null && netInfo.isConnected()) {
+ return netInfo.getType() == ConnectivityManager.TYPE_WIFI;
+ }
+ }
+ return false;
+ }
+
+
+ public static String getSSID(Context context) {
+ String ssid = "unknown id";
+ //android 8.1
+ if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O_MR1){
+ ConnectivityManager connManager = (ConnectivityManager) context.getApplicationContext().
+ getSystemService(Context.CONNECTIVITY_SERVICE);
+ assert connManager != null;
+ NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
+ if (networkInfo.isConnected()){
+ Log.e("DeviceUtils", "getSSID111: "+ networkInfo.getExtraInfo() );
+ if (networkInfo.getExtraInfo() != null){
+ return networkInfo.getExtraInfo().replace("\"","");
+ }
+ }
+ }else {
+ if (isWifi(context)){
+ final WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
+ WifiInfo connectionInfo = null;
+ if (wifiManager != null) {
+ connectionInfo = wifiManager.getConnectionInfo();
+ }
+ if (connectionInfo != null) {
+ ssid = connectionInfo.getSSID();
+ Log.e("DeviceUtils", "getSSID: "+ssid );
+ if (ssid.startsWith("\"") && ssid.endsWith("\"")) {
+ ssid = ssid.replaceAll("^\"|\"$", "");
+ }
+ }
+ }
+ }
+ return ssid;
+ }
+
+ public static boolean isApkDebuggable(Context context){
+ try {
+ ApplicationInfo info = context.getApplicationInfo();
+ return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE)!=0;
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java b/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java
new file mode 100644
index 000000000..c07fbdfee
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java
@@ -0,0 +1,1190 @@
+package com.ifish.activity.newbind;
+
+import static com.ifish.activity.newbind.ConnectType.BlueTooth;
+
+import android.Manifest;
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.location.LocationManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.os.Handler;
+import android.os.Message;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+//jjia-push
+//import com.clj.fastble.BleManager;
+//import com.clj.fastble.callback.BleGattCallback;
+//import com.clj.fastble.callback.BleMtuChangedCallback;
+//import com.clj.fastble.callback.BleNotifyCallback;
+//import com.clj.fastble.callback.BleScanCallback;
+//import com.clj.fastble.callback.BleWriteCallback;
+//import com.clj.fastble.data.BleDevice;
+//import com.clj.fastble.exception.BleException;
+import com.ifish.activity.BindCameraActivity;
+import com.ifish.activity.BindTankActivity;
+import com.ifish.activity.BindTankPetActivity;
+import com.ifish.activity.BlackListActivity;
+import com.ifish.activity.LoadingActivity;
+import com.ifish.activity.MainEightControlActivity;
+import com.ifish.activity.MainFiveBDControlActivity;
+import com.ifish.activity.MainFiveControlActivity;
+import com.ifish.activity.MainFourControlActivity;
+import com.ifish.activity.MainFour_2B_ControlActivity;
+import com.ifish.activity.MainFour_3F_ControlActivity;
+import com.ifish.activity.MainHot_3A_ControlActivity;
+import com.ifish.activity.MainSeven_2F_ControlActivity;
+import com.ifish.activity.MainSixControlActivity;
+import com.ifish.activity.MainSix_2A_ControlActivity;
+import com.ifish.activity.MainSix_4F_ControlActivity;
+import com.ifish.activity.MainThree1CControlActivity;
+import com.ifish.activity.MainThreeControlActivity;
+import com.ifish.activity.MainTwoControlActivity;
+import com.ifish.activity.MainZeroControlActivity;
+import com.ifish.activity.R;
+import com.ifish.activity.WebViewActivity;
+import com.ifish.basebean.BaseBean;
+import com.ifish.basebean.ConnectMessageEvent;
+import com.ifish.basebean.Device;
+import com.ifish.basebean.EventBean;
+import com.ifish.baseclass.BaseGradeActivity;
+import com.ifish.tcp.BackFunctionCode7_11;
+import com.ifish.tcp.ModelCodec;
+import com.ifish.tcp.OrderDeviceConnectModel;
+import com.ifish.tcp.OrderModel;
+import com.ifish.tcp.ResetDeviceModel;
+import com.ifish.utils.ActivityManager;
+import com.ifish.utils.AnimationUtil;
+import com.ifish.utils.AppRoute;
+import com.ifish.utils.BlueToothUtil;
+import com.ifish.utils.ByteUtil;
+import com.ifish.utils.ClickUtil;
+import com.ifish.utils.Commons;
+import com.ifish.utils.HttpListener;
+import com.ifish.utils.HttpManager;
+import com.ifish.utils.L;
+import com.ifish.utils.SPUtil;
+import com.ifish.utils.ToastUtil;
+import com.ifish.utils.WifiAdmin;
+import com.lidroid.xutils.util.LogUtils;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.List;
+
+import de.greenrobot.event.EventBus;
+
+/**
+ * @ClassName: NewBindDeviceActivity
+ * @Description: 新版连接界面
+ * @Author: LiHongda
+ * @CreateDate: 2024/2/22 20:45
+ */
+public class NewBindDeviceActivity extends AppCompatActivity {
+
+ //----------------控件区--------------------//
+ private TextView tvConnectType;
+ private LinearLayout llWifi;
+ private TextView tvWifiName;
+ private EditText tvWifiPwd;
+ private TextView tvTips;
+ private TextView tvTips2;
+ private TextView tvTips3;
+ private TextView tvOtherConnect;
+ private TextView tvClickButton;
+ private TextView tvConnectVideo;
+ private RelativeLayout layoutLoading;
+ private TextView dialogHint;
+
+ private int nofity_type = 0;
+
+
+ //----------------变量区--------------------//
+ private ConnectType curConnectType;//当前选择的连接类型 APConnect,SmartConfig,AirKiss
+ private boolean first = true;//首次进入
+ //当前需要连接的是什么设备
+ private String devicetype;
+
+ //---------------工具类--------------------//
+ private CheckWifiUtil checkWifiUtil;
+ private AirKissUtil airKissUtil;
+ private String bssid = "";
+ private SPUtil sp;
+ private Dialog waterTempDialog;
+ String type = null;
+ private Activity activity;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_new_bind_device_choice);
+ activity = this;
+
+ ActivityManager.getInstance().addActivity(this);
+
+ sp=SPUtil.getInstance(this);
+ act = this;
+ connectDevice = new ConnectDevice(20000, 1000);
+ initTitle();
+ initView();
+ initListener();
+ checkNet();
+ checkWifiUtil = new CheckWifiUtil();
+ airKissUtil = new AirKissUtil();
+ type = getIntent().getStringExtra("type");
+ devicetype = getIntent().getStringExtra("devicetype");
+ L.i("jjia----------------devicetype="+devicetype);
+ airKissUtil.init(this,devicetype);
+ //jjia-push
+// BleManager.getInstance().disconnectAllDevice();
+ if ("bluetooth".equals(type)){
+ curConnectType = BlueTooth;
+ }else {
+ //默认AP联网
+ curConnectType = ConnectType.AirKiss;
+ }
+
+ switchUIConnectType(curConnectType);
+
+ if ("bluetooth".equals(type)){ // 主动去联网
+ //jjia-push
+// currentDevice = getIntent().getParcelableExtra("device");
+ }
+ EventBus.getDefault().register(this);
+
+
+
+
+
+ }
+
+ void checkNet(){
+ if (checkGPSIsOpen(this)){
+ initWifiName();
+ }else {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(this, AlertDialog.THEME_HOLO_LIGHT);
+ dialog.setCancelable(true);
+ dialog.setTitle("提示");
+ dialog.setMessage("为了获取手机连接的wifi名称,请打开定位");
+ dialog.setNegativeButton("取消", (arg0, arg1) -> {
+ arg0.dismiss();
+
+ });
+ dialog.setPositiveButton("去打开", (dialog1, which) -> {
+ dialog1.dismiss();
+ Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ startActivityForResult(intent, 101);
+ });
+ dialog.show();
+ }
+ }
+
+ public static boolean checkGPSIsOpen(Context context) {
+ LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
+ //return locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER);
+ // 通过GPS卫星定位,定位级别可以精确到街(通过24颗卫星定位,在室外和空旷的地方定位准确、速度快)
+ boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
+ // 通过WLAN或移动网络(3G/2G)确定的位置(也称作AGPS,辅助GPS定位。主要用于在室内或遮盖物(建筑群或茂密的深林等)密集的地方定位)
+ boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+ if(gps || network) {
+ return true;
+ }
+ return false;
+ }
+
+
+
+ private void initWifiName() {
+ WifiAdmin wifiAdmin = new WifiAdmin(this);
+ String wifissid = wifiAdmin.getSSID();
+ LogUtils.d("LHD 获取当前连接的wifi:" + wifissid);
+ wifissid = wifiAdmin.updateSsid(wifissid);
+ String wifiname = wifissid;
+ if (TextUtils.isEmpty(wifissid)) {
+ wifiname = "";
+ } else {
+ if ("0x".equals(wifissid)) {//上次连接过wifi,但是中途断开,则会出现0x
+ wifiname = "";
+ }
+ }
+ tvWifiName.setText(wifiname);
+ bssid = wifiAdmin.getBSSID();
+ L.i("jjia----------------bssid="+bssid);
+ if (!TextUtils.isEmpty(wifiname)) {
+// String pwd = KVUtil.getString(wifiname, "");
+ String pwd = sp.getString(wifiname, "");
+ tvWifiPwd.setText(pwd);
+ L.i(wifiname+"jjia---------name--1-"+pwd);
+ }
+
+
+
+
+ }
+
+ private void initTitle() {
+ TextView title_text = (TextView) findViewById(R.id.title_text);
+ title_text.setText("连接设备");
+ findViewById(R.id.title_img).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ private void initView() {
+
+ tvConnectType = (TextView) findViewById(R.id.tv_connect_type);
+ tvConnectVideo = (TextView) findViewById(R.id.tv_connect_video);
+ llWifi = (LinearLayout) findViewById(R.id.ll_wifi);
+ tvWifiName = (TextView) findViewById(R.id.tv_wifi_name);
+ tvWifiPwd = (EditText) findViewById(R.id.tv_wifi_pwd);
+ tvTips = (TextView) findViewById(R.id.tv_tips);
+ tvTips2 = (TextView) findViewById(R.id.tv_tips2);
+ tvTips3 = (TextView) findViewById(R.id.tv_tips3);
+ tvOtherConnect = (TextView) findViewById(R.id.tv_other_connect);
+ tvClickButton = (TextView) findViewById(R.id.tv_click_button);
+ layoutLoading = (RelativeLayout) findViewById(R.id.layout_loading);
+ dialogHint = (TextView) findViewById(R.id.tv_hint);
+
+ }
+
+ private void initListener() {
+ tvOtherConnect.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (ClickUtil.isFastDoubleClick()) {
+ LogUtils.d("LHD 防止快速点击");
+ return;
+ }
+ //选择连接类型的底部弹窗
+ BottomChoiceDialog.curType = curConnectType;
+ BottomChoiceDialog bottomChoiceDialog = BottomChoiceDialog.newInstance();
+ bottomChoiceDialog.show(getSupportFragmentManager(), "选择连接类型");
+ bottomChoiceDialog.setOnChooseClickListener(new BottomChoiceDialog.OnChooseClickListener() {
+ @Override
+ public void smartConfigConnect() {
+ //智能连接逻辑
+ curConnectType = ConnectType.SmartConfig;
+ switchUIConnectType(curConnectType);
+ }
+
+ @Override
+ public void APConnect() {
+ //AP连接逻辑
+ curConnectType = ConnectType.APConnect;
+ switchUIConnectType(curConnectType);
+ }
+
+ @Override
+ public void AirKissConnect() {
+ //airKiss逻辑
+ curConnectType = ConnectType.AirKiss;
+ switchUIConnectType(curConnectType);
+ }
+
+ @Override
+ public void bleConnect() {
+ curConnectType = BlueTooth;
+ switchUIConnectType(curConnectType);
+ }
+ });
+ }
+ });
+ tvClickButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ connectDevice();
+ }
+ });
+ tvConnectVideo.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent i = new Intent();
+ i.setClass(NewBindDeviceActivity.this, WebViewActivity.class);
+ if (curConnectType == ConnectType.AirKiss){
+ i.putExtra(WebViewActivity.URL, HttpManager.AirKissConnectVideoUrl);
+ i.putExtra(WebViewActivity.WEBVIEWTITLE, HttpManager.AirKissConnectVideoTitle);
+ }else {
+ i.putExtra(WebViewActivity.URL, HttpManager.APConnectVideoUrl);
+ i.putExtra(WebViewActivity.WEBVIEWTITLE, HttpManager.APConnectVideoTitle);
+ }
+ startActivity(i);
+ AnimationUtil.startAnimation(NewBindDeviceActivity.this);
+ }
+ });
+
+ }
+
+ private void resetLayout() {
+ //确定&下一步按钮
+ tvClickButton.setVisibility(View.VISIBLE);
+ tvConnectVideo.setVisibility(View.VISIBLE);
+ airKissUtil.stopAirKiss();
+ }
+
+ /**
+ * 根据连接类型切换UI
+ * todo 这里的提示应该根据连接类型有不同的提示
+ *
+ * @param
+ */
+
+ private void changeView(boolean blue){
+ if (blue){
+ tvTips2.setVisibility(View.GONE);
+ tvTips3.setVisibility(View.GONE);
+
+
+ }else {
+ tvTips2.setVisibility(View.VISIBLE);
+ tvTips3.setVisibility(View.VISIBLE);
+ }
+ }
+ public void switchUIConnectType(ConnectType connectType) {
+ resetLayout();
+ showToast(connectType);
+ switch (connectType) {
+ case SmartConfig:
+ // 处理SmartConfig逻辑
+ tvConnectType.setText("快捷联网");
+ tvClickButton.setText("确定");
+ tvConnectVideo.setVisibility(View.INVISIBLE);
+ tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)");
+ tvTips2.setText("2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁以后,再点确定按钮。");
+ tvTips3.setText("3、如多次尝试一键联网都不成功,可切换其他联网方式,每次重新连接时插座需断一次电然后重新复位连接。");
+ changeView(false);
+ break;
+ case BlueTooth:
+ findConencted();
+ // 处理SmartConfig逻辑
+ tvConnectType.setText("蓝牙联网");
+ tvClickButton.setText("确定");
+ tvConnectVideo.setVisibility(View.INVISIBLE);
+ tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)");
+ tvTips2.setText("2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁以后,再点确定按钮。");
+ tvTips3.setText("3、如多次尝试一键联网都不成功,可切换其他联网方式,每次重新连接时插座需断一次电然后重新复位连接。");
+ changeView(true);
+ break;
+ case APConnect:
+ // 处理APConnect逻辑
+ tvConnectType.setText("AP联网");
+ tvClickButton.setText("下一步");
+ tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)");
+ tvTips2.setText("2、先长按插座复位键13秒左右,松手后红灯绿灯同时熄灭,只有绿灯偶尔闪烁,再点下一步。");
+ tvTips3.setText("3、APP跳转到WLAN后,选择ifish-xxxx的网络,点击连接,密码是12345678,连好以后点击左上角返回箭头,耐心等待连接。");
+ changeView(false);
+ break;
+ case AirKiss:
+ tvConnectType.setText("一键联网");
+ tvClickButton.setText("确定");
+ tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)");
+ tvTips2.setText("2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁以后,再点确定按钮。");
+ tvTips3.setText("3、如多次尝试一键联网都不成功,可切换其他联网方式,每次重新连接时插座需断一次电然后重新复位连接。");
+ // 处理AirKiss逻辑
+ changeView(false);
+ break;
+ }
+ }
+
+ private void showToast(ConnectType connectType){
+ if (first){
+ first = false;
+ LogUtils.d("LHD 首次进入的时候不显示toast");
+ return;
+ }
+ switch (connectType) {
+ case SmartConfig:
+ ToastUtil.show(this, "切换到快捷联网");
+ break;
+ case BlueTooth:
+ ToastUtil.show(this, "切换到蓝牙联网");
+ break;
+ case APConnect:
+ ToastUtil.show(this, "切换到AP联网");
+ break;
+ case AirKiss:
+ ToastUtil.show(this, "切换到一键联网");
+ break;
+ }
+ }
+
+ /**
+ * 根据连接类型去连接设备
+ */
+ public void connectDevice() {
+ airKissUtil.stopAirKiss();
+ //根据选择的联网类型跳转不同的逻辑
+ String ssid = tvWifiName.getText().toString().trim();
+ String pwd = tvWifiPwd.getText().toString().trim();
+
+ //一系列判断逻辑
+ boolean canConnect = checkWifiUtil.checkWifiCanUse(this, ssid, pwd,curConnectType==BlueTooth);
+ L.i("jjia----------------canConnect="+canConnect);
+ sp.putString(ssid,pwd);
+ if (!canConnect) {
+ return;
+ }
+ L.i("jjia----------------curConnectType="+curConnectType);
+ switch (curConnectType) {
+ case SmartConfig:
+ // 处理SmartConfig逻辑
+ Intent intent = new Intent();
+ String devicetdevicetypeype = getIntent().getStringExtra("devicetype");
+ LogUtils.d("LHD 快捷联网 smartConfig devicetype = "+devicetype);
+
+ if ("camera".equals(devicetype)) {
+ intent.setClass(NewBindDeviceActivity.this, BindCameraActivity.class);
+ } else if ("pet".equals(devicetype)) {
+ intent.setClass(NewBindDeviceActivity.this, BindTankPetActivity.class);
+ } else {
+ intent.setClass(NewBindDeviceActivity.this, BindTankActivity.class);
+ }
+ String title = getIntent().getStringExtra("title");
+ if ("连接热流器".equals(title)) {
+ intent.putExtra("title", "连接热流器");
+ }
+ //新页面跳转
+ intent.putExtra("wifiPassword", pwd);
+ ToastUtil.show(NewBindDeviceActivity.this, "开始快捷联网...");
+ startActivity(intent);
+ AnimationUtil.startAnimation(NewBindDeviceActivity.this);
+ finish();
+ break;
+ case BlueTooth:
+
+
+
+ //jjia-push
+// boolean support = BleManager.getInstance().isSupportBle();
+// if (!support){
+// ToastUtil.show(NewBindDeviceActivity.this,"当前设备不支持低功耗蓝牙");
+// } else {
+// boolean enable = BleManager.getInstance().isBlueEnable();
+// if (enable){
+// if (TextUtils.isEmpty(type)){
+// blueScan();
+// }else {
+// showDialog("开始连接蓝牙设备");
+// connectBle();
+// }
+// }else {
+// AlertDialog.Builder dialog = new AlertDialog.Builder(NewBindDeviceActivity.this, AlertDialog.THEME_HOLO_LIGHT);
+// dialog.setCancelable(false);
+// dialog.setMessage("蓝牙没有打开,现在去申请打开蓝牙,请允许后,再点击'确定'连接");
+// dialog.setPositiveButton("去申请", new DialogInterface.OnClickListener() {
+// @Override
+// public void onClick(
+// DialogInterface dialog,
+// int which) {
+// BlueToothUtil.openBlueTooth(NewBindDeviceActivity.this);
+// }
+// });
+// dialog.setNegativeButton("拒绝", new DialogInterface.OnClickListener() {
+// @Override
+// public void onClick(DialogInterface dialog, int which) {
+// finish();
+// }
+// });
+// dialog.show();
+// }
+// }
+
+ break;
+ case APConnect:
+ //开始AP连接
+ connectAP();
+ break;
+ case AirKiss:
+ // 处理AirKiss逻辑
+ L.i("jjia----------------bssid="+bssid);
+ ToastUtil.show(NewBindDeviceActivity.this, "开始AirKiss联网...");
+ airKissUtil.connectDeviceByAirKiss(this, ssid, bssid, pwd);
+ break;
+ }
+ }
+//jjia-push
+// private void blueScan(){
+// BleManager.getInstance().scan(new BleScanCallback() {
+// @Override
+// public void onScanFinished(List scanResultList) {
+//
+// if (currentDevice!=null){
+// connectBle();
+// }else {
+// ToastUtil.show(NewBindDeviceActivity.this,"扫描结束,没有搜索到可用设备");
+// dismissDialog();
+// }
+// }
+//
+// @Override
+// public void onScanStarted(boolean success) {
+//// ToastUtil.show(NewBindDeviceActivity.this,"开始扫描");
+// showDialog("正在搜索附近设备,请确保设备处于配网状态");
+// }
+//
+// @SuppressLint("MissingPermission")
+// @Override
+// public void onScanning(BleDevice bleDevice) {
+// if (bleDevice!=null && bleDevice.getDevice()!=null){
+// BluetoothDevice bean = bleDevice.getDevice();
+// if (!TextUtils.isEmpty(bean.getName()) && bean.getName().startsWith("ifish")){
+// currentDevice = bleDevice;
+//// tvname.setText(bean.getName()+bean.getAddress());
+// BleManager.getInstance().cancelScan();
+// }
+// L.i(bean.getName()+"jjia---------"+bean.getAddress());
+// }
+// }
+// });
+// }
+ private boolean isJump = false;
+ //jjia-push
+// BleDevice currentDevice;
+ /**
+ * 1.跳转设置页面连接ifish-xxx的wifi,连接成功后返回
+ */
+ private void connectAP() {
+ isJump = true;
+ Intent i = new Intent();
+ i = new Intent(Settings.ACTION_WIFI_SETTINGS);
+ startActivity(i);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (isJump) {
+ String wifiName = tvWifiName.getText().toString();
+ String wifiPwd = tvWifiPwd.getText().toString();
+ checkWifiUtil.checkCurAP(this, wifiName, wifiPwd, devicetype);
+ isJump = false;
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ EventBus.getDefault().unregister(this);
+ airKissUtil.unSubscribe();
+ }
+
+ public void onEventMainThread(ConnectMessageEvent event) {
+ if (event.getId() == -1){
+ //绑定失败
+ if (curConnectType == ConnectType.APConnect){
+ ToastUtil.showLongToast(NewBindDeviceActivity.this,"点击右上角联网视频查看联网失败的原因");
+ return;
+ }
+ }
+ finish();
+ }
+
+
+ //检查位置权限
+ public boolean checkPermission(Activity context) {
+ //9.0以前版本获取wifi ssid不用申请此权限
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
+ return true;
+ }
+ int result = context.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION);
+ if (result == PackageManager.PERMISSION_GRANTED) {
+ return true;
+ }
+ String[] permission = {Manifest.permission.ACCESS_COARSE_LOCATION};
+ context.requestPermissions(permission, 1001);
+ return false;
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == 1001) {
+ if (grantResults.length > 0 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
+ if (DeviceUtils.isWifi(this)) {
+// ssidET.setText(DeviceUtils.getSSID(this));
+ }
+ } else {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
+ alertDialog.setTitle("权限拒绝");
+ alertDialog.setMessage("请在设置中打开此应用的位置权限后重试");
+ alertDialog.setCancelable(false);
+ alertDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ finish();
+ }
+ });
+ alertDialog.show();
+ }
+ }
+ }
+ //jjia-push
+ private String device_mac;
+// private void openNotify(){
+// BleManager.getInstance().notify(currentDevice, SERVICE_UUID, WRITE_UUID, new BleNotifyCallback() {
+// @Override
+// public void onNotifySuccess() {
+// sendBleData();
+// }
+//
+// @Override
+// public void onNotifyFailure(BleException exception) {
+//// dismissProgressDialogCancelble();
+// dismissDialog();
+// }
+//
+// @Override
+// public void onCharacteristicChanged(byte[] data) {
+//
+// if (data!=null && data.length>0){
+// int check_code = data[1];
+// int length = data[14];
+// byte[] dataByte = new byte[length];
+// for (int i = 0; i < dataByte.length; i++) {
+// dataByte[i] = data[i];
+// }
+//
+// Object object = ModelCodec.deCode(dataByte,Commons.IoBuffer);
+// if (object!=null && object instanceof BackFunctionCode7_11){
+// BackFunctionCode7_11 model = (BackFunctionCode7_11) object;
+// String status = ByteUtil.toHex(model.getStatus());
+// device_mac = ByteUtil.bytesToHexString(model.getSrc());
+//
+//
+// dismissDialog();
+// if (!TextUtils.isEmpty(device_mac)){
+// showDialog("正在绑定设备...");
+// connectDevice.cancel();
+// connectDevice.start();
+// }
+//// checkoutMac(device_mac);
+// }
+// L.i("jjia-------check_code-"+check_code);
+// L.i("jjia-------length-"+length);
+// L.i("jjia-------device_mac-"+device_mac);
+// }
+// }
+// });
+// }
+
+ int devicePosition = 0;
+ //jjia-push
+// private void sendBleData(){
+//
+// String ssid = tvWifiName.getText().toString();
+// String pwd = tvWifiPwd.getText().toString();
+//
+// OrderDeviceConnectModel model = OrderModel.OrderDeviceConnectModel(ssid, pwd,true);//设置正式环境域名
+// byte[] data = ModelCodec.enCode(model, Commons.IoBuffer);
+// BleManager.getInstance().write(currentDevice, SERVICE_UUID, WRITE_UUID, data,false, new BleWriteCallback() {
+// @Override
+// public void onWriteSuccess(int current, int total, byte[] justWrite) {
+//
+// L.i("jjia-------------ssid 发送");
+// }
+//
+// @Override
+// public void onWriteFailure(BleException exception) {
+//
+// }
+// });
+// }
+ //jjia-push
+// private void toReset(){
+// ResetDeviceModel model = OrderModel.resetDevice();//设置正式环境域名
+// byte[] data = ModelCodec.enCode(model);
+//// data = new byte[1];
+//
+//// QueryTempeSettingModel xx = OrderModel.OrderQueryTempeSettingModel(device_mac);
+//// byte[] data = ModelCodec.enCode(xx);
+// BleManager.getInstance().write(currentDevice, SERVICE_UUID, WRITE_UUID, data,false, new BleWriteCallback() {
+// @Override
+// public void onWriteSuccess(int current, int total, byte[] justWrite) {
+// L.i("jjia-------------重启 发送 成功-");
+// }
+//
+// @Override
+// public void onWriteFailure(BleException exception) {
+// L.i("jjia-------------重启 发送 失败"+exception.toString());
+// }
+// });
+// }
+
+
+ public static final String SERVICE_UUID = "000000ff-0000-1000-8000-00805f9b34fb"; //蓝牙通讯服务
+ public static final String READ_UUID = "0000ff01-0000-1000-8000-00805f9b34fb"; //读特征
+ public static final String WRITE_UUID = "0000ff01-0000-1000-8000-00805f9b34fb"; //写特征
+
+ //jjia-push
+// private void connectBle(){
+// BleManager.getInstance().connect(currentDevice, new BleGattCallback() {
+// @Override
+// public void onStartConnect() {
+// showDialog("开始连接蓝牙设备");
+// }
+//
+// @Override
+// public void onConnectFail(BleDevice bleDevice, BleException exception) {
+// ToastUtil.show(NewBindDeviceActivity.this,"连接蓝牙设备失败,请重试");
+// dismissDialog();
+// }
+//
+// @Override
+// public void onConnectSuccess(BleDevice bleDevice, BluetoothGatt gatt, int status) {
+//// ToastUtil.show(NewBindDeviceActivity.this,"蓝牙连接成功");
+//// setMessage("蓝牙连接成功");
+// BleManager.getInstance().setMtu(bleDevice, 512, new BleMtuChangedCallback() {
+// @Override
+// public void onSetMTUFailure(BleException exception) {
+// L.i("jjia-------MTU--"+exception.toString());
+// dismissDialog();
+// }
+//
+// @Override
+// public void onMtuChanged(int mtu) {
+// L.i("jjia-------MTU--"+mtu);
+// openNotify();
+// }
+// });
+// }
+//
+// @Override
+// public void onDisConnected(boolean isActiveDisConnected, BleDevice device, BluetoothGatt gatt, int status) {
+//// ToastUtil.show(NewBindDeviceActivity.this,"连接断开了");
+// }
+// });
+// }
+ private Activity act;
+ private ConnectDevice connectDevice;
+ private boolean isContinue = true;
+ public class ConnectDevice extends CountDownTimer {
+
+ public ConnectDevice(long millisInFuture, long countDownInterval) {
+ super(millisInFuture, countDownInterval);
+ }
+
+ @Override
+ public void onTick(long millisUntilFinished) {
+ long sum = millisUntilFinished / 1000 % 2;
+ if (sum == 0) {
+ if (!act.isFinishing() && isContinue) {
+ isNetWorkAvailable("www.baidu.com", new Comparable() {
+
+ @Override
+ public int compareTo(Boolean available) {
+ if (available) {
+ //jjia-push
+// toReset();
+ isContinue = false;
+ connectDevice.cancel();
+ L.i("jjia-----------调用绑定接口---");
+ doPostBindDevice();
+
+ }
+ return 0;
+ }
+ });
+ }
+ }
+ }
+
+ @Override
+ public void onFinish() {
+ if (isContinue) {
+ dismissDialog();
+ }
+ }
+ }
+
+ public static void isNetWorkAvailable(final String address, final Comparable callback) {
+ final Handler handler = new Handler() {
+
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ if (callback != null) {
+ callback.compareTo(msg.arg1 == 0);
+ }
+ }
+
+ };
+ new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ Runtime runtime = Runtime.getRuntime();
+ Message msg = new Message();
+ try {
+ Process pingProcess = runtime.exec("/system/bin/ping -c 1 " + address);
+ InputStreamReader isr = new InputStreamReader(pingProcess.getInputStream());
+ BufferedReader buf = new BufferedReader(isr);
+ if (buf.readLine() == null) {
+ msg.arg1 = -1;
+ } else {
+ msg.arg1 = 0;
+ }
+ buf.close();
+ isr.close();
+ } catch (Exception e) {
+ msg.arg1 = -1;
+ e.printStackTrace();
+ } finally {
+ runtime.gc();
+ handler.sendMessage(msg);
+ }
+ }
+
+ }).start();
+ }
+
+ private Device deviceObj;
+ private HttpManager hm = HttpManager.getInstance();
+ private boolean deviceIsNull = false;///当服务器返回的设备控制器数和定时器数为null的时候 改变标记的值 不跳转进入主界面
+ private int deviceIsNullNum = 0;//循环请求次数
+ private CountDownTimer deviceIsNullTimer;
+ private void doPostBindDevice() {
+ try {
+ hm.bindDevice(new HttpListener>() {
+ private int result;
+ @Override
+ public void success(BaseBean baseBean) {
+ result = baseBean.result;
+ if (result == Commons.NetWork.Success) {
+ deviceObj = baseBean.data;
+ deviceObj.setMacAddress(device_mac);
+ /**
+ //当服务器返回的设备控制器数和定时器数为null的时候 不跳转进入主界面
+ */
+ if (deviceObj.getControlAmount() == null || deviceObj.getTimerAmount() == null) {
+ L.i("第一次获取空");
+ deviceIsNull = true;
+ deviceIsNullNum = 0;
+
+ startDeviceIsNullTimer();//启动倒计时
+ }else {
+ doPostBindDeviceHandler.sendEmptyMessage(result);
+ }
+ }else {
+ doPostBindDeviceHandler.sendEmptyMessage(result);
+ }
+ }
+
+ @Override
+ public void finish() {
+ dismissDialog();
+ }
+
+ @Override
+ public void error(Exception e, String msg) {
+ result = Commons.NetWork.ERROR;
+ doPostBindDeviceHandler.sendEmptyMessage(result);
+ }
+ }, Commons.USER.getUserId(), device_mac);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void startDeviceIsNullTimer() {
+ if (deviceIsNullTimer == null) {
+ showDialog("获取设备信息中...");
+ deviceIsNullTimer = new CountDownTimer(2000, 1000) {
+ @Override
+ public void onTick(long arg0) {
+ }
+
+ @Override
+ public void onFinish() {
+ L.i("重新请求");
+ //拿到设备id 去服务器查询 看看是否为空
+ try {
+ hm.getSingleDeviceInf(new HttpListener>() {
+ private int result;
+
+ @Override
+ public void success(BaseBean baseBean) {
+ result = baseBean.result;
+ deviceObj = baseBean.data;
+ }
+
+ @Override
+ public void finish() {
+ dismissDialog();
+ deviceIsNullHandler.sendEmptyMessage(result);
+ }
+
+ @Override
+ public void error(Exception e, String msg) {
+ dismissDialog();
+ result = Commons.NetWork.ERROR;
+ }
+ }, deviceObj.getDeviceId(), Commons.USER.getUserId());
+ } catch (Exception e) {
+ e.printStackTrace();
+ dismissDialog();
+ }
+ }
+ };
+ }
+ deviceIsNullTimer.start();
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler doPostBindDeviceHandler = new Handler() {
+ public void handleMessage(Message msg) {
+ dismissDialog();
+ switch (msg.what) {
+ /**
+ * 1:绑定成功
+ 0:绑定失败
+ -4:请求验证失败,请重新登陆
+ -5:请求被舍弃,未执行
+ */
+ case Commons.NetWork.Success:
+ if (deviceIsNull) {//当服务器返回的设备控制器数和定时器数为null的时候 不跳转进入主界面
+ return;
+ }
+
+ List allDevices = Commons.DEVICE;
+
+ Device deviceBean = null;
+ int index =0 ;
+ if (deviceObj!=null && deviceObj.getMacAddress()!=null && allDevices!=null && allDevices.size()>0){
+ for (int i = 0;i deviceList;
+
+ @SuppressLint("MissingPermission")
+ private void findConencted(){
+ //jjia-push
+// deviceList = BleManager.getInstance().getAllConnectedDevice();
+// if (deviceList!=null && deviceList.size()>0){
+// for (BleDevice item:deviceList){
+// if (item!=null){
+// L.i("jjia-----------"+item.getDevice().getName());
+// }
+// }
+//
+// }else {
+// L.i("jjia--------没有连接的蓝牙---");
+// }
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ L.i(requestCode+"jjia--------result---"+resultCode);
+ L.i(requestCode+"jjia--------result-1--"+requestCode);
+ if (101== requestCode && 0==resultCode){
+ checkNet();
+ }
+ }
+ private void showDialog(String msg){
+ layoutLoading.setVisibility(View.VISIBLE);
+ dialogHint.setText(msg);
+ }
+
+ private void dismissDialog(){
+ layoutLoading.setVisibility(View.GONE);
+ }
+
+ public void onEventMainThread(EventBean eventBean){
+ if (eventBean!=null && EventBean.LINK_FINISH.equals(eventBean.name)){
+ finish();
+ }
+ }
+}
\ No newline at end of file
diff --git a/iFish7/src/main/java/com/ifish/activity/wxapi/WXEntryActivity.java b/iFish7/src/main/java/com/ifish/activity/wxapi/WXEntryActivity.java
index 1c533b420..bfccb74f0 100644
--- a/iFish7/src/main/java/com/ifish/activity/wxapi/WXEntryActivity.java
+++ b/iFish7/src/main/java/com/ifish/activity/wxapi/WXEntryActivity.java
@@ -8,8 +8,11 @@ import android.util.Log;
import androidx.annotation.Nullable;
import com.ifish.basebean.WxLoginMessageEvent;
+import com.lidroid.xutils.util.LogUtils;
+import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
+import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.openapi.IWXAPI;
@@ -60,5 +63,12 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
EventBus.getDefault().post(new WxLoginMessageEvent(false, "失败"));
break;
}
+
+ if (baseResp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
+ WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) baseResp;
+ String extraData = launchMiniProResp.extMsg; //对应组件 &lt;button open-type="launchApp"&gt; 中的 app-parameter 属性
+ LogUtils.d("LHD airkiss "+extraData);
+ }
+
}
}
diff --git a/iFish7/src/main/java/com/ifish/adapter/BlueToothController.java b/iFish7/src/main/java/com/ifish/adapter/BlueToothController.java
new file mode 100644
index 000000000..8875c8936
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/adapter/BlueToothController.java
@@ -0,0 +1,49 @@
+//package com.ifish.adapter;
+//
+//import android.Manifest;
+//import android.annotation.SuppressLint;
+//import android.app.Activity;
+//import android.bluetooth.BluetoothAdapter;
+//import android.content.Intent;
+//import android.content.pm.PackageManager;
+//
+//import androidx.core.app.ActivityCompat;
+//
+//import com.ifish.utils.ToastUtil;
+//
+//public class BlueToothController {
+//
+// BluetoothAdapter adapter;
+//
+// public BlueToothController() {
+// adapter = BluetoothAdapter.getDefaultAdapter();
+// }
+//
+// public boolean isOpen() {
+// if (adapter != null) {
+// return adapter.isEnabled();
+// } else {
+// return false;
+// }
+// }
+//
+//
+// @SuppressLint("MissingPermission")
+// public void open(Activity activity) {
+// Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
+//// Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
+// activity.startActivityForResult(intent, 11);
+// }
+//
+// @SuppressLint("MissingPermission")
+// public boolean find(){
+// if (adapter!=null){
+// return adapter.startDiscovery();
+// }else {
+// return false;
+// }
+//
+//
+// }
+//
+//}
diff --git a/iFish7/src/main/java/com/ifish/adapter/VideoListAdapter.java b/iFish7/src/main/java/com/ifish/adapter/VideoListAdapter.java
index cbad4de49..e9308861a 100644
--- a/iFish7/src/main/java/com/ifish/adapter/VideoListAdapter.java
+++ b/iFish7/src/main/java/com/ifish/adapter/VideoListAdapter.java
@@ -10,6 +10,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
import com.ifish.activity.EditVideoActivity;
import com.ifish.activity.R;
import com.ifish.basebean.IfishVideo;
@@ -69,7 +70,11 @@ public class VideoListAdapter extends BaseAdapter {
}
final IfishVideo bean = list.get(position);
if (bean!=null) {
- Glide.with(context).load(HttpManager.VIDEO_IMG_URL+bean.userId+"/"+ bean.commodityImg).placeholder(R.drawable.error_lookfishlist).error(R.drawable.error_lookfishlist).into(holder.iv_commodityImg);
+
+ Glide.with(context).load(HttpManager.VIDEO_IMG_URL+bean.userId+"/"+ bean.commodityImg)
+ .apply( new RequestOptions().placeholder(R.drawable.error_lookfishlist)
+ .error(R.drawable.error_lookfishlist))
+ .into(holder.iv_commodityImg);
holder.tv_commodityName.setText(bean.commodityName);
holder.tv_click.setText("浏览次数:"+bean.click+"次");
try {
diff --git a/iFish7/src/main/java/com/ifish/airkiss/AirKissEncoder.java b/iFish7/src/main/java/com/ifish/airkiss/AirKissEncoder.java
index 39555a488..c87b10a62 100644
--- a/iFish7/src/main/java/com/ifish/airkiss/AirKissEncoder.java
+++ b/iFish7/src/main/java/com/ifish/airkiss/AirKissEncoder.java
@@ -1,35 +1,44 @@
package com.ifish.airkiss;
+import android.util.Log;
+
+import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Random;
-
+//测试时需要先启动设备端程序,然后在手机上发送配网信息,根据周围环境条件,配网速度可能或快或慢
public class AirKissEncoder {
- private int mEncodedData[] = new int[2 << 14];
+ private int[] mEncodedData = new int[2 << 14];
private int mLength = 0;
// Random char should be in range [0, 127).
private char mRandomChar = (char)(new Random().nextInt(0x7F));
+// private char mRandomChar = 'A';//固定随机数
public AirKissEncoder(String ssid, String password) {
+ Log.d("LHD","随机数 = "+mRandomChar);
int times = 5;
while (times-- > 0) {
leadingPart();
magicCode(ssid, password);
-
for (int i = 0; i < 15; ++i) {
prefixCode(password);
String data = password + mRandomChar + ssid;
+ try {
+ data = new String(data.getBytes(), "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
int index;
byte content[] = new byte[4];
- for (index = 0; index < data.length() / 4; ++index) {
+ for (index = 0; index < data.getBytes().length / 4; ++index) {
System.arraycopy(data.getBytes(), index * 4, content, 0, content.length);
sequence(index, content);
}
-
- if (data.length() % 4 != 0) {
- content = new byte[data.length() % 4];
+ if (data.getBytes().length % 4 != 0) {
+ content = new byte[data.getBytes().length % 4];
System.arraycopy(data.getBytes(), index * 4, content, 0, content.length);
sequence(index, content);
+
}
}
}
@@ -50,9 +59,9 @@ public class AirKissEncoder {
private int CRC8(byte data[]) {
int len = data.length;
int i = 0;
- byte crc = 0x00;
+ int crc = 0x00;
while (len-- > 0) {
- byte extract = data[i++];
+ int extract = data[i++];
for (byte tempI = 8; tempI != 0; tempI--) {
byte sum = (byte) ((crc & 0xFF) ^ (extract & 0xFF));
sum = (byte) ((sum & 0xFF) & 0x01);
@@ -78,13 +87,20 @@ public class AirKissEncoder {
}
private void magicCode(String ssid, String password) {
- int length = ssid.length() + password.length() + 1;
+ byte[] bSsid = ssid.getBytes();
+ String u8Ssid = null;
+ try {
+ u8Ssid = new String(bSsid, "UTF-8" );
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ int length = u8Ssid.getBytes().length+ password.length()+1;
int magicCode[] = new int[4];
magicCode[0] = 0x00 | (length >>> 4 & 0xF);
if (magicCode[0] == 0)
magicCode[0] = 0x08;
magicCode[1] = 0x10 | (length & 0xF);
- int crc8 = CRC8(ssid);
+ int crc8 = CRC8(u8Ssid);
magicCode[2] = 0x20 | (crc8 >>> 4 & 0xF);
magicCode[3] = 0x30 | (crc8 & 0xF);
for (int i = 0; i < 20; ++i) {
@@ -112,7 +128,9 @@ public class AirKissEncoder {
int crc8 = CRC8(content);
appendEncodedData(0x80 | crc8);
appendEncodedData(0x80 | index);
- for (byte aData : data)
- appendEncodedData(aData | 0x100);
+ for (byte aData : data) {
+ int bData = (aData & 0xff);
+ appendEncodedData(bData | 0x100);
+ }
}
}
diff --git a/iFish7/src/main/java/com/ifish/airkiss/UDPReceiver.java b/iFish7/src/main/java/com/ifish/airkiss/UDPReceiver.java
index 5d79d48fc..3497da235 100644
--- a/iFish7/src/main/java/com/ifish/airkiss/UDPReceiver.java
+++ b/iFish7/src/main/java/com/ifish/airkiss/UDPReceiver.java
@@ -1,87 +1,99 @@
-package com.ifish.airkiss;
-
-import android.util.Log;
-
-import com.ifish.utils.WifiUtil;
-
-import java.net.DatagramPacket;
-import java.net.DatagramSocket;
-import java.net.SocketException;
-import java.nio.charset.StandardCharsets;
-
-/**
- * @author:zau18
- * @date: 2023/9/4 9:09 下午
- * @description:
- */
-// 创建一个接收器类
-public class UDPReceiver extends Thread {
- private static final int MAX_UDP_DATAGRAM_LEN = 1500;
- private DatagramSocket mSocket;
- private boolean mRunning;
- private UdpCallback resultBack;
- private WifiUtil wifiUtil;
-
- public UDPReceiver(WifiUtil wifiUtil,UdpCallback resultBack) {
- this.wifiUtil = wifiUtil;
- this.resultBack = resultBack;
- try {
- if(mSocket != null){
- mSocket.close();
- mSocket.disconnect();
- mSocket = null;
- }
- // 创建一个UDP套接字
- mSocket = new DatagramSocket(10000);
- } catch (SocketException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void run() {
- mRunning = true;
- byte[] buffer = new byte[MAX_UDP_DATAGRAM_LEN];
- DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
-
- while (mRunning) {
- try {
- // 接收UDP数据包
- mSocket.receive(packet);
-// String hexString = Str_Hex.byte2hex(packet.getData());
- String data = new String(packet.getData(), 0, packet.getLength(), StandardCharsets.UTF_8);
- Log.e("test9999999990","收到的udp包 ip=" + packet.getAddress().getHostAddress());
- // 处理接收到的数据
- if(!packet.getAddress().getHostAddress().equals(WifiUtil.intToIp(wifiUtil.getConnectIpAddress()))){
- handleData(data);
- }
- } catch (Exception e) {
- e.printStackTrace();
- handleErrorData(e.toString());
- }
- }
- mSocket.close();
- }
-
- public void stopRunning() {
- mRunning = false;
- if(mSocket != null){
- mSocket.close();
- mSocket.disconnect();
- }
- }
-
- private void handleData(String data) {
- // 处理接收到的数据
- if(resultBack != null){
- resultBack.onReceive(data);
- }
- }
-
- private void handleErrorData(String data) {
- // 处理接收到的数据
- if(resultBack != null){
- resultBack.onError(data);
- }
- }
-}
+//package com.ifish.airkiss;
+//
+//import android.util.Log;
+//
+//import com.ifish.utils.WifiUtil;
+//import com.lidroid.xutils.util.LogUtils;
+//
+//import java.net.DatagramPacket;
+//import java.net.DatagramSocket;
+//import java.net.InetSocketAddress;
+//import java.net.SocketException;
+//import java.nio.charset.StandardCharsets;
+//
+///**
+// * @author:zau18
+// * @date: 2023/9/4 9:09 下午
+// * @description:
+// */
+//// 创建一个接收器类
+//public class UDPReceiver extends Thread {
+// private static final int MAX_UDP_DATAGRAM_LEN = 15000;
+// private DatagramSocket mSocket;
+// private boolean mRunning;
+// private UdpCallback resultBack;
+// private WifiUtil wifiUtil;
+//
+// public UDPReceiver(WifiUtil wifiUtil,UdpCallback resultBack) {
+// this.wifiUtil = wifiUtil;
+// this.resultBack = resultBack;
+// try {
+// if(mSocket != null){
+// mSocket.close();
+// mSocket.disconnect();
+// mSocket = null;
+// }
+// // 创建一个UDP套接字
+// mSocket = new DatagramSocket(null);
+// mSocket.bind(new InetSocketAddress(10000));
+// mSocket.setSoTimeout(1000 * 60);
+// } catch (SocketException e) {
+// e.printStackTrace();
+// }
+// }
+//
+// @Override
+// public void run() {
+// mRunning = true;
+// byte[] buffer = new byte[MAX_UDP_DATAGRAM_LEN];
+// DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
+//
+// while (mRunning) {
+// try {
+// LogUtils.d("LHD 开始接受");
+// // 接收UDP数据包
+// mSocket.receive(packet);
+// String ip3 = WifiUtil.intToIp(wifiUtil.getConnectIpAddress());
+// LogUtils.d("LHD 开始接受 = "+" ip3 = "+ip3);
+//// Log.e("LHD test9999999990","收到的udp包 ip=" + packet.getAddress().getHostAddress()+" ip3 = "+ip3);
+// // 处理接收到的数据
+// if(!packet.getAddress().getHostAddress().equals(WifiUtil.intToIp(wifiUtil.getConnectIpAddress()))){
+// String data = new String(packet.getData(), 0, packet.getLength(), StandardCharsets.UTF_8);
+// String hexString = Str_Hex.byte2hex(packet.getData());
+// handleData(hexString);
+// }
+// }catch (SocketException e) {
+// LogUtils.d("LHD SocketException : " + e.getLocalizedMessage());
+// handleErrorData(e.toString());
+// e.printStackTrace();
+// } catch (Exception e) {
+// e.printStackTrace();
+// handleErrorData(e.toString());
+// }
+// }
+// mSocket.close();
+// }
+//
+// public void stopRunning() {
+// mRunning = false;
+// if(mSocket != null){
+// mSocket.close();
+// mSocket.disconnect();
+// }
+// }
+//
+// private void handleData(String data) {
+// // 处理接收到的数据
+// if(resultBack != null){
+// resultBack.onReceive(data);
+// }
+// }
+//
+// private void handleErrorData(String data) {
+// stopRunning();
+// // 处理接收到的数据
+// if(resultBack != null){
+// resultBack.onError(data);
+// }
+// }
+//}
diff --git a/iFish7/src/main/java/com/ifish/basebean/BaseBean.java b/iFish7/src/main/java/com/ifish/basebean/BaseBean.java
index 183161b48..b73ec007a 100644
--- a/iFish7/src/main/java/com/ifish/basebean/BaseBean.java
+++ b/iFish7/src/main/java/com/ifish/basebean/BaseBean.java
@@ -1,5 +1,7 @@
package com.ifish.basebean;
+import com.ifish.utils.Commons;
+
/**
*
* @ClassName: BaseBean
@@ -11,4 +13,9 @@ public class BaseBean {
public int result;
public int total;
public T data;
+
+ public boolean isSuccess(){
+ return Commons.NetWork.Success == result;
+
+ }
}
diff --git a/iFish7/src/main/java/com/ifish/basebean/Device.java b/iFish7/src/main/java/com/ifish/basebean/Device.java
index c07703e78..dca8d690d 100644
--- a/iFish7/src/main/java/com/ifish/basebean/Device.java
+++ b/iFish7/src/main/java/com/ifish/basebean/Device.java
@@ -412,8 +412,41 @@ public class Device implements Serializable {
@Override
public String toString() {
- return "Device [deviceId=" + deviceId + ", showName=" + showName
- + ", macAddress=" + macAddress + ", type=" + type + "]";
+ return "Device{" +
+ "userId='" + userId + '\'' +
+ ", deviceId='" + deviceId + '\'' +
+ ", showName='" + showName + '\'' +
+ ", storeName='" + storeName + '\'' +
+ ", deviceIp='" + deviceIp + '\'' +
+ ", macAddress='" + macAddress + '\'' +
+ ", loginTime='" + loginTime + '\'' +
+ ", isMaster='" + isMaster + '\'' +
+ ", isWorkModel='" + isWorkModel + '\'' +
+ ", isPushWendu='" + isPushWendu + '\'' +
+ ", isCustomIcon='" + isCustomIcon + '\'' +
+ ", customIconName='" + customIconName + '\'' +
+ ", iconLink='" + iconLink + '\'' +
+ ", allIconName='" + allIconName + '\'' +
+ ", defaultIconName='" + defaultIconName + '\'' +
+ ", defaultShowName='" + defaultShowName + '\'' +
+ ", customShowName='" + customShowName + '\'' +
+ ", allShowName='" + allShowName + '\'' +
+ ", updateTime='" + updateTime + '\'' +
+ ", controlAmount=" + controlAmount +
+ ", timerAmount=" + timerAmount +
+ ", venderList=" + venderList +
+ ", click=" + click +
+ ", todayRemind='" + todayRemind + '\'' +
+ ", waterRemind='" + waterRemind + '\'' +
+ ", remindDate='" + remindDate + '\'' +
+ ", remindCycle='" + remindCycle + '\'' +
+ ", isLightness='" + isLightness + '\'' +
+ ", isSarkLamp='" + isSarkLamp + '\'' +
+ ", isEdText=" + isEdText +
+ ", isBind=" + isBind +
+ ", isBlacklist='" + isBlacklist + '\'' +
+ ", type='" + type + '\'' +
+ '}';
}
public Device(String showName) {
diff --git a/iFish7/src/main/java/com/ifish/basebean/EventBean.java b/iFish7/src/main/java/com/ifish/basebean/EventBean.java
new file mode 100644
index 000000000..d3c027d8d
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/basebean/EventBean.java
@@ -0,0 +1,33 @@
+package com.ifish.basebean;
+
+public class EventBean {
+
+ public EventBean(String name, int index) {
+ this.name = name;
+ this.index = index;
+ }
+
+ public String name;
+ public String value;
+ public int index = 0;
+ // jiablue
+// public static String BLUETOOTH_START_SCAN = "start_scan";
+ public static String BACK_STAGE = "back_stage";
+ public static String TAB_INDEX = "tab_index";
+ public static String LINK_FINISH = "link_finish";
+ public static String CHANGE_DEVICE_NAME = "change_device_name";
+ public static String HEADER = "header";
+ public static String SELECT = "select";
+ public static String CARD = "card";
+
+ public EventBean(String name){
+ this.name = name;
+ }
+ public EventBean(String name,String value){
+ this.name = name;
+ this.value = value;
+ }
+
+
+
+}
diff --git a/iFish7/src/main/java/com/ifish/basebean/LiveRoomInfo.java b/iFish7/src/main/java/com/ifish/basebean/LiveRoomInfo.java
index f647d7596..28b827ab0 100644
--- a/iFish7/src/main/java/com/ifish/basebean/LiveRoomInfo.java
+++ b/iFish7/src/main/java/com/ifish/basebean/LiveRoomInfo.java
@@ -52,4 +52,5 @@ public class LiveRoomInfo implements Serializable {
public LiveRoomInfo(String roomId) {
this.roomId = roomId;
}
+
}
diff --git a/iFish7/src/main/java/com/ifish/basebean/TimeBean.java b/iFish7/src/main/java/com/ifish/basebean/TimeBean.java
new file mode 100644
index 000000000..29def3f9a
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/basebean/TimeBean.java
@@ -0,0 +1,39 @@
+package com.ifish.basebean;
+
+import com.ifish.utils.L;
+
+public class TimeBean {
+ private byte no;
+ private int start;
+ private int end;
+
+
+ public byte getNo() {
+ return no;
+ }
+
+ public int getEnd() {
+ return end;
+ }
+
+ public void setEnd(int end) {
+ this.end = end;
+ }
+
+ public void setStart(int start) {
+ this.start = start;
+ }
+
+ public int getStart() {
+ return start;
+ }
+
+ public TimeBean(byte no,int start, int end){
+ this.no = no;
+ this.start = start;
+ this.end =end;
+
+ L.i("jjia------"+start+"-"+end);
+ }
+
+}
diff --git a/iFish7/src/main/java/com/ifish/baseclass/BaseActivity.java b/iFish7/src/main/java/com/ifish/baseclass/BaseActivity.java
index b52a72647..6d7912710 100644
--- a/iFish7/src/main/java/com/ifish/baseclass/BaseActivity.java
+++ b/iFish7/src/main/java/com/ifish/baseclass/BaseActivity.java
@@ -1,21 +1,18 @@
package com.ifish.baseclass;
-
-
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
-import android.content.pm.ActivityInfo;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
+import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;
import android.widget.Toast;
-
import com.ifish.activity.R;
import com.ifish.basebean.BaseBean;
import com.ifish.basebean.UserAsset;
@@ -27,7 +24,6 @@ import com.ifish.utils.HttpManager;
import com.ifish.utils.L;
import com.ifish.utils.ToastGradeUtil;
import com.ifish.view.CustomProgressDialog;
-import com.tendcloud.tenddata.TCAgent;
/**
* @author Jacky dada
@@ -78,6 +74,26 @@ public class BaseActivity extends Activity implements OnClickListener {
}
}
+
+ protected void setAcTitle(String title,String mac){
+ if (!TextUtils.isEmpty(title)){
+ if (Commons.DEVICE != null) {
+ if (!Commons.DEVICE.isEmpty()) {
+ for (int i = 0; i < Commons.DEVICE.size(); i++) {
+ if (mac.equals(Commons.DEVICE.get(i).getMacAddress())) {
+ title = Commons.DEVICE.get(i).getShowName();
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (!TextUtils.isEmpty(title)){
+ title = Commons.DEVICE.get(Commons.DevicePosition).getShowName();
+ }
+ initTitle(title);
+ }
+
protected boolean isCompatible(int apiLevel) {
return Build.VERSION.SDK_INT >= apiLevel;
}
@@ -186,14 +202,12 @@ public class BaseActivity extends Activity implements OnClickListener {
@Override
protected void onResume() {
super.onResume();
- TCAgent.onResume(this);
L.i(this.getClass().getName() + "----------------onResume");
}
@Override
protected void onPause() {
super.onPause();
- TCAgent.onPause(this);
L.i(this.getClass().getName() + "----------------onPause");
}
diff --git a/iFish7/src/main/java/com/ifish/baseclass/BaseActivityNotAnim.java b/iFish7/src/main/java/com/ifish/baseclass/BaseActivityNotAnim.java
index 7cc8dc1f6..3485ecefb 100644
--- a/iFish7/src/main/java/com/ifish/baseclass/BaseActivityNotAnim.java
+++ b/iFish7/src/main/java/com/ifish/baseclass/BaseActivityNotAnim.java
@@ -17,7 +17,6 @@ import android.widget.Toast;
import com.ifish.utils.ActivityManager;
import com.ifish.utils.L;
import com.ifish.view.CustomProgressDialog;
-import com.tendcloud.tenddata.TCAgent;
/**
*
* @ClassName: BaseActivityNotAnim
@@ -36,7 +35,7 @@ public class BaseActivityNotAnim extends Activity implements OnClickListener {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题栏
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//锁定竖屏
- toast = Toast.makeText(this, "", 0);
+ toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
}
/**
* 初始化控件
@@ -77,13 +76,11 @@ public class BaseActivityNotAnim extends Activity implements OnClickListener {
@Override
protected void onResume() {
super.onResume();
- TCAgent.onResume(this);
L.i(this.getClass().getName()+"----------------onResume");
}
@Override
protected void onPause() {
super.onPause();
- TCAgent.onPause(this);
L.i(this.getClass().getName()+"----------------onPause");
}
@Override
diff --git a/iFish7/src/main/java/com/ifish/baseclass/BaseApplication.java b/iFish7/src/main/java/com/ifish/baseclass/BaseApplication.java
index c687b41d4..f3c50cd3e 100644
--- a/iFish7/src/main/java/com/ifish/baseclass/BaseApplication.java
+++ b/iFish7/src/main/java/com/ifish/baseclass/BaseApplication.java
@@ -8,28 +8,50 @@
package com.ifish.baseclass;
import android.app.Activity;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
-import android.content.Context;
import android.graphics.Color;
-import android.os.Build;
import android.os.Bundle;
import android.util.Log;
-
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.multidex.MultiDexApplication;
-
-import com.alibaba.sdk.android.push.CloudPushService;
-import com.alibaba.sdk.android.push.CommonCallback;
-import com.alibaba.sdk.android.push.PushControlService;
-import com.alibaba.sdk.android.push.huawei.HuaWeiRegister;
-import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
-import com.alibaba.sdk.android.push.register.MiPushRegister;
+//import com.clj.fastble.BleManager;
+//import com.clj.fastble.scan.BleScanRuleConfig;
+import com.ifish.activity.BuildConfig;
+import com.ifish.basebean.EventBean;
+import com.ifish.utils.ActivityManager;
+import com.ifish.utils.ImageDownLoader;
+import com.ifish.utils.L;
import com.ifish.utils.SystemUtil;
+import com.ifish.utils.TrustAllCerts;
+//import com.igexin.sdk.PushManager;
+import com.igexin.sdk.PushManager;
import com.p2p.core.P2PSpecial.P2PSpecial;
+<<<<<<< HEAD
//import com.tencent.bugly.crashreport.CrashReport;
import com.tendcloud.tenddata.TCAgent;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;
+=======
+import com.squareup.picasso.Picasso;
+
+import java.security.SecureRandom;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+
+import de.greenrobot.event.EventBus;
+import okhttp3.OkHttpClient;
+>>>>>>> release
/**
* @author Jacky dada
@@ -55,27 +77,100 @@ public class BaseApplication extends MultiDexApplication {
// public static String BASE = "https://app.ifish7.cn/";//正式环境 接口访问地址
public static String BASE = "http://139.196.24.156:7080/";//测试环境 接口访问地址
public static String BASE_URL = BASE + "api/";// 接口URL
+ public static final String SERVICE_UUID = "000000ff-0000-1000-8000-00805f9b34fb";
+ private int count = 0;
@Override
public void onCreate() {
super.onCreate();
app = this;
- initCrashSDK();
- initTalkingDataSDK();
-// initLocationSDK();
- initShareSDK();
-// initSMSSDK();
-// initAlibcTradeSDK();
- initalipushSDK();
P2PSpecial.getInstance().init(app, APPID, APPToken, APPVersion);
initLog();
+ initPicasso();
+ //jjia-push
+// BleManager.getInstance().init(this);
+
+ UUID[] uuids = {UUID.fromString(SERVICE_UUID)};
+ //jjia-push
+// BleScanRuleConfig scanRuleConfig = new BleScanRuleConfig.Builder()
+// .setServiceUuids(uuids) // 只扫描指定的服务的设备,可选
+//// .setDeviceName(true, names) // 只扫描指定广播名的设备,可选
+//// .setDeviceMac(mac) // 只扫描指定mac的设备,可选
+//// .setAutoConnect(isAutoConnect) // 连接时的autoConnect参数,可选,默认false
+// .setScanTimeOut(30000) // 扫描超时时间30S,可选,默认10秒;小于等于0表示不限制扫描时间
+// .build();
+// BleManager.getInstance().initScanRule(scanRuleConfig);
+
+
+ registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
+ @Override
+ public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {
+
+ }
+
+ @Override
+ public void onActivityStarted(@NonNull Activity activity) {
+ if (count==0){
+ EventBean eventBean = new EventBean(EventBean.BACK_STAGE,1);
+ EventBus.getDefault().post(eventBean);
+// Activity activityName = ActivityManager.getInstance().lastActivity();
+// if (activityName!=null && activityName.toString().contains("MainTabActivity")){
+// // jiablue
+//// EventBean eventBean = new EventBean(EventBean.BLUETOOTH_START_SCAN);
+//// EventBus.getDefault().post(eventBean);
+// }
+ }
+ count++;
+
+ }
+
+ @Override
+ public void onActivityResumed(@NonNull Activity activity) {
+
+ }
+
+ @Override
+ public void onActivityPaused(@NonNull Activity activity) {
+
+ }
+
+ @Override
+ public void onActivityStopped(@NonNull Activity activity) {
+ count--;
+ if (count==0){
+ EventBean eventBean = new EventBean(EventBean.BACK_STAGE,-1);
+ EventBus.getDefault().post(eventBean);
+// Activity activityName = ActivityManager.getInstance().lastActivity();
+// if (activityName!=null && activityName.toString().contains("MainTabActivity")){
+// // jiablue
+//
+// }
+ }
+ }
+
+ @Override
+ public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {
+
+ }
+
+ @Override
+ public void onActivityDestroyed(@NonNull Activity activity) {
+
+ }
+ });
+
+
}
+ /**
+ * 显示当前Acitivity名字
+ */
private void initLog() {
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
Log.i("ifish7", "LHD" + "---" + activity.getLocalClassName());
+
}
@Override
@@ -85,7 +180,27 @@ public class BaseApplication extends MultiDexApplication {
@Override
public void onActivityResumed(Activity activity) {
+ if (BuildConfig.DEBUG){
+ Log.i("ifish7", "LHD" + " debug模式显示当前页面:"+activity.getLocalClassName());
+ // 创建一个新的TextView
+ TextView textView = new TextView(activity);
+ textView.setText(activity.getLocalClassName());
+ textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
+ textView.setTextColor(Color.YELLOW);
+ // 设置TextView的布局参数,确保它有一个合适的大小
+ FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
+ FrameLayout.LayoutParams.WRAP_CONTENT,
+ FrameLayout.LayoutParams.WRAP_CONTENT,
+ Gravity.TOP | Gravity.START);
+ // 可以设置具体的边距和位置
+ layoutParams.setMargins(10, 10, 10, 10);
+ textView.setLayoutParams(layoutParams);
+ // 获取根布局容器
+ ViewGroup rootLayout = (ViewGroup) activity.getWindow().getDecorView().findViewById(android.R.id.content);
+ // 在布局容器的顶部添加TextView
+ rootLayout.addView(textView); // 0 表示将视图添加到容器的顶部
+ }
}
@Override
@@ -110,6 +225,7 @@ public class BaseApplication extends MultiDexApplication {
});
}
+<<<<<<< HEAD
private void initalipushSDK() {
PushServiceFactory.init(this);
@@ -201,9 +317,67 @@ public class BaseApplication extends MultiDexApplication {
// PlatformConfig.setQQZone("1105206998", "rTiJNwzYY79DExD9");
}
+=======
+>>>>>>> release
public boolean inMainProcess() {
String packageName = getPackageName();
String processName = SystemUtil.getProcessName(this);
return packageName.equals(processName);
}
+
+ /**
+ * 初始化picasso使用okhttp作为网络请求框架
+ */
+ private void initPicasso() {
+
+ Picasso
+ .setSingletonInstance(new Picasso.Builder(this).
+ downloader(new ImageDownLoader(getSOkHttpClient())).loggingEnabled(true)
+ .build());
+
+ }
+
+ /**
+ * 创建全局OkHttpClient对象
+ *
+ * OkHttpClient 用于管理所有的请求,内部支持并发,
+ * 所以我们不必每次请求都创建一个 OkHttpClient 对象,这是非常耗费资源的。接下来就是创建一个 Request 对象了
+ *
+ * @return
+ */
+ public static OkHttpClient getSOkHttpClient() {
+ //创建okhttp的请求对象 参考地址 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html
+ return new OkHttpClient.Builder()
+ .readTimeout(20000, TimeUnit.SECONDS)//设置读取超时时间
+ .writeTimeout(20000, TimeUnit.SECONDS)//设置写的超时时间
+ .connectTimeout(20000, TimeUnit.SECONDS)//设置连接超时时间
+ .sslSocketFactory(createSSLSocketFactory()) //添加信任所有证书
+ .hostnameVerifier(new HostnameVerifier() { //信任规则全部信任
+ @Override
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+ })
+ .build();
+ }
+
+ /**
+ * 测试环境https添加全部信任
+ * okhttp的配置
+ *
+ * @return
+ */
+ private static SSLSocketFactory createSSLSocketFactory() {
+ SSLSocketFactory ssfFactory = null;
+
+ try {
+ SSLContext sc = SSLContext.getInstance("TLS");
+ sc.init(null, new TrustManager[]{new TrustAllCerts()}, new SecureRandom());
+
+ ssfFactory = sc.getSocketFactory();
+ } catch (Exception e) {
+ }
+
+ return ssfFactory;
+ }
}
diff --git a/iFish7/src/main/java/com/ifish/baseclass/BaseFragmentActivity.java b/iFish7/src/main/java/com/ifish/baseclass/BaseFragmentActivity.java
index 245041a2d..ffba294f9 100644
--- a/iFish7/src/main/java/com/ifish/baseclass/BaseFragmentActivity.java
+++ b/iFish7/src/main/java/com/ifish/baseclass/BaseFragmentActivity.java
@@ -27,7 +27,6 @@ import com.ifish.utils.HttpManager;
import com.ifish.utils.L;
import com.ifish.utils.ToastGradeUtil;
import com.ifish.view.CustomProgressDialog;
-import com.tendcloud.tenddata.TCAgent;
/**
*
* @ClassName: BaseFragmentActivity
@@ -160,13 +159,11 @@ public class BaseFragmentActivity extends FragmentActivity implements OnClickL
@Override
protected void onResume() {
super.onResume();
- TCAgent.onResume(this);
L.i(this.getClass().getName()+"----------------onResume");
}
@Override
protected void onPause() {
super.onPause();
- TCAgent.onPause(this);
L.i(this.getClass().getName()+"----------------onPause");
}
@Override
diff --git a/iFish7/src/main/java/com/ifish/baseclass/BaseSingleActivity.java b/iFish7/src/main/java/com/ifish/baseclass/BaseSingleActivity.java
index 87e283016..faa5dae96 100644
--- a/iFish7/src/main/java/com/ifish/baseclass/BaseSingleActivity.java
+++ b/iFish7/src/main/java/com/ifish/baseclass/BaseSingleActivity.java
@@ -18,7 +18,6 @@ import android.widget.Toast;
import com.ifish.activity.R;
import com.ifish.utils.ActivityManager;
import com.ifish.utils.L;
-import com.tendcloud.tenddata.TCAgent;
/**
*
* @ClassName: BaseActivity 无标题点击效果 点两下返回退出应用
@@ -40,7 +39,7 @@ public class BaseSingleActivity extends Activity implements OnClickListener {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题栏
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//锁定竖屏
- toast = Toast.makeText(this, "", 0);
+ toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
}
/**
*
@@ -62,13 +61,11 @@ public class BaseSingleActivity extends Activity implements OnClickListener {
@Override
protected void onResume() {
super.onResume();
- TCAgent.onResume(this);
L.i(this.getClass().getName()+"----------------onResume");
}
@Override
protected void onPause() {
super.onPause();
- TCAgent.onPause(this);
L.i(this.getClass().getName()+"----------------onPause");
}
@Override
diff --git a/iFish7/src/main/java/com/ifish/baseclass/BaseSwipeBackActivity.java b/iFish7/src/main/java/com/ifish/baseclass/BaseSwipeBackActivity.java
index 7ca0ab0de..118810013 100644
--- a/iFish7/src/main/java/com/ifish/baseclass/BaseSwipeBackActivity.java
+++ b/iFish7/src/main/java/com/ifish/baseclass/BaseSwipeBackActivity.java
@@ -20,7 +20,6 @@ import com.ifish.utils.AnimationUtil;
import com.ifish.utils.L;
import com.ifish.view.CustomProgressDialog;
import com.ifish.view.SwipeBackActivity;
-import com.tendcloud.tenddata.TCAgent;
/**
*
* @ClassName: BaseSwipeBackActivity
@@ -40,7 +39,7 @@ public class BaseSwipeBackActivity extends SwipeBackActivity implements OnClic
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题栏
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//锁定竖屏
- toast = Toast.makeText(this, "", 0);
+ toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
}
/**
* 初始化控件
@@ -81,13 +80,11 @@ public class BaseSwipeBackActivity extends SwipeBackActivity implements OnClic
@Override
protected void onResume() {
super.onResume();
- TCAgent.onResume(this);
L.i(this.getClass().getName()+"----------------onResume");
}
@Override
protected void onPause() {
super.onPause();
- TCAgent.onPause(this);
L.i(this.getClass().getName()+"----------------onPause");
}
@Override
diff --git a/iFish7/src/main/java/com/ifish/bluetooth/ClsUtils.java b/iFish7/src/main/java/com/ifish/bluetooth/ClsUtils.java
new file mode 100644
index 000000000..c1136e45e
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/bluetooth/ClsUtils.java
@@ -0,0 +1,197 @@
+package com.ifish.bluetooth;
+
+import android.annotation.SuppressLint;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.bluetooth.BluetoothSocket;
+import android.util.Log;
+
+import com.ifish.utils.L;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.UUID;
+
+public class ClsUtils {
+
+ public static BluetoothDevice remoteDevice = null;
+
+ /**
+ * 与设备配对 参考源码:platform/packages/apps/Settings.git
+ * /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
+ */
+ @SuppressLint("MissingPermission")
+ static public boolean connn(BluetoothDevice btDevice,String uuid){
+ try {
+ BluetoothSocket socket = btDevice.createInsecureRfcommSocketToServiceRecord(UUID.fromString(uuid));
+ socket.connect();
+
+ return true;
+
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
+
+ }
+
+ static public boolean createBond1(BluetoothDevice btDevice)
+ throws Exception {
+ Method createBondMethod = btDevice.getClass().getMethod("createBond");
+ Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice);
+ return returnValue.booleanValue();
+ }
+
+
+ @SuppressWarnings("unchecked")
+ static public boolean createBond(@SuppressWarnings("rawtypes") Class btClass, BluetoothDevice btDevice)
+ throws Exception {
+ Method createBondMethod = btClass.getMethod("createBond");
+ Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice);
+ return returnValue.booleanValue();
+ }
+
+ //自动配对设置Pin值
+ static public boolean autoBond(Class btClass,BluetoothDevice device,String strPin) throws Exception {
+ Method autoBondMethod = btClass.getMethod("setPin",new Class[]{byte[].class});
+ Boolean result = (Boolean)autoBondMethod.invoke(device,new Object[]{strPin.getBytes()});
+ return result;
+ }
+
+ static public void setPairingConfirmation(BluetoothDevice device){
+ try {
+ Field field = device.getClass().getDeclaredField("sService");
+ field.setAccessible(true);
+
+ Object service = field.get(device);
+ Method method = service.getClass().getDeclaredMethod("setPairingConfirmation",
+ BluetoothDevice.class, boolean.class);
+ method.setAccessible(true);
+ method.invoke(service, device, true);
+
+ } catch (NoSuchFieldException e) {
+ e.printStackTrace();
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ /**
+ * 与设备解除配对 参考源码:platform/packages/apps/Settings.git
+ * /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
+ */
+ @SuppressWarnings("unchecked")
+ static public boolean removeBond(Class btClass, BluetoothDevice btDevice)
+ throws Exception {
+ Method removeBondMethod = btClass.getMethod("removeBond");
+ Boolean returnValue = (Boolean) removeBondMethod.invoke(btDevice);
+ return returnValue.booleanValue();
+ }
+
+ @SuppressWarnings("unchecked")
+ static public boolean setPin(Class btClass, BluetoothDevice btDevice,
+ String str) throws Exception {
+ try {
+ Method removeBondMethod = btClass.getDeclaredMethod("setPin",
+ new Class[]
+ {byte[].class});
+ Boolean returnValue = (Boolean) removeBondMethod.invoke(btDevice,
+ new Object[]
+ {str.getBytes()});
+ } catch (SecurityException e) {
+ // throw new RuntimeException(e.getMessage());
+ e.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ // throw new RuntimeException(e.getMessage());
+ e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return true;
+
+ }
+
+ // 取消用户输入
+ //cancelPairingUserInput()取消用户输入密钥框,
+ // 个人觉得一般情况下不要和
+ // setPin(setPasskey、setPairingConfirmation、 setRemoteOutOfBandData)一起用,
+ // 这几个方法都会remove掉map里面的key:value(也就是互斥的 )
+ @SuppressWarnings("unchecked")
+ static public boolean cancelPairingUserInput(Class btClass,
+ BluetoothDevice device)
+
+ throws Exception {
+ Method createBondMethod = btClass.getMethod("cancelPairingUserInput");
+ // cancelBondProcess()
+ Boolean returnValue = (Boolean) createBondMethod.invoke(device);
+
+ return returnValue.booleanValue();
+ }
+
+ // 取消配对
+ @SuppressWarnings("unchecked")
+ static public boolean cancelBondProcess(Class btClass,
+ BluetoothDevice device)
+ throws Exception {
+ Method createBondMethod = btClass.getMethod("cancelBondProcess");
+ Boolean returnValue = (Boolean) createBondMethod.invoke(device);
+ return returnValue.booleanValue();
+ }
+
+ /**
+ * @param clsShow
+ */
+ @SuppressWarnings("unchecked")
+ static public void printAllInform(Class clsShow) {
+ try {
+ // 取得所有方法
+ Method[] hideMethod = clsShow.getMethods();
+ int i = 0;
+ for (; i < hideMethod.length; i++) {
+ //Log.e("method name", hideMethod.getName() + ";and the i is:"
+ // + i);
+ }
+ // 取得所有常量
+ Field[] allFields = clsShow.getFields();
+ for (i = 0; i < allFields.length; i++) {
+ //Log.e("Field name", allFields.getName());
+ }
+ } catch (SecurityException e) {
+ // throw new RuntimeException(e.getMessage());
+ e.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ // throw new RuntimeException(e.getMessage());
+ e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Clears the internal cache and forces a refresh of the services from the * remote device.
+ */
+ public static boolean refreshDeviceCache(BluetoothGatt mBluetoothGatt) {
+ if (mBluetoothGatt != null) {
+ try {
+ BluetoothGatt localBluetoothGatt = mBluetoothGatt;
+ Method localMethod = localBluetoothGatt.getClass().getMethod("refresh", new Class[0]);
+ if (localMethod != null) {
+ boolean bool = ((Boolean) localMethod.invoke(localBluetoothGatt, new Object[0])).booleanValue();
+ return bool;
+ }
+ } catch (Exception localException) {
+ Log.i("Config", "An exception occured while refreshing device");
+ }
+ }
+ return false;
+ }
+}
diff --git a/iFish7/src/main/java/com/ifish/bluetooth/ConnectThread.java b/iFish7/src/main/java/com/ifish/bluetooth/ConnectThread.java
new file mode 100644
index 000000000..62eba2b5a
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/bluetooth/ConnectThread.java
@@ -0,0 +1,136 @@
+package com.ifish.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothSocket;
+import android.util.Log;
+
+import java.io.IOException;
+import java.util.UUID;
+
+
+/**
+ * 发起蓝牙连接
+ */
+public class ConnectThread extends Thread {
+ private static final String TAG = "ConnectThread";
+ private final BluetoothAdapter mBluetoothAdapter;
+ private BluetoothSocket mmSocket;
+ private final BluetoothDevice mmDevice;
+
+ public ConnectThread(BluetoothAdapter bluetoothAdapter,BluetoothDevice bluetoothDevice,String uuid) {
+ this.mBluetoothAdapter = bluetoothAdapter;
+ this.mmDevice = bluetoothDevice;
+
+ //使用一个临时变量,等会赋值给mmSocket
+ //因为mmSocket是静态的
+ BluetoothSocket tmp = null ;
+
+ if(mmSocket != null){
+ Log.e(TAG,"ConnectThread-->mmSocket != null先去释放");
+ try {
+ mmSocket.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ Log.d(TAG,"ConnectThread-->mmSocket != null已释放");
+
+ //1、获取BluetoothSocket
+ try {
+ //建立安全的蓝牙连接,会弹出配对框
+ tmp = mmDevice.createRfcommSocketToServiceRecord(UUID.fromString(uuid));
+
+ } catch (IOException e) {
+ Log.e(TAG,"ConnectThread-->获取BluetoothSocket异常!" + e.getMessage());
+ }
+
+ mmSocket = tmp;
+ if(mmSocket != null){
+ Log.w(TAG,"ConnectThread-->已获取BluetoothSocket");
+ }
+
+ }
+
+ @Override
+ public void run(){
+
+ //连接之前先取消发现设备,否则会大幅降低连接尝试的速度,并增加连接失败的可能性
+ if(mBluetoothAdapter == null){
+ Log.e(TAG,"ConnectThread:run-->mBluetoothAdapter == null");
+ return;
+ }
+ //取消发现设备
+ if(mBluetoothAdapter.isDiscovering()){
+ mBluetoothAdapter.cancelDiscovery();
+ }
+
+ if(mmSocket == null){
+ Log.e(TAG,"ConnectThread:run-->mmSocket == null");
+ return;
+ }
+
+ //2、通过socket去连接设备
+ try {
+ Log.d(TAG,"ConnectThread:run-->去连接...");
+ if(onBluetoothConnectListener != null){
+ onBluetoothConnectListener.onStartConn(); //开始去连接回调
+ }
+ mmSocket.connect(); //connect()为阻塞调用,连接失败或 connect() 方法超时(大约 12 秒之后),它将会引发异常
+
+ if(onBluetoothConnectListener != null){
+ onBluetoothConnectListener.onConnSuccess(mmSocket); //连接成功回调
+ Log.w(TAG,"ConnectThread:run-->连接成功");
+ }
+
+ } catch (IOException e) {
+ Log.e(TAG,"ConnectThread:run-->连接异常!" + e.getMessage());
+
+ if(onBluetoothConnectListener != null){
+ onBluetoothConnectListener.onConnFailure("连接异常:" + e.getMessage());
+ }
+
+ //释放
+ cancel();
+ }
+
+ }
+
+ /**
+ * 释放
+ */
+ public void cancel() {
+ try {
+ if (mmSocket != null && mmSocket.isConnected()) {
+ Log.d(TAG,"ConnectThread:cancel-->mmSocket.isConnected() = " + mmSocket.isConnected());
+ mmSocket.close();
+ mmSocket = null;
+ return;
+ }
+
+ if (mmSocket != null) {
+ mmSocket.close();
+ mmSocket = null;
+ }
+
+ Log.d(TAG,"ConnectThread:cancel-->关闭已连接的套接字释放资源");
+
+ } catch (IOException e) {
+ Log.e(TAG,"ConnectThread:cancel-->关闭已连接的套接字释放资源异常!" + e.getMessage());
+ }
+ }
+
+ private OnBluetoothConnectListener onBluetoothConnectListener;
+
+ public void setOnBluetoothConnectListener(OnBluetoothConnectListener onBluetoothConnectListener) {
+ this.onBluetoothConnectListener = onBluetoothConnectListener;
+ }
+
+ //连接状态监听者
+ public interface OnBluetoothConnectListener{
+ void onStartConn(); //开始连接
+ void onConnSuccess(BluetoothSocket bluetoothSocket); //连接成功
+ void onConnFailure(String errorMsg); //连接失败
+ }
+
+}
diff --git a/iFish7/src/main/java/com/ifish/bluetooth/ConnectedThread.java b/iFish7/src/main/java/com/ifish/bluetooth/ConnectedThread.java
new file mode 100644
index 000000000..61d288900
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/bluetooth/ConnectedThread.java
@@ -0,0 +1,206 @@
+package com.ifish.bluetooth;
+
+import android.bluetooth.BluetoothSocket;
+import android.util.Log;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Arrays;
+
+
+/**
+ * 管理连接
+ * 1、发送数据
+ * 2、接收数据
+ */
+public class ConnectedThread extends Thread{
+ private static final String TAG = "ConnectedThread";
+ private BluetoothSocket mmSocket;
+ private InputStream mmInStream;
+ private OutputStream mmOutStream;
+ //是否是主动断开
+ private boolean isStop = false;
+ //发起蓝牙连接的线程
+ private ConnectThread connectThread;
+
+ public void terminalClose(ConnectThread connectThread){
+ isStop = true;
+ this.connectThread = connectThread;
+ }
+
+ public ConnectedThread(BluetoothSocket socket){
+ mmSocket = socket;
+
+ InputStream tmpIn = null;
+ OutputStream tmpOut = null;
+
+ //使用临时对象获取输入和输出流,因为成员流是静态类型
+
+ //1、获取 InputStream 和 OutputStream
+ try {
+ tmpIn = socket.getInputStream();
+ tmpOut = socket.getOutputStream();
+
+ } catch (IOException e) {
+ Log.e(TAG,"ConnectedThread-->获取InputStream 和 OutputStream异常!");
+ }
+
+ mmInStream = tmpIn;
+ mmOutStream = tmpOut;
+
+ if(mmInStream != null){
+ Log.d(TAG,"ConnectedThread-->已获取InputStream");
+ }
+
+ if(mmOutStream != null){
+ Log.d(TAG,"ConnectedThread-->已获取OutputStream");
+ }
+
+ }
+
+ public void run(){
+ //最大缓存区 存放流
+ byte[] buffer = new byte[1024 * 2]; //buffer store for the stream
+ //从流的read()方法中读取的字节数
+ int bytes = 0; //bytes returned from read()
+
+ //持续监听输入流直到发生异常
+ while(!isStop){
+ try {
+
+ if(mmInStream == null){
+ Log.e(TAG,"ConnectedThread:run-->输入流mmInStream == null");
+ break;
+ }
+ //先判断是否有数据,有数据再读取
+ if(mmInStream.available() != 0){
+ //2、接收数据
+ bytes = mmInStream.read(buffer); //从(mmInStream)输入流中(读取内容)读取的一定数量字节数,并将它们存储到缓冲区buffer数组中,bytes为实际读取的字节数
+ byte[] b = Arrays.copyOf(buffer,bytes); //存放实际读取的数据内容
+ Log.w(TAG,"ConnectedThread:run-->收到消息,长度" + b.length + "->" + bytes2HexString(b, b.length)); //有空格的16进制字符串
+ if(onSendReceiveDataListener != null){
+ onSendReceiveDataListener.onReceiveDataSuccess(b); //成功收到消息
+ }
+ }
+
+ } catch (IOException e) {
+ Log.e(TAG,"ConnectedThread:run-->接收消息异常!" + e.getMessage());
+ if(onSendReceiveDataListener != null){
+ onSendReceiveDataListener.onReceiveDataError("接收消息异常:" + e.getMessage()); //接收消息异常
+ }
+ //关闭流和socket
+ boolean isClose = cancel();
+ if(isClose){
+ Log.e(TAG,"ConnectedThread:run-->接收消息异常,成功断开连接!");
+ }
+ break;
+ }
+ }
+ //关闭流和socket
+ boolean isClose = cancel();
+ if(isClose){
+ Log.d(TAG,"ConnectedThread:run-->接收消息结束,断开连接!");
+ }
+ }
+
+ //发送数据
+ public boolean write(byte[] bytes){
+ try {
+
+ if(mmOutStream == null){
+ Log.e(TAG, "mmOutStream == null");
+ return false;
+ }
+
+ //发送数据
+ mmOutStream.write(bytes);
+ Log.d(TAG, "写入成功:"+ bytes2HexString(bytes, bytes.length));
+ if(onSendReceiveDataListener != null){
+ onSendReceiveDataListener.onSendDataSuccess(bytes); //发送数据成功回调
+ }
+ return true;
+
+ } catch (IOException e) {
+ Log.e(TAG, "写入失败:"+ bytes2HexString(bytes, bytes.length));
+ if(onSendReceiveDataListener != null){
+ onSendReceiveDataListener.onSendDataError(bytes,"写入失败"); //发送数据失败回调
+ }
+ return false;
+ }
+ }
+
+ /**
+ * 释放
+ * @return true 断开成功 false 断开失败
+ */
+ public boolean cancel(){
+ try {
+ if(mmInStream != null){
+ mmInStream.close(); //关闭输入流
+ }
+ if(mmOutStream != null){
+ mmOutStream.close(); //关闭输出流
+ }
+ if(mmSocket != null){
+ mmSocket.close(); //关闭socket
+ }
+ if(connectThread != null){
+ connectThread.cancel();
+ }
+
+ connectThread = null;
+ mmInStream = null;
+ mmOutStream = null;
+ mmSocket = null;
+
+ Log.w(TAG,"ConnectedThread:cancel-->成功断开连接");
+ return true;
+
+ } catch (IOException e) {
+ // 任何一部分报错,都将强制关闭socket连接
+ mmInStream = null;
+ mmOutStream = null;
+ mmSocket = null;
+
+ Log.e(TAG, "ConnectedThread:cancel-->断开连接异常!" + e.getMessage());
+ return false;
+ }
+ }
+
+ /**
+ * 字节数组-->16进制字符串
+ * @param b 字节数组
+ * @param length 字节数组长度
+ * @return 16进制字符串 有空格类似“0A D5 CD 8F BD E5 F8”
+ */
+ public static String bytes2HexString(byte[] b, int length) {
+ StringBuffer result = new StringBuffer();
+ String hex;
+ for (int i = 0; i < length; i++) {
+ hex = Integer.toHexString(b[i] & 0xFF);
+ if (hex.length() == 1) {
+ hex = '0' + hex;
+ }
+ result.append(hex.toUpperCase()).append(" ");
+ }
+ return result.toString();
+ }
+
+ private OnSendReceiveDataListener onSendReceiveDataListener;
+
+ public void setOnSendReceiveDataListener(OnSendReceiveDataListener onSendReceiveDataListener) {
+ this.onSendReceiveDataListener = onSendReceiveDataListener;
+ }
+
+ //收发数据监听者
+ public interface OnSendReceiveDataListener{
+ void onSendDataSuccess(byte[] data); //发送数据结束
+ void onSendDataError(byte[] data, String errorMsg); //发送数据出错
+ void onReceiveDataSuccess(byte[] buffer); //接收到数据
+ void onReceiveDataError(String errorMsg); //接收数据出错
+ }
+
+
+
+}
diff --git a/iFish7/src/main/java/com/ifish/bluetooth/LVDevicesAdapter.java b/iFish7/src/main/java/com/ifish/bluetooth/LVDevicesAdapter.java
new file mode 100644
index 000000000..d5e55712b
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/bluetooth/LVDevicesAdapter.java
@@ -0,0 +1,115 @@
+package com.ifish.bluetooth;
+
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.ifish.activity.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 搜索到的设备列表适配器
+ */
+public class LVDevicesAdapter extends BaseAdapter {
+
+ private Context context;
+ private List list;
+
+ public LVDevicesAdapter(Context context) {
+ this.context = context;
+ list = new ArrayList<>();
+ }
+
+ @Override
+ public int getCount() {
+ return list == null ? 0 : list.size();
+ }
+
+ @Override
+ public Object getItem(int i) {
+ if(list == null){
+ return null;
+ }
+ return list.get(i);
+ }
+
+ @Override
+ public long getItemId(int i) {
+ return i;
+ }
+
+ @Override
+ public View getView(int i, View view, ViewGroup viewGroup) {
+ DeviceViewHolder viewHolder;
+ if(view == null){
+ view = LayoutInflater.from(context).inflate(R.layout.layout_lv_devices_item,null);
+ viewHolder = new DeviceViewHolder();
+ viewHolder.tvDeviceName = view.findViewById(R.id.tv_device_name);
+ viewHolder.tvDeviceAddress = view.findViewById(R.id.tv_device_address);
+ view.setTag(viewHolder);
+ }else{
+ viewHolder = (DeviceViewHolder) view.getTag();
+ }
+
+ if(list.get(i).getName() == null){
+ viewHolder.tvDeviceName.setText("NULL");
+ }else{
+ viewHolder.tvDeviceName.setText(list.get(i).getName());
+ }
+
+ viewHolder.tvDeviceAddress.setText(list.get(i).getAddress());
+
+ return view;
+ }
+
+ /**
+ * 初始化所有设备列表
+ * @param bluetoothDevices
+ */
+ public void addAllDevice(List bluetoothDevices){
+ if(list != null){
+ list.clear();
+ }
+ for (BluetoothDevice bluetoothDevice : bluetoothDevices) {
+ list.add(bluetoothDevice);
+ }
+ notifyDataSetChanged();
+ }
+
+ /**
+ * 添加列表子项
+ * @param bluetoothDevice
+ */
+ public void addDevice(BluetoothDevice bluetoothDevice){
+ if(list == null){
+ return;
+ }
+ if(!list.contains(bluetoothDevice)){
+ list.add(bluetoothDevice);
+ }
+ notifyDataSetChanged(); //刷新
+ }
+
+ /**
+ * 清空列表
+ */
+ public void clear(){
+ if(list != null){
+ list.clear();
+ }
+ notifyDataSetChanged(); //刷新
+ }
+
+ class DeviceViewHolder {
+
+ TextView tvDeviceName;
+ TextView tvDeviceAddress;
+ }
+
+}
diff --git a/iFish7/src/main/java/com/ifish/fragment/CameraGalleryFragment.java b/iFish7/src/main/java/com/ifish/fragment/CameraGalleryFragment.java
index 8cdc9aee3..a1ec5f1ad 100644
--- a/iFish7/src/main/java/com/ifish/fragment/CameraGalleryFragment.java
+++ b/iFish7/src/main/java/com/ifish/fragment/CameraGalleryFragment.java
@@ -8,6 +8,7 @@
package com.ifish.fragment;
import android.content.Intent;
+import android.graphics.Bitmap;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
@@ -31,12 +32,10 @@ import com.ifish.baseclass.BaseFragment;
import com.ifish.geewe.CameraScreenShot;
import com.ifish.utils.AnimationUtil;
import com.ifish.utils.Commons;
+import com.ifish.utils.ImageKtUtil;
import com.ifish.utils.L;
import com.ifish.utils.ToastUtil;
-import com.umeng.socialize.ShareAction;
-import com.umeng.socialize.UMShareListener;
-import com.umeng.socialize.bean.SHARE_MEDIA;
-import com.umeng.socialize.media.UMImage;
+import com.ifish.utils.WeChatManager;
import de.greenrobot.event.EventBus;
@@ -140,10 +139,13 @@ public class CameraGalleryFragment extends BaseFragment {
if (!LoadingActivity.api.isWXAppInstalled()) {
Toast.makeText(getActivity(), "您的设备未安装微信客户端", Toast.LENGTH_SHORT).show();
}
- new ShareAction(getActivity()).setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)
- .withMedia(new UMImage(getActivity(), R.drawable.shareifishapp))
- .setCallback(umShareListener)
- .share();
+
+ Bitmap bitmap = ImageKtUtil.drawableToBitmap(getActivity(),getActivity().getDrawable(R.drawable.shareifishapp));
+ WeChatManager.getInstance(getActivity()).shareFriendsImage(bitmap,true);
+// new ShareAction(getActivity()).setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)
+// .withMedia(new UMImage(getActivity(), R.drawable.shareifishapp))
+// .setCallback(umShareListener)
+// .share();
break;
case R.id.tv_video://视频录制
case R.id.iv_video:
@@ -170,23 +172,23 @@ public class CameraGalleryFragment extends BaseFragment {
}
//分享回调
- private UMShareListener umShareListener = new UMShareListener() {
- @Override
- public void onStart(SHARE_MEDIA shareMedia) {
-
- }
-
- @Override
- public void onResult(SHARE_MEDIA platform) {
- EventBus.getDefault().post(new ShareWechatBean("DeviceFragment"));
- }
-
- @Override
- public void onError(SHARE_MEDIA platform, Throwable t) {
- }
-
- @Override
- public void onCancel(SHARE_MEDIA platform) {
- }
- };
+// private UMShareListener umShareListener = new UMShareListener() {
+// @Override
+// public void onStart(SHARE_MEDIA shareMedia) {
+//
+// }
+//
+// @Override
+// public void onResult(SHARE_MEDIA platform) {
+// EventBus.getDefault().post(new ShareWechatBean("DeviceFragment"));
+// }
+//
+// @Override
+// public void onError(SHARE_MEDIA platform, Throwable t) {
+// }
+//
+// @Override
+// public void onCancel(SHARE_MEDIA platform) {
+// }
+// };
}
diff --git a/iFish7/src/main/java/com/ifish/fragment/DeviceFragment.java b/iFish7/src/main/java/com/ifish/fragment/DeviceFragment.java
index cc7a4f22c..e74e67800 100644
--- a/iFish7/src/main/java/com/ifish/fragment/DeviceFragment.java
+++ b/iFish7/src/main/java/com/ifish/fragment/DeviceFragment.java
@@ -9,20 +9,28 @@ package com.ifish.fragment;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
+<<<<<<< HEAD
+=======
+import android.annotation.SuppressLint;
+>>>>>>> release
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.NotificationManager;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
+import android.os.CountDownTimer;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
@@ -43,31 +51,25 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
-import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
+<<<<<<< HEAD
+=======
+import androidx.core.content.ContextCompat;
+>>>>>>> release
import com.bumptech.glide.Glide;
+//jjia-push
+//import com.clj.fastble.BleManager;
+//import com.clj.fastble.callback.BleScanCallback;
+//import com.clj.fastble.data.BleDevice;
+//import com.clj.fastble.data.BleScanState;
import com.ifish.activity.BindTwoDeviceActivity;
-import com.ifish.activity.BlackListActivity;
+import com.ifish.activity.BuildConfig;
import com.ifish.activity.DeviceInstructionActivity;
import com.ifish.activity.InformationListActivity;
-import com.ifish.activity.MainEightControlActivity;
-import com.ifish.activity.MainFiveBDControlActivity;
-import com.ifish.activity.MainFiveControlActivity;
-import com.ifish.activity.MainFourControlActivity;
-import com.ifish.activity.MainFour_2B_ControlActivity;
-import com.ifish.activity.MainFour_3F_ControlActivity;
-import com.ifish.activity.MainHot_3A_ControlActivity;
-import com.ifish.activity.MainSeven_2F_ControlActivity;
-import com.ifish.activity.MainSixControlActivity;
-import com.ifish.activity.MainSix_2A_ControlActivity;
-import com.ifish.activity.MainSix_4F_ControlActivity;
-import com.ifish.activity.MainThree1CControlActivity;
-import com.ifish.activity.MainThreeControlActivity;
-import com.ifish.activity.MainTwoControlActivity;
-import com.ifish.activity.MainZeroControlActivity;
+import com.ifish.activity.MineActivity;
import com.ifish.activity.MonitorActivity;
import com.ifish.activity.MyGoldActivity;
import com.ifish.activity.MyLevelValueActivity;
@@ -76,6 +78,7 @@ import com.ifish.activity.RecentContactsActivity;
import com.ifish.activity.SignActivity;
import com.ifish.activity.WebViewMessageActivity;
import com.ifish.activity.WebViewTaobaoActivity;
+import com.ifish.activity.newbind.NewBindDeviceActivity;
import com.ifish.adapter.CameraFragmentAdapter;
import com.ifish.adapter.DeviceFragmentAdapter;
import com.ifish.adapter.RollViewPagerAdapter;
@@ -83,6 +86,7 @@ import com.ifish.adapter.ViewPagerDefaultAdapter;
import com.ifish.basebean.AdInfos;
import com.ifish.basebean.BaseBean;
import com.ifish.basebean.Device;
+import com.ifish.basebean.EventBean;
import com.ifish.basebean.GradeRuleInfo;
import com.ifish.basebean.GradeValue;
import com.ifish.basebean.Information;
@@ -102,6 +106,8 @@ import com.ifish.geewe.SettingListener;
import com.ifish.permission.PermissionHelper;
import com.ifish.utils.ActivityManager;
import com.ifish.utils.AnimationUtil;
+import com.ifish.utils.AppRoute;
+import com.ifish.utils.AppUtil;
import com.ifish.utils.Commons;
import com.ifish.utils.Commons.LoginSPKey;
import com.ifish.utils.Commons.NetWork;
@@ -114,10 +120,12 @@ import com.ifish.utils.SPUtil;
import com.ifish.utils.ScreenUtil;
import com.ifish.utils.ToastUtil;
import com.ifish.utils.UnreadCount;
+import com.ifish.view.IosAlertDialog;
import com.ifish.view.LevelDialog;
import com.ifish.view.MyBGARefreshLayout;
import com.ifish.view.MyListView;
import com.ifish.view.ObservableScrollView;
+import com.igexin.sdk.PushManager;
import com.jude.rollviewpager.OnItemClickListener;
import com.jude.rollviewpager.RollPagerView;
import com.jude.rollviewpager.hintview.ColorPointHintView;
@@ -164,6 +172,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
private HttpManager hm = HttpManager.getInstance();
private String appAddress = "";
private String versionCode = "";
+ private String spversionCode = "";
private String uploadContent = "";
private String isMustUpdate = "";
private String MustUpdate = "1";
@@ -194,10 +203,13 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
private PermissionHelper permissionHelper;
String[] permission;
+<<<<<<< HEAD
String[] permissionM = new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_PHONE_STATE};
String[] permission13 = new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.READ_PHONE_STATE};
+=======
+>>>>>>> release
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@@ -219,21 +231,70 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
adInfos();
initInformation();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
- permission = permission13;
- } else {
- permission = permissionM;
- }
-
+ permission = new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION};
permissionHelper = new PermissionHelper(DeviceFragment.this, permission, 250);
-
+// initBooth();
+ boolean notificationsEnabled = PushManager.getInstance().areNotificationsEnabled(requireActivity());
+ if (!notificationsEnabled){
+ toOpenNotifications();
+ }
return v;
}
+ private void toOpenNotifications(){
+
+// AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
+// dialog.setCancelable(false);
+// dialog.setTitle("温馨提示");
+// dialog.setMessage("您开启通知权限,通知权限被关闭后,重要服务通知均无法正常触达通知您,是否去开启通知权限?");
+// dialog.setPositiveButton("去开启", new DialogInterface.OnClickListener() {
+// @Override
+// public void onClick(
+// DialogInterface dialog,
+// int which) {
+// PushManager.getInstance().openNotification(requireContext());
+//
+// }
+// });
+// dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+// @Override
+// public void onClick(DialogInterface dialog, int which) {
+// }
+// });
+// dialog.show();
+
+ IosAlertDialog dialog = new IosAlertDialog(getContext()).builder();
+ dialog.setCancelable(false);
+ dialog.setTitle("权限申请理由");
+ dialog.setMessage("您开启通知权限,通知权限被关闭后,重要服务通知均无法正常触达通知您,是否去开启通知权限?");
+ dialog.setNegativeButton("拒绝", new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ }
+ });
+ dialog.setPositiveButton("去开启", new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ PushManager.getInstance().openNotification(requireContext());
+ }
+ });
+ dialog.show();
+ }
+
private void getPermission() {
permissionHelper.request(new PermissionHelper.PermissionCallback() {
@Override
public void onPermissionGranted() {
+
+
+
+
+ Intent intent = new Intent();
+ intent.setClass(getActivity(), BindTwoDeviceActivity.class);
+ startActivity(intent);
+ AnimationUtil.startAnimation(getActivity());
+
}
@Override
@@ -280,24 +341,16 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
@Override
public void onPermissionDeniedBySystem() {
-// AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
-// dialog.setCancelable(false);
-// dialog.setMessage("请到应用管理-爱鱼奇-应用权限页面开启权限后重新打开app");
-// dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
-// @Override
-// public void onClick(
-// DialogInterface dialog,
-// int which) {
-// Intent mItent = new Intent(Settings.ACTION_SETTINGS);
-// startActivity(mItent);
-// }
-// });
-// dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
-// @Override
-// public void onClick(DialogInterface dialog, int which) {
-// }
-// });
-// dialog.show();
+ AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
+ dialog.setCancelable(false);
+ dialog.setTitle("温馨提示");
+ dialog.setMessage("请到应用信息页面-权限管理-打开位置权限,不然是发现不了附近的wifi的,将无法进行配网连接您的智能设备");
+ dialog.setPositiveButton("去开启", (dialog1, which) -> {
+ AppUtil.toAuthority(requireActivity());
+ });
+ dialog.setNegativeButton("取消", (dialog12, which) -> {
+ });
+ dialog.show();
}
});
}
@@ -596,6 +649,9 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
isMustUpdate = baseBean.data.getIsMustUpdate();
apkPath = "";
apkPath = Environment.getExternalStorageDirectory() + "/iFish7/apk/iFish7" + versionCode + ".apk"; //存储路径
+
+ L.i("jjia------apk---"+apkPath);
+ L.i("jjia------apk---"+appAddress);
}
}
@@ -626,10 +682,25 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
}
};
+ private int getVersionValue(String value){
+ String valueStr = value.replace("V","").replace("v","").replace(".","");
+ return Integer.parseInt(TextUtils.isEmpty(valueStr)?"0":valueStr);
+ }
private void checkVersion() {
versionCode = versionCode.toUpperCase();
- if (!HttpManager.getVersionName(getActivity()).equals(versionCode)) {
- final AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
+ spversionCode = sp.getString("versionCode","");
+
+ int versionCodeValue = getVersionValue(versionCode);
+// int spversionCodeValue = getVersionValue(spversionCode);
+ int appCodeValue = getVersionValue(HttpManager.getVersionName(requireActivity()));
+ L.i("jjia-------1-"+versionCodeValue);
+ L.i("jjia-------3-"+appCodeValue);
+// if (!HttpManager.getVersionName(requireActivity()).equals(versionCode) && !spversionCode.equals(versionCode)) {
+ if (versionCodeValue > appCodeValue && !spversionCode.equals(versionCode)) {
+ if (!MustUpdate.equals(isMustUpdate)) {
+ sp.putString("versionCode",versionCode);
+ }
+ final AlertDialog.Builder dialog = new AlertDialog.Builder(requireActivity());
dialog.setTitle("发现新版本,是否升级?");
dialog.setCancelable(false); //返回键不能取消对话框 强制更新
//json数据:"uploadContent": "1、可以看商家啦\\n2、有社交啦\\n3、瞬间爆炸"
@@ -694,6 +765,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
intent.setData(Uri.parse(String.format("package:%s", getActivity().getApplicationContext().getPackageName())));
startActivityForResult(intent, 301);
} else {
+<<<<<<< HEAD
ActivityCompat.requestPermissions(getActivity(), new String[]{WRITE_EXTERNAL_STORAGE}, 302);
}
}
@@ -720,92 +792,120 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
tv_current.setText("0%");
bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
progess_bar.setProgress(0);//进度条初始
+=======
+ ActivityCompat.requestPermissions(getActivity(), new String[]{WRITE_EXTERNAL_STORAGE}, 301);
+>>>>>>> release
}
-
- @Override
- public void onLoading(long total, long current, boolean isUploading) {
- super.onLoading(total, current, isUploading);
- progess_bar.setProgress((int) ((double) current / (double) total * 100));
- double currentA = (double) (current) / (1024 * 1024);//byte转MB除以1024*1024
- double totaldB = (double) total / (1024 * 1024);
- String formatA = String.format("%.2f", currentA);//只保留2位小数
- String formatB = String.format("%.2f", totaldB);
- tv_title.setText("下载中 " + formatA + "MB/" + formatB + "MB");
- tv_current.setText((int) (current * 100 / total) + "%");
- }
-
- @Override
- public void onFailure(HttpException arg0, String msg) {
- L.i(msg);
- if (downloaded.equals(msg)) {//已经存在要下载的文件 会抛出此异常 可以直接安装
- progess_bar.setProgress(100);//进度条填满
- tv_title.setText("安装包已存在");
- apkFile = new File(apkPath);
- installApk();
- } else {
- ToastUtil.show(getActivity(), Text.ERROR);
- bt_redownload.setVisibility(View.VISIBLE); //网络错误下载失败时 把重新下载按钮显示
+ }else {
+ apkDownloadDialog = new Dialog(getActivity(), R.style.DefautDialogs);
+ apkDownloadDialog.setCancelable(false);
+ apkDownloadDialog.show();
+ Window window = apkDownloadDialog.getWindow();
+ window.setContentView(R.layout.dialog_downloadapk);
+ final TextView tv_title = (TextView) window.findViewById(R.id.tv_title);
+ final TextView tv_current = (TextView) window.findViewById(R.id.tv_current);
+ final ProgressBar progess_bar = (ProgressBar) window.findViewById(R.id.progess_bar);
+ final Button bt_redownload = (Button) window.findViewById(R.id.bt_redownload);
+ final String downloaded = "maybe the file has downloaded completely";//如果文件已经下载好 就会抛出此异常 可以判断此异常直接打开文件
+ /**
+ * 下载apk
+ */
+ L.i("====================appAddress=" + appAddress + "+path=" + apkPath);
+ http.download(appAddress, apkPath, false, false, new RequestCallBack() {
+ @Override
+ public void onStart() {
+ super.onStart();
+ tv_title.setText("开始下载...");
+ tv_current.setText("0%");
+ bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
+ progess_bar.setProgress(0);//进度条初始
}
- }
- @Override
- public void onSuccess(ResponseInfo arg0) {
- bt_redownload.setVisibility(View.GONE);//下载成功 把重新下载按钮隐藏 并跳转安装apk
- tv_title.setText("安装包下载成功");
- apkFile = arg0.result;
- installApk();
- }
- });
- bt_redownload.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- delApk();//删除apk
- bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
- http.download(appAddress, apkPath, false, false, new RequestCallBack() {
- @Override
- public void onStart() {
- super.onStart();
- tv_title.setText("开始下载...");
- tv_current.setText("0%");
- bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
- progess_bar.setProgress(0);//进度条初始
- }
+ @Override
+ public void onLoading(long total, long current, boolean isUploading) {
+ super.onLoading(total, current, isUploading);
+ progess_bar.setProgress((int) ((double) current / (double) total * 100));
+ double currentA = (double) (current) / (1024 * 1024);//byte转MB除以1024*1024
+ double totaldB = (double) total / (1024 * 1024);
+ String formatA = String.format("%.2f", currentA);//只保留2位小数
+ String formatB = String.format("%.2f", totaldB);
+ tv_title.setText("下载中 " + formatA + "MB/" + formatB + "MB");
+ tv_current.setText((int) (current * 100 / total) + "%");
+ }
- @Override
- public void onLoading(long total, long current, boolean isUploading) {
- super.onLoading(total, current, isUploading);
- progess_bar.setProgress((int) ((double) current / (double) total * 100));
- double currentA = (double) (current) / (1024 * 1024);//byte转MB除以1024*1024
- double totaldB = (double) total / (1024 * 1024);
- String formatA = String.format("%.2f", currentA);//只保留2位小数
- String formatB = String.format("%.2f", totaldB);
- tv_title.setText("下载中 " + formatA + "MB/" + formatB + "MB");
- tv_current.setText((int) (current * 100 / total) + "%");
- }
-
- @Override
- public void onFailure(HttpException arg0, String msg) {
- if (downloaded.equals(msg)) {//已经存在要下载的文件 会抛出此异常 可以直接安装
- progess_bar.setProgress(100);//进度条填满
- tv_title.setText("安装包已存在");
- apkFile = new File(apkPath);
- installApk();
- } else {
- ToastUtil.show(getActivity(), Text.ERROR);
- bt_redownload.setVisibility(View.VISIBLE); //网络错误下载失败时 把重新下载按钮显示
- }
- }
-
- @Override
- public void onSuccess(ResponseInfo arg0) {
- bt_redownload.setVisibility(View.GONE);//下载成功 把重新下载按钮隐藏 并跳转安装apk
- tv_title.setText("安装包下载成功");
- apkFile = arg0.result;
+ @Override
+ public void onFailure(HttpException arg0, String msg) {
+ L.i(msg);
+ if (downloaded.equals(msg)) {//已经存在要下载的文件 会抛出此异常 可以直接安装
+ progess_bar.setProgress(100);//进度条填满
+ tv_title.setText("安装包已存在");
+ apkFile = new File(apkPath);
installApk();
+ } else {
+ ToastUtil.show(getActivity(), Text.ERROR);
+ bt_redownload.setVisibility(View.VISIBLE); //网络错误下载失败时 把重新下载按钮显示
}
- });
- }
- });
+ }
+
+ @Override
+ public void onSuccess(ResponseInfo arg0) {
+ bt_redownload.setVisibility(View.GONE);//下载成功 把重新下载按钮隐藏 并跳转安装apk
+ tv_title.setText("安装包下载成功");
+ apkFile = arg0.result;
+ installApk();
+ }
+ });
+ bt_redownload.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ delApk();//删除apk
+ bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
+ http.download(appAddress, apkPath, false, false, new RequestCallBack() {
+ @Override
+ public void onStart() {
+ super.onStart();
+ tv_title.setText("开始下载...");
+ tv_current.setText("0%");
+ bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
+ progess_bar.setProgress(0);//进度条初始
+ }
+
+ @Override
+ public void onLoading(long total, long current, boolean isUploading) {
+ super.onLoading(total, current, isUploading);
+ progess_bar.setProgress((int) ((double) current / (double) total * 100));
+ double currentA = (double) (current) / (1024 * 1024);//byte转MB除以1024*1024
+ double totaldB = (double) total / (1024 * 1024);
+ String formatA = String.format("%.2f", currentA);//只保留2位小数
+ String formatB = String.format("%.2f", totaldB);
+ tv_title.setText("下载中 " + formatA + "MB/" + formatB + "MB");
+ tv_current.setText((int) (current * 100 / total) + "%");
+ }
+
+ @Override
+ public void onFailure(HttpException arg0, String msg) {
+ if (downloaded.equals(msg)) {//已经存在要下载的文件 会抛出此异常 可以直接安装
+ progess_bar.setProgress(100);//进度条填满
+ tv_title.setText("安装包已存在");
+ apkFile = new File(apkPath);
+ installApk();
+ } else {
+ ToastUtil.show(getActivity(), Text.ERROR);
+ bt_redownload.setVisibility(View.VISIBLE); //网络错误下载失败时 把重新下载按钮显示
+ }
+ }
+
+ @Override
+ public void onSuccess(ResponseInfo arg0) {
+ bt_redownload.setVisibility(View.GONE);//下载成功 把重新下载按钮隐藏 并跳转安装apk
+ tv_title.setText("安装包下载成功");
+ apkFile = arg0.result;
+ installApk();
+ }
+ });
+ }
+ });
+ }
}
/**
@@ -954,13 +1054,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
private void loadHeadImage() {
try {
String wximg = sp.getString(Commons.LoginSPKey.WXIMAGE);
- if (!TextUtils.isEmpty(wximg)) {
- Picasso.with(getActivity()).invalidate(wximg);//清除缓存 重新加载图片
- Picasso.with(getActivity()).load(wximg).error(R.drawable.ic_error).into(iv_head);
- } else {
- Picasso.with(getActivity()).invalidate(HttpManager.HEAD_URL + Commons.USER.getUserImg());//清除缓存 重新加载图片
- Picasso.with(getActivity()).load(HttpManager.HEAD_URL + Commons.USER.getUserImg()).error(R.drawable.ic_error).into(iv_head);
- }
+ AppUtil.setHeader(getActivity(),iv_head,wximg);
} catch (Exception e) {
}
}
@@ -1092,8 +1186,12 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
lv_device.setAdapter(deviceAdapter);
lv_camera.setAdapter(cameraAdapter);
setUserInfo();
+
+ // jiablue
+// startDownTimer();
}
+
private void setUserInfo() {
try {
tv_username.setText(Commons.USER.getNickName());
@@ -1123,10 +1221,10 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
lv_device.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- if (!permissionHelper.checkSelfPermission(permission)) {
- getPermission();
- return;
- }
+// if (!permissionHelper.checkSelfPermission(permission)) {
+// getPermission();
+// return;
+// }
if (Commons.DEVICE == null || Commons.DEVICE.size() == 0) {
showDevice = PetDeviceGetDistinguish.getShowDevice(getContext());
showCamera = PetDeviceGetDistinguish.getFishCameras(Commons.CAMERA);
@@ -1136,7 +1234,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
lv_camera.setAdapter(cameraAdapter);
return;
}
- Intent i = new Intent();
+// Intent intent = new Intent();
int index = 0;
for (int i1 = 0; i1 < Commons.DEVICE.size(); i1++) {
if (showDevice.get(position).getDeviceId().equals(Commons.DEVICE.get(i1).getDeviceId())) {
@@ -1147,6 +1245,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
Commons.IS_CAMERA = false;
sp.putInt(LoginSPKey.Position, index);
sp.putBoolean(LoginSPKey.IS_CAMERA, Commons.IS_CAMERA);
+<<<<<<< HEAD
try {
Integer controlAmount = Commons.DEVICE.get(Commons.DevicePosition).getControlAmount();
Integer timerAmount = Commons.DEVICE.get(Commons.DevicePosition).getTimerAmount();
@@ -1225,15 +1324,101 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
}
startActivity(i);
AnimationUtil.startAnimation(getActivity());
+=======
+ Device clickItem = (Device) lv_device.getItemAtPosition(position);
+ AppRoute.newToStart(requireActivity(),clickItem,false);
+// try {
+// Integer controlAmount = Commons.DEVICE.get(Commons.DevicePosition).getControlAmount();
+// Integer timerAmount = Commons.DEVICE.get(Commons.DevicePosition).getTimerAmount();
+// String type = Commons.DEVICE.get(Commons.DevicePosition).type;
+//
+//
+// L.i("jjia-------mainclick--type-"+type);
+// L.i("jjia-------mainclick--"+Commons.DEVICE.get(Commons.DevicePosition).toString());
+// if (Commons.FishKey.On.equals(Commons.DEVICE.get(Commons.DevicePosition).isBlacklist)) {//黑名单
+// i.setClass(getActivity(), BlackListActivity.class);
+// } else {
+// if (Device.TYPE_1C.equals(type)) {
+// i.setClass(getActivity(), MainThree1CControlActivity.class);
+// } else if (Device.TYPE_AA.equals(type)) {
+// i.setClass(getActivity(), MainFiveControlActivity.class);
+// } else if (Device.TYPE_BD.equals(type)) {
+// i.setClass(getActivity(), MainFiveBDControlActivity.class);
+// } else if (Device.TYPE_2A.equals(type)) {
+// i.setClass(getActivity(), MainSix_2A_ControlActivity.class);
+// } else if (Device.TYPE_2B.equals(type)) {
+// i.setClass(getActivity(), MainFour_2B_ControlActivity.class);
+// } else if (Device.TYPE_3A.equals(type)) {
+// i.setClass(getActivity(), MainHot_3A_ControlActivity.class);
+// } else if (Device.TYPE_2F.equals(type)) {
+// i.setClass(getActivity(), MainSeven_2F_ControlActivity.class);
+// } else if (Device.TYPE_3F.equals(type)) {
+// i.setClass(getActivity(), MainFour_3F_ControlActivity.class);
+// } else if (Device.TYPE_4F.equals(type) || Device.TYPE_5F.equals(type)) {
+// i.setClass(getActivity(), MainSix_4F_ControlActivity.class);
+// } else {
+// if (controlAmount == null) {//如果控制器返回空 则默认给三控的页面
+// i.setClass(getActivity(), MainThreeControlActivity.class);
+// } else {
+// i.setClass(getActivity(), MainThreeControlActivity.class);
+// switch (controlAmount) {
+// case 0: {
+// i.setClass(getActivity(), MainZeroControlActivity.class);
+// break;
+// }
+// case 2: {
+// i.setClass(getActivity(), MainTwoControlActivity.class);
+// break;
+// }
+// case 3: {
+// i.setClass(getActivity(), MainThreeControlActivity.class);
+// break;
+// }
+// case 4: {
+// if (timerAmount == 6) { // 可丽爱
+// i.setClass(getActivity(), MainFiveControlActivity.class);
+// } else {//4控
+// i.setClass(getActivity(), MainFourControlActivity.class);
+// }
+// break;
+// }
+// case 5: {
+// if (6 == timerAmount) {//5控六定时器 询多页面
+// i.setClass(getActivity(), MainSixControlActivity.class);
+// }
+// break;
+// }
+// case 8: {
+// i.setClass(getActivity(), MainEightControlActivity.class);
+// break;
+// }
+// default: {
+// i.setClass(getActivity(), MainThreeControlActivity.class);
+// break;
+// }
+// }
+// }
+// }
+// }
+// } catch (Exception e) {
+// ClipboardManager clipboardManager = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
+// ClipData mClipData = ClipData.newPlainText("Label", e.getMessage() + getStackTrace(e));
+// clipboardManager.setPrimaryClip(mClipData);
+// Toast.makeText(getActivity(), "错误日志复制到剪贴板!", Toast.LENGTH_SHORT).show();
+// i.setClass(getActivity(), MainThreeControlActivity.class);
+// }
+// startActivity(i);
+// AnimationUtil.startAnimation(getActivity());
+>>>>>>> release
}
});
lv_camera.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- if (!permissionHelper.checkSelfPermission(permission)) {
- getPermission();
- return;
- }
+// if (!permissionHelper.checkSelfPermission(permission)) {
+// getPermission();
+// return;
+// }
if (Commons.CAMERA == null) {
return;
}
@@ -1538,31 +1723,14 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
AnimationUtil.startAnimation(getActivity());
break;
case R.id.rl_adddevice:
- if (!permissionHelper.checkSelfPermission(permission)) {
- getPermission();
- return;
- }
- intent.setClass(getActivity(), BindTwoDeviceActivity.class);
- startActivity(intent);
- AnimationUtil.startAnimation(getActivity());
-// hm.shareCameraByQrCode(new HttpListener>() {
-// private int result;
-// @Override
-// public void success(BaseBean baseBean) {
-// result = baseBean.result;
-//// dataDevice = baseBean.data;
-// }
-//
-// @Override
-// public void finish() {
-//
-// }
-//
-// @Override
-// public void error(Exception e, String msg) {
-//
-// }
-// }, Commons.USER.getUserId(), "19125526");
+// jiablue
+// EventBean eventBean = new EventBean(EventBean.BLUETOOTH_STOP_SCAN);
+// EventBus.getDefault().post(eventBean);
+
+
+ addDevice();
+
+
break;
case R.id.tv_explain: //我的设备---查看说明书
/*intent.setClass(getActivity(), WebViewActivity.class);
@@ -1575,9 +1743,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
AnimationUtil.startAnimation(getActivity());
break;
case R.id.title_img_right:
- intent.setClass(getActivity(), BindTwoDeviceActivity.class);
- startActivity(intent);
- AnimationUtil.startAnimation(getActivity());
+ addDevice();
break;
case R.id.title_img_right_two:
intent.setClass(getActivity(), RecentContactsActivity.class);
@@ -1588,11 +1754,22 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
}
}
+ private void addDevice(){
+ if (ContextCompat.checkSelfPermission(requireActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED || BuildConfig.show) {
+ showPermissionHint();
+ }else {
+ Intent intentx = new Intent();
+ intentx.setClass(requireActivity(), BindTwoDeviceActivity.class);
+ startActivity(intentx);
+ AnimationUtil.startAnimation(requireActivity());
+ }
+ }
private void buyCamera() {
Intent i = new Intent(getActivity(), WebViewTaobaoActivity.class);
i.putExtra(WebViewTaobaoActivity.URL, HttpManager.BuyCameraTaobao_URL);
startActivity(i);
- AnimationUtil.startAnimation(getActivity());
+ AnimationUtil.startAnimation(requireActivity());
}
public void onEventMainThread(Information event) {
@@ -1875,4 +2052,202 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
}
firstResult = firstResult + HttpManager.PAGESIZE;
}
+ //jjia-push
+// private void initBooth(){
+// boolean enable = BleManager.getInstance().isBlueEnable();
+// if (enable) {
+// BleManager.getInstance().scan(new BleScanCallback() {
+// @Override
+// public void onScanFinished(List scanResultList) {
+// if (currentDevice!=null){ // 扫描结束,有设备
+// L.i("jjjia-----------scan---");
+// showDevice();
+// }
+// }
+//
+// @Override
+// public void onScanStarted(boolean success) {
+//
+// }
+//
+// @SuppressLint("MissingPermission")
+// @Override
+// public void onScanning(BleDevice bleDevice) {
+// if (bleDevice!=null && bleDevice.getDevice()!=null){
+// BluetoothDevice bean = bleDevice.getDevice();
+// if (!TextUtils.isEmpty(bean.getName()) && bean.getName().startsWith("ifish")){
+// currentDevice = bleDevice;
+// BleManager.getInstance().cancelScan();
+// }
+// L.i(bean.getName()+"jjia------mac---"+bean.getAddress());
+// }
+// }
+// });
+// }
+//
+// }
+ //jjia-push
+// BleDevice currentDevice;
+ public void onEventMainThread(BluetoothDevice event) {
+
+ }
+
+ private boolean isShowIng = false;
+ private boolean isShowEd = false;
+
+ private int currentIndex = 0;
+// jiablue
+// public void onEventMainThread(EventBean eventBean){
+// if (eventBean!= null){
+// if (EventBean.BLUETOOTH_START_SCAN.equals(eventBean.name)){
+// if (!isShowEd){
+// initBooth();
+// }
+// }else if (EventBean.BLUETOOTH_STOP_SCAN.equals(eventBean.name)){
+// if (!isShowIng){
+// currentDevice = null;
+// }
+// BleManager.getInstance().cancelScan();
+// }else
+//
+// if (EventBean.TAB_INDEX.equals(eventBean.name)){
+// currentIndex = eventBean.index;
+// L.i("jjia-----tab_index--"+eventBean.index);
+// if (currentIndex == 0){
+// startDownTimer();
+// }else {
+// oonPause();
+// }
+// }else if (EventBean.HEADER.equals(eventBean.name)){
+// Glide.with(getActivity()).load(eventBean.value).into(iv_head);
+// }
+// }
+// }
+
+ private void showPermissionHint(){
+
+ IosAlertDialog openDialog = new IosAlertDialog(getContext()).builder();
+ openDialog.setCancelable(true);
+ openDialog.setTitle("申请权限目的说明");
+ openDialog.setMessage("添加设备,需要先获取位置信息,才能获取附近wifi信息,进行配网连接您的设备,是否允许申请位置权限?");
+ openDialog.setPositiveButton("继续", new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ getPermission();
+ }
+ });
+ openDialog.setNegativeButton("取消", new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ }
+ });
+
+ openDialog.show();
+ }
+ public void showDevice(){
+ // 检测页面
+ if (!isShowIng){
+ isShowIng = true;
+ isShowEd = true;
+ AlertDialog.Builder dialog = new AlertDialog.Builder(requireContext(), AlertDialog.THEME_HOLO_LIGHT);
+ dialog.setCancelable(true);
+ dialog.setTitle("提示");
+ dialog.setMessage("发现一个新设备是否去添加");
+ dialog.setOnDismissListener(dialogInterface -> isShowIng = false);
+ dialog.setNegativeButton("取消", (arg0, arg1) -> {
+ arg0.dismiss();
+ isShowIng = false;
+ startDownTimer();
+
+ });
+ dialog.setPositiveButton("确定", (dialog1, which) -> {
+ dialog1.dismiss();
+ isShowIng = false;
+ closeDownTimer();
+ Intent intent = new Intent();
+ intent.setClass(requireActivity(), NewBindDeviceActivity.class);
+ intent.putExtra("title", "连接水族箱");
+ intent.putExtra("type", "bluetooth");
+ //jjia-push
+// intent.putExtra("device", currentDevice);
+ startActivity(intent);
+ AnimationUtil.finishAnimation(requireActivity());
+ });
+ dialog.show();
+ }
+
+ }
+
+ int dowmCount = 1;
+ CountDownTimer countDownTimer;
+ private void startDownTimer(){
+ closeDownTimer();
+ if (!isShowIng && currentIndex == 0){
+ dowmCount = 1;
+ countDownTimer = new CountDownTimer(2000000000,1000) {
+ @Override
+ public void onTick(long l) {
+ L.i("jjia-----dowmCount--"+dowmCount);
+ //jjia-push
+// if (dowmCount%6==0){
+// BleScanState scanState = getScanState();
+// L.i("jjia-----------timer--"+scanState);
+// if (BleScanState.STATE_IDLE.equals(scanState)){
+// if (isShowIng){
+// L.i("jjia-----已经扫描到设备了,等待反馈-");
+// closeDownTimer();
+// }else {
+// initBooth();
+// L.i("jjia-----开始扫描-");
+// }
+// }else {
+// L.i("jjia----timer--上一次的扫描还在继续中-");
+// }
+// }
+
+ dowmCount++;
+ }
+
+ @Override
+ public void onFinish() {
+ L.i("jjia---倒计时完成----------");
+ }
+ };
+ countDownTimer.start();
+ }else {
+ L.i("jjia----timer--已扫描到设备,暂不执行倒计时-");
+ }
+
+ }
+
+ private void closeDownTimer(){
+ if (countDownTimer!=null){
+ countDownTimer.cancel();
+ countDownTimer = null;
+ }
+ }
+ //jjia-push
+// private BleScanState getScanState(){
+// return BleManager.getInstance().getScanSate();
+// }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ oonPause();
+ }
+
+ private void oonPause(){
+ closeDownTimer();
+ //jjia-push
+// BleScanState scanState = getScanState();
+// if (BleScanState.STATE_SCANNING.equals(scanState)) {
+// BleManager.getInstance().cancelScan();
+// L.i("jjia---扫描暂停----------");
+// } else {
+//
+// }
+// L.i("jjia---扫描暂停-"+scanState);
+ }
}
diff --git a/iFish7/src/main/java/com/ifish/fragment/LookFishLeftFragment.java b/iFish7/src/main/java/com/ifish/fragment/LookFishLeftFragment.java
index 0808c06ce..e20346173 100644
--- a/iFish7/src/main/java/com/ifish/fragment/LookFishLeftFragment.java
+++ b/iFish7/src/main/java/com/ifish/fragment/LookFishLeftFragment.java
@@ -188,6 +188,8 @@ public class LookFishLeftFragment extends BaseV4Fragment implements BGARefreshLa
*/
position=position-2;//自定义GridView 添加头部后position改变
Intent i =new Intent(getActivity(),LookFishMonitorActivity.class);
+
+ L.i(this.getClass().getName() + "----------------onCreate"+liveRoomList.get(position).toString());
i.putExtra("LiveRoomInfo",liveRoomList.get(position));
startActivity(i);
AnimationUtil.startAnimation(getActivity());
diff --git a/iFish7/src/main/java/com/ifish/fragment/LookFishListFragment.java b/iFish7/src/main/java/com/ifish/fragment/LookFishListFragment.java
index 3ca6b43e3..cf5c9d343 100644
--- a/iFish7/src/main/java/com/ifish/fragment/LookFishListFragment.java
+++ b/iFish7/src/main/java/com/ifish/fragment/LookFishListFragment.java
@@ -62,7 +62,7 @@ import java.util.List;
*/
public class LookFishListFragment extends BaseV4Fragment{
private View v;
- private static final String[] CONTENT = new String[] { "最新", "人气", "推荐" };
+ private static final String[] CONTENT = new String[] { "最新", "人气", "其他" };
private List fragmentList=new ArrayList();
private TextView title_text;
@Override
diff --git a/iFish7/src/main/java/com/ifish/fragment/MineFragment.java b/iFish7/src/main/java/com/ifish/fragment/MineFragment.java
index 506c0a0e2..c2b96684d 100644
--- a/iFish7/src/main/java/com/ifish/fragment/MineFragment.java
+++ b/iFish7/src/main/java/com/ifish/fragment/MineFragment.java
@@ -9,12 +9,14 @@ package com.ifish.fragment;
import static android.content.Context.NOTIFICATION_SERVICE;
+import android.Manifest;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.NotificationManager;
import android.content.DialogInterface;
import android.content.Intent;
+import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -31,7 +33,11 @@ import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
+import com.bumptech.glide.Glide;
+//jjia-push
+//import com.clj.fastble.BleManager;
import com.ifish.activity.AboutActivity;
+import com.ifish.activity.BindTwoDeviceActivity;
import com.ifish.activity.CaptureActivity;
import com.ifish.activity.DeviceInstructionActivity;
import com.ifish.activity.LoadingActivity;
@@ -46,35 +52,33 @@ import com.ifish.activity.MySettingActivity;
import com.ifish.activity.R;
import com.ifish.activity.TellIfishActivity;
import com.ifish.basebean.BaseBean;
+import com.ifish.basebean.EventBean;
import com.ifish.basebean.FinishMainActivity;
import com.ifish.basebean.LoadHeadImage;
import com.ifish.basebean.MineNewInfo;
import com.ifish.basebean.Version;
import com.ifish.baseclass.BaseV4Fragment;
import com.ifish.baseclass.UriForFile;
+import com.ifish.permission.PermissionHelper;
import com.ifish.utils.ActivityManager;
import com.ifish.utils.AnimationUtil;
+import com.ifish.utils.AppUtil;
import com.ifish.utils.Commons;
import com.ifish.utils.Commons.NetWork;
import com.ifish.utils.Commons.Text;
import com.ifish.utils.HttpListener;
import com.ifish.utils.HttpManager;
+import com.ifish.utils.ImageKtUtil;
import com.ifish.utils.L;
import com.ifish.utils.SPUtil;
import com.ifish.utils.ToastUtil;
+import com.ifish.utils.WeChatManager;
import com.ifish.view.CircleImageView;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
-import com.lidroid.xutils.util.LogUtils;
import com.p2p.core.P2PHandler;
-import com.squareup.picasso.Picasso;
-import com.umeng.socialize.ShareAction;
-import com.umeng.socialize.UMShareListener;
-import com.umeng.socialize.bean.SHARE_MEDIA;
-import com.umeng.socialize.media.UMImage;
-
import java.io.File;
import java.lang.reflect.Field;
@@ -109,6 +113,9 @@ public class MineFragment extends BaseV4Fragment {
initView();
loadHeadImage();
initListener();
+
+ permission = new String[]{Manifest.permission.CAMERA};
+ permissionHelper = new PermissionHelper(this, permission, 250);
return v;
}
@@ -116,13 +123,7 @@ public class MineFragment extends BaseV4Fragment {
private void loadHeadImage() {
try {
String wximg = SPUtil.getInstance(getActivity()).getString(Commons.LoginSPKey.WXIMAGE);
- if (!TextUtils.isEmpty(wximg)) {
- Picasso.with(getActivity()).invalidate(wximg);//清除缓存 重新加载图片
- Picasso.with(getActivity()).load(wximg).error(R.drawable.ic_error).into(iv_head);
- } else {
- Picasso.with(getActivity()).invalidate(HttpManager.HEAD_URL + Commons.USER.getUserImg());//清除缓存 重新加载图片
- Picasso.with(getActivity()).load(HttpManager.HEAD_URL + Commons.USER.getUserImg()).error(R.drawable.ic_error).into(iv_head);
- }
+ AppUtil.setHeader(getActivity(),iv_head,wximg);
L.d("用户头像=" + HttpManager.HEAD_URL + Commons.USER.getUserImg());
} catch (Exception e) {
}
@@ -356,6 +357,21 @@ public class MineFragment extends BaseV4Fragment {
// CallbackContext.onActivityResult(requestCode, resultCode, data);
}
+ private void showPermissionHint(){
+ AlertDialog.Builder dialog = new AlertDialog.Builder(requireContext(), AlertDialog.THEME_HOLO_LIGHT);
+ dialog.setCancelable(false);
+ dialog.setTitle("提示");
+ dialog.setMessage("扫一扫,需要获取相机权限,才能使用扫描功能,是否允许申请?");
+ dialog.setNegativeButton("拒绝", (arg0, arg1) -> {
+ arg0.dismiss();
+
+ });
+ dialog.setPositiveButton("允许", (dialog1, which) -> {
+ getPermission();
+ });
+ dialog.show();
+ }
+
@Override
public void onClick(View v) {//点击事件
Intent i = new Intent();
@@ -367,9 +383,14 @@ public class MineFragment extends BaseV4Fragment {
AnimationUtil.startAnimation(getActivity());
break;
case R.id.rl_zxing://扫描二维码
- i.setClass(getActivity(), CaptureActivity.class);
- startActivity(i);
- AnimationUtil.startAnimation(getActivity());
+ if (!permissionHelper.checkSelfPermission(permission)) {
+ showPermissionHint();
+ }else {
+ i.setClass(getActivity(), CaptureActivity.class);
+ startActivity(i);
+ AnimationUtil.startAnimation(getActivity());
+ }
+
break;
case R.id.rl_aboutus:
i.setClass(getActivity(), AboutActivity.class);
@@ -415,11 +436,14 @@ public class MineFragment extends BaseV4Fragment {
if (!LoadingActivity.api.isWXAppInstalled()) {
Toast.makeText(getActivity(), "您的设备未安装微信客户端", Toast.LENGTH_SHORT).show();
}
- UMImage image = new UMImage(getActivity(), R.drawable.shareifishapp);//资源文件
- new ShareAction(getActivity()).setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)
- .withMedia(image)
- .setCallback(umShareListener)
- .share();
+ Bitmap bitmap = ImageKtUtil.drawableToBitmap(getActivity(), getActivity().getResources().getDrawable(R.drawable.shareifishapp));
+ WeChatManager.getInstance(getActivity()).shareFriendsImage(bitmap,true);
+
+// UMImage image = new UMImage(getActivity(), R.drawable.shareifishapp);//资源文件
+// new ShareAction(getActivity()).setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)
+// .withMedia(image)
+// .setCallback(umShareListener)
+// .share();
break;
case R.id.rl_tellus://我有话说
i.setClass(getActivity(), TellIfishActivity.class);
@@ -450,29 +474,29 @@ public class MineFragment extends BaseV4Fragment {
}
//分享回调
- private UMShareListener umShareListener = new UMShareListener() {
- @Override
- public void onStart(SHARE_MEDIA shareMedia) {
- LogUtils.d("ifish LHD 分享回调 onStart");
- }
-
- @Override
- public void onResult(SHARE_MEDIA platform) {
- LogUtils.d("ifish LHD 分享回调 onResult "+platform);
- ToastUtil.show(getActivity(), Text.SHARESUCCESS);
- goldValue(Commons.GoldTasksKey.SHAREIFISHAPP);
- }
-
- @Override
- public void onError(SHARE_MEDIA platform, Throwable t) {
- LogUtils.e("ifish LHD 分享回调 onError "+platform);
- }
-
- @Override
- public void onCancel(SHARE_MEDIA platform) {
- LogUtils.e("ifish LHD 分享回调 onCancel "+platform);
- }
- };
+// private UMShareListener umShareListener = new UMShareListener() {
+// @Override
+// public void onStart(SHARE_MEDIA shareMedia) {
+// LogUtils.d("ifish LHD 分享回调 onStart");
+// }
+//
+// @Override
+// public void onResult(SHARE_MEDIA platform) {
+// LogUtils.d("ifish LHD 分享回调 onResult "+platform);
+// ToastUtil.show(getActivity(), Text.SHARESUCCESS);
+// goldValue(Commons.GoldTasksKey.SHAREIFISHAPP);
+// }
+//
+// @Override
+// public void onError(SHARE_MEDIA platform, Throwable t) {
+// LogUtils.e("ifish LHD 分享回调 onError "+platform);
+// }
+//
+// @Override
+// public void onCancel(SHARE_MEDIA platform) {
+// LogUtils.e("ifish LHD 分享回调 onCancel "+platform);
+// }
+// };
private void logout() {
Builder dialog1 = new Builder(getActivity(), AlertDialog.THEME_HOLO_LIGHT);
@@ -618,4 +642,64 @@ public class MineFragment extends BaseV4Fragment {
});
dialog.show();
}
+
+ public void onEventMainThread(EventBean eventBean){
+ if (eventBean!= null){
+ if (EventBean.HEADER.equals(eventBean.name)){
+ Glide.with(getActivity()).load(eventBean.value).into(iv_head);
+ }
+ }
+ }
+ private PermissionHelper permissionHelper;
+
+ String[] permission;
+ private void getPermission() {
+ permissionHelper.request(new PermissionHelper.PermissionCallback() {
+ @Override
+ public void onPermissionGranted() {
+ Intent i = new Intent();
+ i.setClass(requireActivity(), CaptureActivity.class);
+ startActivity(i);
+ AnimationUtil.startAnimation(requireActivity());
+ }
+
+ @Override
+ public void onIndividualPermissionGranted(String[] grantedPermission) {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(requireActivity());
+ dialog.setCancelable(false);
+ dialog.setMessage("请先同意app获取权限");
+ dialog.setPositiveButton("确定", (dialog2, which) -> {
+
+ });
+ dialog.setNegativeButton("取消", (dialog3, which) -> {
+ });
+ dialog.show();
+ }
+
+ @Override
+ public void onPermissionDenied() {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(requireActivity());
+ dialog.setCancelable(false);
+ dialog.setMessage("请先同意app获取权限");
+ dialog.setPositiveButton("确定", (dialog4, which) -> getPermission());
+ dialog.setNegativeButton("取消", (dialog5, which) -> {
+ });
+ dialog.show();
+ }
+
+ @Override
+ public void onPermissionDeniedBySystem() {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(requireActivity());
+ dialog.setCancelable(false);
+ dialog.setTitle("温馨提示");
+ dialog.setMessage("请到应用信息页面-权限管理-打开图片和相机权限");
+ dialog.setPositiveButton("去开启", (dialog1, which) -> {
+ AppUtil.toAuthority(requireActivity());
+ });
+ dialog.setNegativeButton("取消", (dialog12, which) -> {
+ });
+ dialog.show();
+ }
+ });
+ }
}
diff --git a/iFish7/src/main/java/com/ifish/fragment/ShopsCheckUserPhotoFragment.java b/iFish7/src/main/java/com/ifish/fragment/ShopsCheckUserPhotoFragment.java
index fa34a8eb4..faba586d3 100644
--- a/iFish7/src/main/java/com/ifish/fragment/ShopsCheckUserPhotoFragment.java
+++ b/iFish7/src/main/java/com/ifish/fragment/ShopsCheckUserPhotoFragment.java
@@ -1,13 +1,19 @@
package com.ifish.fragment;
+import static android.app.Activity.RESULT_OK;
+
+import android.app.AlertDialog;
import android.app.Dialog;
+import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.provider.MediaStore;
+import android.provider.Settings;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -16,24 +22,37 @@ import android.view.Window;
import android.widget.ImageView;
import android.widget.RelativeLayout;
+import com.bumptech.glide.Glide;
+import com.ifish.activity.MineActivity;
import com.ifish.activity.R;
import com.ifish.basebean.BaseBean;
import com.ifish.basebean.ChangeWater;
+import com.ifish.basebean.EventBean;
import com.ifish.basebean.ShopsCheckSwitchFragment;
import com.ifish.basebean.ShopsInfo;
import com.ifish.baseclass.BaseFragment;
import com.ifish.baseclass.UriForFile;
+import com.ifish.permission.PermissionHelper;
+import com.ifish.utils.AppUtil;
import com.ifish.utils.Commons;
import com.ifish.utils.HttpListener;
import com.ifish.utils.HttpManager;
import com.ifish.utils.L;
import com.ifish.utils.ToastUtil;
+import com.ifish.view.IosAlertDialog;
+import com.ifish.view.picture.PictureSelectBean;
+import com.ifish.view.picture.PictureSelectorUtil;
+import com.luck.picture.lib.basic.PictureSelector;
+import com.luck.picture.lib.config.PictureConfig;
+import com.luck.picture.lib.entity.LocalMedia;
import com.squareup.picasso.Picasso;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.concurrent.ExecutionException;
import de.greenrobot.event.EventBus;
import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
@@ -81,10 +100,14 @@ public class ShopsCheckUserPhotoFragment extends BaseFragment {
initListener();
init();
initData();
+
return v;
}
-
+ private PermissionHelper permissionHelper;
private void initData() {
+ permission = AppUtil.getImagePermissionList();
+ permissionHelper = new PermissionHelper(getActivity(), permission, 250);
+
if (isResult) {
Picasso.with(getActivity()).load(HttpManager.SHOP_URL + Commons.USER.getUserId() + "/" + Commons.SHOP.picture1 + "?time=" + Commons.Date.getTime()).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).error(R.drawable.shopscheck_idcard).into(iv_idCard);
Picasso.with(getActivity()).load(HttpManager.SHOP_URL + Commons.USER.getUserId() + "/" + Commons.SHOP.picture2 + "?time=" + Commons.Date.getTime()).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).error(R.drawable.shopscheck_idcard_back).into(iv_idCardBack);
@@ -251,29 +274,124 @@ public class ShopsCheckUserPhotoFragment extends BaseFragment {
}
}
};
+ String[] permission;
- private void pickImage() {
- final Dialog dialogHead = new Dialog(getActivity(), R.style.HOLOMyDialogs);
- dialogHead.show();
- Window window = dialogHead.getWindow();
- window.setContentView(R.layout.dialog_cramer);
- RelativeLayout rl_png = (RelativeLayout) window.findViewById(R.id.rl_man);
- RelativeLayout rl_cramera = (RelativeLayout) window.findViewById(R.id.rl_woman);
- rl_png.setOnClickListener(new View.OnClickListener() {
+ private void showPermissionHint(){
+
+ IosAlertDialog openDialog = new IosAlertDialog(getContext()).builder();
+ openDialog.setCancelable(true);
+ openDialog.setTitle("申请权限目的说明");
+ openDialog.setMessage("设置头像,需要从手机相册中选择图片或使用手机相机拍照进行上传设置,访问相册和相机拍照app需要申请相机和相册存储权限,是否允许申请?");
+ openDialog.setPositiveButton("继续", new View.OnClickListener() {
@Override
- public void onClick(View v) {
+ public void onClick(View view) {
+ getPermission();
+ }
+ });
+ openDialog.setNegativeButton("取消", new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ }
+ });
+ openDialog.show();
+ }
+
+ private void getPermission() {
+ permissionHelper.request(new PermissionHelper.PermissionCallback() {
+ @Override
+ public void onPermissionGranted() {
gallery();
- dialogHead.dismiss();
}
- });
- rl_cramera.setOnClickListener(new View.OnClickListener() {
+
@Override
- public void onClick(View v) {
- camera();
- dialogHead.dismiss();
+ public void onIndividualPermissionGranted(String[] grantedPermission) {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
+ dialog.setCancelable(false);
+ dialog.setMessage("上传图片,请先同意app获取存储和相机权限");
+ dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(
+ DialogInterface dialog,
+ int which) {
+
+ }
+ });
+ dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ });
+ dialog.show();
+ }
+
+ @Override
+ public void onPermissionDenied() {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
+ dialog.setCancelable(false);
+ dialog.setMessage("上传图片,请先同意app获取存储和相机权限");
+ dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(
+ DialogInterface dialog,
+ int which) {
+ getPermission();
+ }
+ });
+ dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ });
+ dialog.show();
+ }
+
+ @Override
+ public void onPermissionDeniedBySystem() {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
+ dialog.setCancelable(false);
+ dialog.setTitle("温馨提示");
+// dialog.setMessage("请到应用管理-爱鱼奇-应用权限页面开启权限后重新打开app");
+ dialog.setMessage("上传图片,请到应用信息页面-权限管理-打开图片和相机权限");
+ dialog.setPositiveButton("去开启", (dialog1, which) -> {
+ AppUtil.toAuthority(getActivity());
+ });
+ dialog.setNegativeButton("取消", (dialog12, which) -> {
+ });
+ dialog.show();
}
});
}
+ private void pickImage() {
+
+ if (!permissionHelper.checkSelfPermission(permission)) {
+ showPermissionHint();
+ } else {
+ gallery();
+ }
+
+
+// final Dialog dialogHead = new Dialog(getActivity(), R.style.HOLOMyDialogs);
+// dialogHead.show();
+// Window window = dialogHead.getWindow();
+// window.setContentView(R.layout.dialog_cramer);
+// RelativeLayout rl_png = (RelativeLayout) window.findViewById(R.id.rl_man);
+// RelativeLayout rl_cramera = (RelativeLayout) window.findViewById(R.id.rl_woman);
+// rl_png.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// gallery();
+// dialogHead.dismiss();
+// }
+// });
+// rl_cramera.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// camera();
+// dialogHead.dismiss();
+// }
+// });
+ }
private boolean hasSdcard() {//判断有无SD卡
if (Environment.getExternalStorageState().equals(
@@ -283,15 +401,32 @@ public class ShopsCheckUserPhotoFragment extends BaseFragment {
return false;
}
}
-
+ private void selectPic(){
+ PictureSelectBean bean = new PictureSelectBean();
+ bean.setCircle(false);
+ if ( PHOTO_FILE_NAME != BUSINESS){
+ bean.setWidth(8);
+ bean.setHeigh(5);
+ }else {
+ bean.setCrop(false);
+ }
+ PictureSelectorUtil.selectPic(getContext(),bean);
+ }
/*
* 从相册获取
*/
public void gallery() {
- // 激活系统图库,选择一张图片
- Intent intent = new Intent(Intent.ACTION_PICK);
- intent.setType("image/*");
- startActivityForResult(intent, PHOTO_REQUEST_GALLERY);
+ if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.R){
+ if (!Environment.isExternalStorageManager()){
+ Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
+ intent.setData(Uri.parse("package:"+getActivity().getPackageName()));
+ startActivityForResult(intent,1024);
+ }else {
+ selectPic();
+ }
+ }else {
+ selectPic();
+ }
}
/*
@@ -306,58 +441,169 @@ public class ShopsCheckUserPhotoFragment extends BaseFragment {
startActivityForResult(intent, PHOTO_REQUEST_CAMERA);
}
+ public void onEventMainThread(EventBean eventBean){
+ if (eventBean!=null && EventBean.CARD.equals(eventBean.name)){
+ if (!TextUtils.isEmpty(eventBean.value)){
+ mCompressPath = eventBean.value;
+ image();
+ }else {
+ gallery();
+ }
+ }
+ }
+
+ private void image(){
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ bitmap = Glide.with(getActivity()).asBitmap().load(mCompressPath).submit().get();
+ if (PHOTO_FILE_NAME.equals(ID_CARD)) {//身份证正面
+ idCardFile = saveFile(bitmap, PHOTO_FILE_NAME);
+ getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Picasso.with(getActivity()).invalidate(idCardFile);
+ Picasso.with(getActivity()).load(idCardFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCard);
+
+ }
+ });
+ } else if (PHOTO_FILE_NAME.equals(ID_CARD_BACK)) {//身份证背面
+ idCardBackFile = saveFile(bitmap, PHOTO_FILE_NAME);
+ getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Picasso.with(getActivity()).invalidate(idCardBackFile);
+ Picasso.with(getActivity()).load(idCardBackFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCardBack);
+
+ }
+ });
+ } else if (PHOTO_FILE_NAME.equals(BUSINESS)) {//营业执照
+ businessFile = saveFile(bitmap, PHOTO_FILE_NAME);
+ getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Picasso.with(getActivity()).invalidate(businessFile);
+ Picasso.with(getActivity()).load(businessFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_businessLicense);
+
+ }
+ });
+ }
+ if (tempFile != null) {
+ tempFile.delete();
+ }
+// bitmap.recycle();
+// bitmap = null;
+ } catch (ExecutionException e) {
+ throw new RuntimeException(e);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }).start();
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ if (bitmap!=null){
+ bitmap.recycle();
+ bitmap = null;
+ }
+ }
+
+ private String mCompressPath = null;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == PHOTO_REQUEST_GALLERY) {
- if (data != null) {
- // 得到图片的全路径
- Uri uri = data.getData();
- crop(uri);
+
+
+ if (requestCode == 1024 && Build.VERSION.SDK_INT >=Build.VERSION_CODES.R){
+ if (Environment.isExternalStorageManager()){
+ selectPic();
}
- } else if (requestCode == PHOTO_REQUEST_CAMERA) {
- if (hasSdcard()) {
- tempFile = new File(Environment.getExternalStorageDirectory(),
- PHOTO_FILE_NAME);
- crop(UriForFile.getUriForFile(getContext(), tempFile));
- } else {
- ToastUtil.show(getActivity(), "未找到存储卡 无法存储照片");
- }
+ }else if (resultCode == RESULT_OK){
+ if (requestCode== PictureConfig.CHOOSE_REQUEST){
+ ArrayList selectList = PictureSelector.obtainSelectorList(data);
+ if (selectList!=null && selectList.size()>0){
+ LocalMedia localMedia = selectList.get(0);
+ if (localMedia.isCut()){
+ mCompressPath = localMedia.getCutPath();
+ }else
+ {
+ mCompressPath = localMedia.getCompressPath();
+ }
- } else if (requestCode == PHOTO_REQUEST_CUT) {
- try {
- bitmap = data.getParcelableExtra("data");
- if (!hasSdcard()) {//未找到SD卡
- ToastUtil.show(getActivity(), "未找到存储卡 无法存储照片");
- return;
- }
- if (PHOTO_FILE_NAME.equals(ID_CARD)) {//身份证正面
- idCardFile = saveFile(bitmap, PHOTO_FILE_NAME);
- Picasso.with(getActivity()).invalidate(idCardFile);
- Picasso.with(getActivity()).load(idCardFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCard);
- } else if (PHOTO_FILE_NAME.equals(ID_CARD_BACK)) {//身份证背面
- idCardBackFile = saveFile(bitmap, PHOTO_FILE_NAME);
- Picasso.with(getActivity()).invalidate(idCardBackFile);
- Picasso.with(getActivity()).load(idCardBackFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCardBack);
- } else if (PHOTO_FILE_NAME.equals(BUSINESS)) {//营业执照
- businessFile = saveFile(bitmap, PHOTO_FILE_NAME);
- Picasso.with(getActivity()).invalidate(businessFile);
- Picasso.with(getActivity()).load(businessFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_businessLicense);
+ if (TextUtils.isEmpty(mCompressPath)){
+ mCompressPath = localMedia.getRealPath();
+ }
+ L.i("jjia------------1---"+mCompressPath);
+
+ image();
}
- if (tempFile != null) {
- tempFile.delete();
- }
- bitmap.recycle();
- bitmap = null;
- } catch (Exception e) {
- e.printStackTrace();
- ToastUtil.show(getActivity(), "未找到图片 请重试");
}
}
+
+
+
+ /// //////////////
+
+
+
+// if (requestCode == PHOTO_REQUEST_GALLERY) {
+// if (data != null) {
+// // 得到图片的全路径
+// Uri uri = data.getData();
+// crop(uri);
+// }
+//
+// } else if (requestCode == PHOTO_REQUEST_CAMERA) {
+// if (hasSdcard()) {
+// tempFile = new File(Environment.getExternalStorageDirectory(),
+// PHOTO_FILE_NAME);
+// crop(UriForFile.getUriForFile(getContext(), tempFile));
+// } else {
+// ToastUtil.show(getActivity(), "未找到存储卡 无法存储照片");
+// }
+//
+// } else if (requestCode == PHOTO_REQUEST_CUT) {
+// try {
+// bitmap = data.getParcelableExtra("data");
+// if (!hasSdcard()) {//未找到SD卡
+// ToastUtil.show(getActivity(), "未找到存储卡 无法存储照片");
+// return;
+// }
+// if (PHOTO_FILE_NAME.equals(ID_CARD)) {//身份证正面
+// idCardFile = saveFile(bitmap, PHOTO_FILE_NAME);
+// Picasso.with(getActivity()).invalidate(idCardFile);
+// Picasso.with(getActivity()).load(idCardFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCard);
+// } else if (PHOTO_FILE_NAME.equals(ID_CARD_BACK)) {//身份证背面
+// idCardBackFile = saveFile(bitmap, PHOTO_FILE_NAME);
+// Picasso.with(getActivity()).invalidate(idCardBackFile);
+// Picasso.with(getActivity()).load(idCardBackFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCardBack);
+// } else if (PHOTO_FILE_NAME.equals(BUSINESS)) {//营业执照
+// businessFile = saveFile(bitmap, PHOTO_FILE_NAME);
+// Picasso.with(getActivity()).invalidate(businessFile);
+// Picasso.with(getActivity()).load(businessFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_businessLicense);
+//
+// }
+// if (tempFile != null) {
+// tempFile.delete();
+// }
+// bitmap.recycle();
+// bitmap = null;
+// } catch (Exception e) {
+// e.printStackTrace();
+// ToastUtil.show(getActivity(), "未找到图片 请重试");
+// }
+// }
+
}
/**
diff --git a/iFish7/src/main/java/com/ifish/fragment/ThreeFragment.java b/iFish7/src/main/java/com/ifish/fragment/ThreeFragment.java
index 2a82415b2..31058b871 100644
--- a/iFish7/src/main/java/com/ifish/fragment/ThreeFragment.java
+++ b/iFish7/src/main/java/com/ifish/fragment/ThreeFragment.java
@@ -21,7 +21,6 @@ import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
-import com.ifish.activity.MainSix_4F_ControlActivity;
import com.ifish.activity.MainTabActivity;
import com.ifish.activity.R;
import com.ifish.activity.R.drawable;
diff --git a/iFish7/src/main/java/com/ifish/push/AlipushReceiver.java b/iFish7/src/main/java/com/ifish/push/AlipushReceiver.java
index 5e19a24b1..476cacf68 100644
--- a/iFish7/src/main/java/com/ifish/push/AlipushReceiver.java
+++ b/iFish7/src/main/java/com/ifish/push/AlipushReceiver.java
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
package com.ifish.push;
import android.content.Context;
@@ -58,3 +59,63 @@ public class AlipushReceiver extends MessageReceiver {
}
}
+=======
+//package com.ifish.push;
+//
+//import android.content.Context;
+//import android.content.Intent;
+//import android.util.Log;
+//
+//import com.ifish.activity.RecentContactsActivity;
+//
+//import java.util.Map;
+//
+///**
+// * Created by Administrator on 2019/5/22.
+// */
+//
+//public class AlipushReceiver extends MessageReceiver {
+// // 消息接收部分的LOG_TAG
+// public static final String REC_TAG = "receiver";
+//
+// @Override
+// public void onNotification(Context context, String title, String summary, Map extraMap) {
+// // TODO 处理推送通知
+// Log.e("MyMessageReceiver", "Receive notification, title: " + title + ", summary: " + summary + ", extraMap: " + extraMap);
+// }
+//
+// @Override
+// public void onMessage(Context context, CPushMessage cPushMessage) {
+// Log.e("MyMessageReceiver", "onMessage, messageId: " + cPushMessage.getMessageId() + ", title: " + cPushMessage.getTitle() + ", content:" + cPushMessage.getContent());
+// }
+//
+// @Override
+// public void onNotificationOpened(Context context, String title, String summary, String extraMap) {
+// Log.e("MyMessageReceiver", "onNotificationOpened, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap);
+// Intent intent = new Intent();
+// intent.setClass(context, RecentContactsActivity.class);
+// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+// context.startActivity(intent);
+// }
+//
+// @Override
+// protected void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap) {
+// Log.e("MyMessageReceiver", "onNotificationClickedWithNoAction, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap);
+// Intent intent = new Intent();
+// intent.setClass(context, RecentContactsActivity.class);
+// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+// context.startActivity(intent);
+// }
+//
+// @Override
+// protected void onNotificationReceivedInApp(Context context, String title, String summary, Map extraMap, int openType, String openActivity, String openUrl) {
+// Log.e("MyMessageReceiver", "onNotificationReceivedInApp, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap + ", openType:" + openType + ", openActivity:" + openActivity + ", openUrl:" + openUrl);
+// }
+//
+// @Override
+// protected void onNotificationRemoved(Context context, String messageId) {
+// Log.e("MyMessageReceiver", "onNotificationRemoved");
+// }
+//
+//}
+>>>>>>> release
diff --git a/iFish7/src/main/java/com/ifish/push/IIntentService.java b/iFish7/src/main/java/com/ifish/push/IIntentService.java
new file mode 100644
index 000000000..64cfaf008
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/push/IIntentService.java
@@ -0,0 +1,56 @@
+package com.ifish.push;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+
+import com.ifish.activity.PushActivity;
+import com.ifish.activity.RecentContactsActivity;
+import com.ifish.baseclass.BaseApplication;
+import com.ifish.utils.L;
+import com.igexin.sdk.GTIntentService;
+import com.igexin.sdk.message.GTNotificationMessage;
+import com.igexin.sdk.message.GTTransmitMessage;
+
+public class IIntentService extends GTIntentService {
+
+ @Override
+ public void onReceiveClientId(Context context, String s) {
+ super.onReceiveClientId(context, s);
+ L.i("jjia----------push--cid--"+s);
+ }
+
+ @Override
+ public void onReceiveMessageData(Context context, GTTransmitMessage gtTransmitMessage) {
+ super.onReceiveMessageData(context, gtTransmitMessage);
+ }
+
+ // cid离线上线通知
+ @Override
+ public void onReceiveOnlineState(Context context, boolean b) {
+ super.onReceiveOnlineState(context, b);
+ }
+
+ // 通知到达
+ @Override
+ public void onNotificationMessageArrived(Context context, GTNotificationMessage gtNotificationMessage) {
+ super.onNotificationMessageArrived(context, gtNotificationMessage);
+
+ L.i("jjia---------通知到达---");
+ }
+
+ //通知点击
+// 通知点击回调接口(仅支持个推 SDK 通道下发的通知)
+ @Override
+ public void onNotificationMessageClicked(Context context, GTNotificationMessage gtNotificationMessage) {
+ super.onNotificationMessageClicked(context, gtNotificationMessage);
+ L.i("jjia---------通知点击---");
+ Intent intent = new Intent();
+ intent.setClass(context, RecentContactsActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ intent.putExtra("payload", "payloadStr");
+ intent.setData(Uri.parse("gtpushscheme://com.getui.push/detail?"));
+ context.startActivity(intent);
+ }
+}
diff --git a/iFish7/src/main/java/com/ifish/push/IPushService.java b/iFish7/src/main/java/com/ifish/push/IPushService.java
new file mode 100644
index 000000000..0328ad218
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/push/IPushService.java
@@ -0,0 +1,6 @@
+package com.ifish.push;
+
+import com.igexin.sdk.PushService;
+
+public class IPushService extends PushService {
+}
diff --git a/iFish7/src/main/java/com/ifish/push/PopupPushActivity.java b/iFish7/src/main/java/com/ifish/push/PopupPushActivity.java
index 496ee4712..a33b17e78 100644
--- a/iFish7/src/main/java/com/ifish/push/PopupPushActivity.java
+++ b/iFish7/src/main/java/com/ifish/push/PopupPushActivity.java
@@ -1,39 +1,39 @@
-package com.ifish.push;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.alibaba.sdk.android.push.AndroidPopupActivity;
-import com.ifish.activity.RecentContactsActivity;
-
-import java.util.Map;
-
-/**
- * Created by Administrator on 2019/6/2.
- */
-
-public class PopupPushActivity extends AndroidPopupActivity {
- static final String TAG = "PopupPushActivity";
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
-
- /**
- * 实现通知打开回调方法,获取通知相关信息
- *
- * @param title 标题
- * @param summary 内容
- * @param extMap 额外参数
- */
- @Override
- protected void onSysNoticeOpened(String title, String summary, Map extMap) {
- Intent intent = new Intent();
- intent.setClass(this, RecentContactsActivity.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- this.startActivity(intent);
- Log.d(TAG, "OnMiPushSysNoticeOpened, title: " + title + ", content: " + summary + ", extMap: " + extMap);
- }
-}
+//package com.ifish.push;
+//
+//import android.content.Intent;
+//import android.os.Bundle;
+//import android.util.Log;
+//
+//import com.alibaba.sdk.android.push.AndroidPopupActivity;
+//import com.ifish.activity.RecentContactsActivity;
+//
+//import java.util.Map;
+//
+///**
+// * Created by Administrator on 2019/6/2.
+// */
+//
+//public class PopupPushActivity extends AndroidPopupActivity {
+// static final String TAG = "PopupPushActivity";
+//
+// @Override
+// protected void onCreate(Bundle savedInstanceState) {
+// super.onCreate(savedInstanceState);
+// }
+//
+// /**
+// * 实现通知打开回调方法,获取通知相关信息
+// *
+// * @param title 标题
+// * @param summary 内容
+// * @param extMap 额外参数
+// */
+// @Override
+// protected void onSysNoticeOpened(String title, String summary, Map extMap) {
+// Intent intent = new Intent();
+// intent.setClass(this, RecentContactsActivity.class);
+// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+// this.startActivity(intent);
+// Log.d(TAG, "OnMiPushSysNoticeOpened, title: " + title + ", content: " + summary + ", extMap: " + extMap);
+// }
+//}
diff --git a/iFish7/src/main/java/com/ifish/tcp/Context.java b/iFish7/src/main/java/com/ifish/tcp/Context.java
index 2d5740b20..baf351376 100644
--- a/iFish7/src/main/java/com/ifish/tcp/Context.java
+++ b/iFish7/src/main/java/com/ifish/tcp/Context.java
@@ -1,49 +1,51 @@
-package com.ifish.tcp;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-
-import org.apache.mina.core.buffer.IoBuffer;
-
-public class Context {
- private final CharsetDecoder decoder;
- private IoBuffer buf;
- private int matchCount = 0;
- private int overflowPosition = 0;
-
- public Context(Charset charset) {
- decoder = charset.newDecoder();
- buf = IoBuffer.allocate(100).setAutoExpand(true);
- //buf.order(ByteOrder.LITTLE_ENDIAN);
- }
-
- public CharsetDecoder getDecoder() {
- return decoder;
- }
-
- public IoBuffer getBuffer() {
- return buf;
- }
-
- public int getOverflowPosition() {
- return overflowPosition;
- }
-
- public int getMatchCount() {
- return matchCount;
- }
-
- public void setMatchCount(int matchCount) {
- this.matchCount = matchCount;
- }
-
- public void reset() {
- overflowPosition = 0;
- matchCount = 0;
- decoder.reset();
- }
-
- public void append(IoBuffer in) {
- getBuffer().put(in);
- }
-}
+//package com.ifish.tcp;
+//
+//import com.ifish.utils.Commons;
+//
+//import java.nio.charset.Charset;
+//import java.nio.charset.CharsetDecoder;
+//
+//import org.apache.mina.core.buffer.IoBuffer;
+//
+//public class Context {
+// private final CharsetDecoder decoder;
+// private IoBuffer buf;
+// private int matchCount = 0;
+// private int overflowPosition = 0;
+//
+// public Context(Charset charset) {
+// decoder = charset.newDecoder();
+// buf = IoBuffer.allocate(Commons.IoBuffer).setAutoExpand(true);
+// //buf.order(ByteOrder.LITTLE_ENDIAN);
+// }
+//
+// public CharsetDecoder getDecoder() {
+// return decoder;
+// }
+//
+// public IoBuffer getBuffer() {
+// return buf;
+// }
+//
+// public int getOverflowPosition() {
+// return overflowPosition;
+// }
+//
+// public int getMatchCount() {
+// return matchCount;
+// }
+//
+// public void setMatchCount(int matchCount) {
+// this.matchCount = matchCount;
+// }
+//
+// public void reset() {
+// overflowPosition = 0;
+// matchCount = 0;
+// decoder.reset();
+// }
+//
+// public void append(IoBuffer in) {
+// getBuffer().put(in);
+// }
+//}
diff --git a/iFish7/src/main/java/com/ifish/tcp/ModelCodec.java b/iFish7/src/main/java/com/ifish/tcp/ModelCodec.java
index fc21fc8cc..9933855b5 100644
--- a/iFish7/src/main/java/com/ifish/tcp/ModelCodec.java
+++ b/iFish7/src/main/java/com/ifish/tcp/ModelCodec.java
@@ -21,8 +21,12 @@ public class ModelCodec {
* @param obj
* @return
*/
- public static byte[] enCode(Object obj) {
- IoBuffer buffer = IoBuffer.allocate(100).setAutoExpand(true);
+ public static byte[] enCode(Object obj){
+ return enCode(obj,100);
+ }
+
+ public static byte[] enCode(Object obj,int len) {
+ IoBuffer buffer = IoBuffer.allocate(len).setAutoExpand(true);
if(obj instanceof BackInfoSix_4F_XunHuanTimes){ //设置循环模式时间
BackInfoSix_4F_XunHuanTimes model = (BackInfoSix_4F_XunHuanTimes) obj;
@@ -428,10 +432,16 @@ public class ModelCodec {
* 把字节数组转成对象
*/
public static Object deCode(byte[] bys) {
+ return deCode(bys,100);
+ }
+ public static Object deCode(byte[] bys,int len) {
int Check_code = getCheck_code(bys);
int length = bys.length;
+
+ Log.i("jjia","-----checkCode="+Check_code);
+ Log.i("jjia","-----字符串="+ByteUtil.bytesToHexString(bys));
Log.i("---------start", Check_code + "---" + ByteUtil.bytesToHexString(bys));
- IoBuffer buf = ByteUtil.byteToIoBuffer(bys, length);
+ IoBuffer buf = ByteUtil.byteToIoBuffer(bys, length,len);
if (Check_code == 21) {
return decodexuanduo_set(buf);
} else if (Check_code == 22) {
diff --git a/iFish7/src/main/java/com/ifish/tcp/OrderDeviceConnectModel.java b/iFish7/src/main/java/com/ifish/tcp/OrderDeviceConnectModel.java
index 8b57721a2..423334d55 100644
--- a/iFish7/src/main/java/com/ifish/tcp/OrderDeviceConnectModel.java
+++ b/iFish7/src/main/java/com/ifish/tcp/OrderDeviceConnectModel.java
@@ -7,6 +7,8 @@
*/
package com.ifish.tcp;
+import com.ifish.utils.Commons;
+
import java.io.Serializable;
/**
@@ -14,9 +16,17 @@ import java.io.Serializable;
*/
public class OrderDeviceConnectModel extends HeadModel implements Serializable {
//路由器wifi名
- private byte[] ssid_name = new byte[20];
+ private byte[] ssid_name;
//路由器wifi密码
- private byte[] ssid_password = new byte[20];
+ private byte[] ssid_password;
+ public OrderDeviceConnectModel(boolean isNew){
+ ssid_name = new byte[ isNew ?Commons.SSID_LENGTH:20];
+ ssid_password = new byte[isNew?Commons.SSID_LENGTH:20];
+ }
+
+// private byte[] ssid_name = new byte[ isNew ?Commons.SSID_LENGTH:20];
+// //路由器wifi密码
+// private byte[]
public byte[] getSsid_name() {
return ssid_name;
diff --git a/iFish7/src/main/java/com/ifish/tcp/OrderModel.java b/iFish7/src/main/java/com/ifish/tcp/OrderModel.java
index f355f42c9..ee2de7281 100644
--- a/iFish7/src/main/java/com/ifish/tcp/OrderModel.java
+++ b/iFish7/src/main/java/com/ifish/tcp/OrderModel.java
@@ -20,7 +20,8 @@ public class OrderModel {
//15字节数据包头
model.setType((byte) 0);
model.setCheck_code((byte) 7);
- model.setRemote_len((byte) 57);
+// model.setRemote_len((byte) 57);
+ model.setRemote_len((byte) Commons.Remote_len);
//wifi账号密码
byte[] wifi_Account = model.getWifiSSID();
byte[] wifi_Password = model.getWifiPWD();
@@ -69,12 +70,13 @@ public class OrderModel {
/**
* 链接路由器指令
*/
- public final static OrderDeviceConnectModel OrderDeviceConnectModel(String ssid_name, String ssid_pwd) {
- OrderDeviceConnectModel model = new OrderDeviceConnectModel();
+ public final static OrderDeviceConnectModel OrderDeviceConnectModel(String ssid_name, String ssid_pwd,boolean x) {
+ OrderDeviceConnectModel model = new OrderDeviceConnectModel(x);
//15字节数据包头
model.setType((byte) 0);
model.setCheck_code((byte) 18);
- model.setRemote_len((byte) 57);
+// model.setRemote_len((byte) 57);
+ model.setRemote_len((byte) (x?Commons.Remote_len:57));
//wifi账号密码
byte[] wifi_Account = model.getSsid_name();
byte[] wifi_Password = model.getSsid_password();
diff --git a/iFish7/src/main/java/com/ifish/tcp/TcpReceiveThread.java b/iFish7/src/main/java/com/ifish/tcp/TcpReceiveThread.java
index 9b47f7e25..394f61fee 100644
--- a/iFish7/src/main/java/com/ifish/tcp/TcpReceiveThread.java
+++ b/iFish7/src/main/java/com/ifish/tcp/TcpReceiveThread.java
@@ -449,7 +449,7 @@ public class TcpReceiveThread implements Runnable {
}
}
} catch (Exception e) {
- L.d("错误=" + e.toString());
+ L.d("jjia=接收方数据--" + e.toString());
e.printStackTrace();
if (Commons.IS_EventBus) {
EventBus.getDefault().post(new ErrorReceiveObj());
diff --git a/iFish7/src/main/java/com/ifish/utils/ActivityManager.java b/iFish7/src/main/java/com/ifish/utils/ActivityManager.java
index 04d235199..d1eb2ecba 100644
--- a/iFish7/src/main/java/com/ifish/utils/ActivityManager.java
+++ b/iFish7/src/main/java/com/ifish/utils/ActivityManager.java
@@ -35,9 +35,13 @@ public class ActivityManager {
// 删除Activity于容器中
public void delActivity(Activity activity) {
activityList.remove(activity);
- }
-
- // 遍历所有Activity并finish
+ }
+
+ public Activity lastActivity() {
+ return activityList.get(activityList.size()-1);
+ }
+
+ // 遍历所有Activity并finish
public void exit() {
for (Activity activity : activityList) {
activity.finish();
diff --git a/iFish7/src/main/java/com/ifish/utils/AppRoute.java b/iFish7/src/main/java/com/ifish/utils/AppRoute.java
new file mode 100644
index 000000000..315b43ebc
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/utils/AppRoute.java
@@ -0,0 +1,149 @@
+package com.ifish.utils;
+
+import android.app.Activity;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.Toast;
+import com.ifish.activity.BlackListActivity;
+import com.ifish.activity.MainEightControlActivity;
+import com.ifish.activity.MainFiveBDControlActivity;
+import com.ifish.activity.MainFiveControlActivity;
+import com.ifish.activity.MainFourControlActivity;
+import com.ifish.activity.MainFour_2B_ControlActivity;
+import com.ifish.activity.MainFour_3F_ControlActivity;
+import com.ifish.activity.MainHot_3A_ControlActivity;
+import com.ifish.activity.MainSeven_2F_ControlActivity;
+import com.ifish.activity.MainSixControlActivity;
+import com.ifish.activity.MainSix_2A_ControlActivity;
+import com.ifish.activity.MainSix_4F_ControlActivity;
+import com.ifish.activity.MainThree1CControlActivity;
+import com.ifish.activity.MainThreeControlActivity;
+import com.ifish.activity.MainTwoControlActivity;
+import com.ifish.activity.MainZeroControlActivity;
+import com.ifish.basebean.Device;
+import com.ifish.baseclass.BaseGradeActivity;
+
+public class AppRoute {
+
+ public static void newToStart( Activity activity,Device device,boolean isBind){
+ if (device!=null){
+ try {
+ L.i("jjia----deviceBean---"+device.toString());
+ toAction(activity,device,isBind);
+ }catch (Exception e) {
+ Intent i = new Intent();
+ ClipboardManager clipboardManager = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE);
+ ClipData mClipData = ClipData.newPlainText("Label", e.getMessage());
+ clipboardManager.setPrimaryClip(mClipData);
+ Toast.makeText(activity, "错误日志复制到剪贴板!", Toast.LENGTH_SHORT).show();
+ i.setClass(activity, MainThreeControlActivity.class);
+ activity.startActivity(i);
+ AnimationUtil.startAnimation(activity);
+ }
+
+
+ }else {
+ if (isBind){
+ Toast.makeText(activity, "绑定返回的设备对象信息是空", Toast.LENGTH_SHORT).show();
+ }
+ oldToStart(activity);
+ }
+
+ }
+
+ public static void toAction(Activity activity,Device device,boolean isBind) {
+ Intent i = new Intent();
+ i.putExtra("device",device);
+ i.putExtra(BaseGradeActivity.BINDDEVICE, isBind);//绑定成功增加经验
+ if (Commons.FishKey.On.equals(Commons.DEVICE.get(Commons.DevicePosition).isBlacklist)) {//黑名单
+ i.setClass(activity, BlackListActivity.class);
+ } else {
+ if (Device.TYPE_1C.equals(device.type)) {
+ i.setClass(activity, MainThree1CControlActivity.class);
+ } else if (Device.TYPE_AA.equals(device.type)) {
+ i.setClass(activity, MainFiveControlActivity.class);
+ } else if (Device.TYPE_BD.equals(device.type)) {
+ i.setClass(activity, MainFiveBDControlActivity.class);
+ } else if (Device.TYPE_2A.equals(device.type)) {
+ i.setClass(activity, MainSix_2A_ControlActivity.class);
+ } else if (Device.TYPE_2B.equals(device.type)) {
+ i.setClass(activity, MainFour_2B_ControlActivity.class);
+ } else if (Device.TYPE_3A.equals(device.type)) {
+ i.setClass(activity, MainHot_3A_ControlActivity.class);
+ } else if (Device.TYPE_2F.equals(device.type)) {
+ i.setClass(activity, MainSeven_2F_ControlActivity.class);
+ } else if (Device.TYPE_3F.equals(device.type)) {
+ i.setClass(activity, MainFour_3F_ControlActivity.class);
+ } else if (Device.TYPE_4F.equals(device.type) || Device.TYPE_5F.equals(device.type)) {
+ i.setClass(activity, MainSix_4F_ControlActivity.class);
+ } else {
+ if (device.getControlAmount() == null) {//如果控制器返回空 则默认给三控的页面
+ i.setClass(activity, MainThreeControlActivity.class);
+ } else {
+ i.setClass(activity, MainThreeControlActivity.class);
+ switch (device.getControlAmount()) {
+ case 0: {
+ i.setClass(activity, MainZeroControlActivity.class);
+ break;
+ }
+ case 2: {
+ i.setClass(activity, MainTwoControlActivity.class);
+ break;
+ }
+ case 3: {
+ i.setClass(activity, MainThreeControlActivity.class);
+ break;
+ }
+ case 4: {
+ if (device.getTimerAmount() == 6) { // 可丽爱
+ i.setClass(activity, MainFiveControlActivity.class);
+ } else {//4控
+ i.setClass(activity, MainFourControlActivity.class);
+ }
+ break;
+ }
+ case 5: {
+ if (6 == device.getTimerAmount()) {//5控六定时器 询多页面
+ i.setClass(activity, MainSixControlActivity.class);
+ }
+ break;
+ }
+ case 8: {
+ i.setClass(activity, MainEightControlActivity.class);
+ break;
+ }
+ default: {
+ i.setClass(activity, MainThreeControlActivity.class);
+ break;
+ }
+ }
+ }
+ }
+ }
+ activity.startActivity(i);
+ AnimationUtil.startAnimation(activity);
+ }
+
+ public static void oldToStart(Activity activity){
+ Intent i = new Intent();
+ try {
+
+ Device device = Commons.DEVICE.get(Commons.DevicePosition);
+ toAction(activity,device,false);
+ L.i("jjia-------mainclick--type-"+device.type);
+ L.i("jjia-------mainclick--"+Commons.DEVICE.get(Commons.DevicePosition).toString());
+
+ } catch (Exception e) {
+ ClipboardManager clipboardManager = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE);
+ ClipData mClipData = ClipData.newPlainText("Label", e.getMessage());
+ clipboardManager.setPrimaryClip(mClipData);
+ Toast.makeText(activity, "错误日志复制到剪贴板!", Toast.LENGTH_SHORT).show();
+ i.setClass(activity, MainThreeControlActivity.class);
+ activity.startActivity(i);
+ AnimationUtil.startAnimation(activity);
+ }
+
+ }
+}
diff --git a/iFish7/src/main/java/com/ifish/utils/AppUtil.java b/iFish7/src/main/java/com/ifish/utils/AppUtil.java
new file mode 100644
index 000000000..89e2178f7
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/utils/AppUtil.java
@@ -0,0 +1,297 @@
+package com.ifish.utils;
+
+import android.app.Activity;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.ImageView;
+
+import androidx.activity.ComponentActivity;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.ifish.activity.R;
+import com.squareup.picasso.Picasso;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AppUtil {
+
+
+
+
+ public static boolean isBrandXiaoMi() {
+ return "xiaomi".equals(
+ Build.BRAND
+ ) || "xiaomi".equals(Build.MANUFACTURER);
+ }
+
+ public static boolean isBrandHuawei() {
+ return "huawei".equals(
+ Build.BRAND
+ ) || "huawei".equals(Build.MANUFACTURER);
+ }
+
+ public static boolean isBrandMeizu() {
+ return "meizu".equals(
+ Build.BRAND
+ ) || "meizu".equals(Build.MANUFACTURER) || "22c4185e".equals(
+ Build.BRAND
+ );
+ }
+
+ public static boolean isBrandOppo() {
+ return "oppo".equalsIgnoreCase(Build.BRAND) || "oppo".equals(Build.MANUFACTURER);
+ }
+
+ public static boolean isBrandOnePlus() {
+ return "oneplus".equals(
+ Build.BRAND
+ ) || "oneplus".equals(Build.MANUFACTURER);
+ }
+
+ public static boolean isBrandVivo() {
+ return "vivo".equals(
+ Build.BRAND
+ ) || "vivo".equals(Build.MANUFACTURER);
+ }
+
+
+ public static boolean isBrandHonor() {
+ return "honor".equals(
+ Build.BRAND
+ ) || "honor".equals(Build.MANUFACTURER);
+ }
+
+ private static void toPermission(ComponentActivity context) {
+ Intent intent =new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS") ;
+ intent.setData(Uri.fromParts("package", context.getPackageName(), null));
+ context.startActivity(intent);
+ }
+ private static void toPermission(Activity context) {
+ Intent intent =new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS") ;
+ intent.setData(Uri.fromParts("package", context.getPackageName(), null));
+ context.startActivity(intent);
+ }
+
+ private static void gotoOppoPermission(ComponentActivity context) {
+ try {
+
+ Intent intent =new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.putExtra("packageName", context.getPackageName());
+ ComponentName comp =new ComponentName(
+ "com.color.safecenter",
+ "com.color.safecenter.permission.PermissionManagerActivity"
+ );
+ intent.setComponent(comp);
+ context.startActivity(intent);
+ } catch ( Exception e) {
+ toPermission(context);
+ }
+ }
+ private static void gotoOppoPermission(Activity context) {
+ try {
+
+ Intent intent =new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.putExtra("packageName", context.getPackageName());
+ ComponentName comp =new ComponentName(
+ "com.color.safecenter",
+ "com.color.safecenter.permission.PermissionManagerActivity"
+ );
+ intent.setComponent(comp);
+ context.startActivity(intent);
+ } catch ( Exception e) {
+ toPermission(context);
+ }
+ }
+
+ private static void gotoMiuiPermission(ComponentActivity context) {
+ Intent i = new Intent("miui.intent.action.APP_PERM_EDITOR");
+ ComponentName componentName =new ComponentName(
+ "com.miui.securitycenter",
+ "com.miui.permcenter.permissions.PermissionsEditorActivity"
+ );
+ i.setComponent(componentName);
+ i.putExtra("extra_pkgname", context.getPackageName());
+ try {
+ context.startActivity(i);
+ } catch ( Exception e) {
+ e.printStackTrace();
+ toPermission(context);
+ }
+ }
+ private static void gotoMiuiPermission(Activity context) {
+ Intent i = new Intent("miui.intent.action.APP_PERM_EDITOR");
+ ComponentName componentName =new ComponentName(
+ "com.miui.securitycenter",
+ "com.miui.permcenter.permissions.PermissionsEditorActivity"
+ );
+ i.setComponent(componentName);
+ i.putExtra("extra_pkgname", context.getPackageName());
+ try {
+ context.startActivity(i);
+ } catch ( Exception e) {
+ e.printStackTrace();
+ toPermission(context);
+ }
+ }
+
+ private static void gotoMeizuPermission(ComponentActivity context) {
+ Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+ intent.putExtra("packageName", context.getPackageName());
+ try {
+ context.startActivity(intent);
+ } catch (java.lang.Exception e) {
+ e.printStackTrace();
+ toPermission(context);
+ }
+ }
+ private static void gotoMeizuPermission(Activity context) {
+ Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+ intent.putExtra("packageName", context.getPackageName());
+ try {
+ context.startActivity(intent);
+ } catch (java.lang.Exception e) {
+ e.printStackTrace();
+ toPermission(context);
+ }
+ }
+
+ private static void gotoHuaweiPermission(ComponentActivity context) {
+ try {
+ Intent intent = new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ ComponentName comp =new ComponentName(
+ "com.huawei.systemmanager",
+ "com.huawei.permissionmanager.ui.MainActivity"
+ ) ;//华为权限管理
+ intent.setComponent(comp) ;
+ context.startActivity(intent);
+ } catch ( java.lang.Exception e) {
+ e.printStackTrace();
+ toPermission(context);
+ }
+ }
+ private static void gotoHuaweiPermission(Activity context) {
+ try {
+ Intent intent = new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ ComponentName comp =new ComponentName(
+ "com.huawei.systemmanager",
+ "com.huawei.permissionmanager.ui.MainActivity"
+ ) ;//华为权限管理
+ intent.setComponent(comp) ;
+ context.startActivity(intent);
+ } catch ( java.lang.Exception e) {
+ e.printStackTrace();
+ toPermission(context);
+ }
+ }
+
+ public static void toAuthority(ComponentActivity context) {
+
+ if (isBrandXiaoMi()){
+ gotoMiuiPermission(context);
+ }else if (isBrandMeizu()){
+ gotoMeizuPermission(context);
+ }else if (isBrandHuawei()){
+ gotoHuaweiPermission(context);
+ }else if(isBrandOnePlus()){
+ gotoOppoPermission(context);
+ }else if (isBrandOppo()){
+ gotoOppoPermission(context);
+ }else {
+ toPermission(context);
+ }
+ }
+
+ public static void toAuthority(Activity context) {
+
+ if (isBrandXiaoMi()){
+ gotoMiuiPermission(context);
+ }else if (isBrandMeizu()){
+ gotoMeizuPermission(context);
+ }else if (isBrandHuawei()){
+ gotoHuaweiPermission(context);
+ }else if(isBrandOnePlus()){
+ gotoOppoPermission(context);
+ }else if (isBrandOppo()){
+ gotoOppoPermission(context);
+ }else {
+ toPermission(context);
+ }
+ }
+
+ /**
+ * 检测手机是否支持4.0蓝牙
+ * @param context 上下文
+ * @return true--支持4.0 false--不支持4.0
+ */
+ private boolean checkBle(Context context){
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { //API 18 Android 4.3
+ BluetoothManager bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
+ if(bluetoothManager == null){
+ return false;
+ }
+ BluetoothAdapter bluetooth4Adapter = bluetoothManager.getAdapter(); //BLUETOOTH权限
+ if(bluetooth4Adapter == null){
+ return false;
+ }else{
+ L.i("该设备支持蓝牙4.0");
+ return true;
+ }
+ }else{
+ return false;
+ }
+ }
+
+
+ public static String [] getImagePermissionList(){
+ List perList = new ArrayList<>();
+ perList.add(android.Manifest.permission.CAMERA);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ perList.add(android.Manifest.permission.READ_MEDIA_IMAGES);
+ perList.add(android.Manifest.permission.READ_MEDIA_VIDEO);
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
+ perList.add(android.Manifest.permission.READ_EXTERNAL_STORAGE);
+ perList.add(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ }else {
+ perList.add(android.Manifest.permission.READ_EXTERNAL_STORAGE);
+ perList.add(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ }
+ int size = perList.size();
+ String [] permissions = new String[size];
+
+ for (int i = 0;i" + bluetoothDevice.getAddress()+"---"+rssi);
+//
+// }
+//// L.d(bluetoothDevice.getName() + "--jjia---toher>" + bluetoothDevice.getAddress()+"---"+rssi);
+//// BLEDevice bleDevice = new BLEDevice(bluetoothDevice,rssi);
+//// if(onDeviceSearchListener != null){
+//// onDeviceSearchListener.onDeviceFound(bleDevice); //扫描到设备回调
+//// }
+// }
+// };
+//
+// @SuppressLint("MissingPermission")
+// public void stopScan(){
+// if (bluetoothAdapter!=null){
+// bluetoothAdapter.stopLeScan(leScanCallback);
+// }
+// }
+//
+// @SuppressLint("MissingPermission")
+// public void connect(AppCompatActivity activity){
+// if (currentDevice!=null){
+// currentDevice.connectGatt(activity,false,bluetoothGattCallback);
+// }
+//
+// }
+//
+// //连接/通讯结果回调
+// @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
+// private BluetoothGattCallback bluetoothGattCallback = new BluetoothGattCallback() {
+// //连接状态回调-连接成功/断开连接
+// @SuppressLint("MissingPermission")
+// @Override
+// public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
+// super.onConnectionStateChange(gatt, status, newState);
+// L.d("jjia-----status:" + status);
+// L.d("jjia------newState:" + newState);
+// // GATT的链接状态回调
+// switch (newState){
+// case BluetoothGatt.STATE_CONNECTED:
+// L.d("jjia----蓝牙连接成功");
+// gatt.discoverServices(); // 去发现服务
+// break;
+//
+// case BluetoothGatt.STATE_DISCONNECTED:
+// //青空系统缓存
+// ClsUtils.refreshDeviceCache(gatt);
+// L.d("jjia----蓝牙连接失败");
+// gatt.close();//断开连接释放连接
+//
+// if (status == 133){
+// L.d("jjia----无法连接");
+// }else if (status == 62){
+// L.d("jjia----连接成功服务没有发现");
+// }else if(status ==0){
+// L.d("jjia----0正常断开 回调");
+// }else if(status ==8){
+// L.d("jjia----距离太远或者无法供电而断开");
+// }
+// break;
+//
+// case BluetoothGatt.STATE_CONNECTING:
+// L.d("jjia----正在连接中。。。。。");
+// break;
+//
+// case BluetoothGatt.STATE_DISCONNECTING:
+// L.d("jjia----正在断开中。。。。。");
+// break;
+// }
+// BluetoothDevice bluetoothDevice = gatt.getDevice();
+// L.d("jjia连接的设备:" + bluetoothDevice.getName() + " " + bluetoothDevice.getAddress());
+//
+//// isConnectIng = false;
+//// //移除连接超时
+//// mHandler.removeCallbacks(connectOutTimeRunnable);
+////
+//// if(newState == BluetoothGatt.STATE_CONNECTED){
+//// L.d("jjia连接成功");
+//// //连接成功去发现服务
+//// gatt.discoverServices();
+//// //设置发现服务超时时间
+//// mHandler.postDelayed(serviceDiscoverOutTimeRunnable,MAX_CONNECT_TIME);
+////
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onConnectSuccess(gatt,bluetoothDevice,status); //连接成功回调
+//// }
+//// }else if(newState == BluetoothGatt.STATE_DISCONNECTED) {
+//// //清空系统缓存
+//// ClsUtils.refreshDeviceCache(gatt);
+//// Log.e(TAG, "断开连接status:" + status);
+//// gatt.close(); //断开连接释放连接
+////
+//// if(status == 133){
+//// //无法连接
+//// if(onBleConnectListener != null){
+//// gatt.close();
+//// onBleConnectListener.onConnectFailure(gatt,bluetoothDevice,"连接异常!",status); //133连接异常 异常断开
+//// L.d("jjia连接失败status:" + status + " " + bluetoothDevice.getAddress());
+//// }
+//// }else if(status == 62){
+//// //成功连接没有发现服务断开
+//// if(onBleConnectListener != null){
+//// gatt.close();
+//// onBleConnectListener.onConnectFailure(gatt,bluetoothDevice,"连接成功服务未发现断开!",status); //62没有发现服务 异常断开
+//// L.d("jjia连接成功服务未发现断开status:" + status);
+//// }
+////
+//// }else if(status == 0){
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onDisConnectSuccess(gatt,bluetoothDevice,status); //0正常断开 回调
+//// }
+//// }else if(status == 8){
+//// //因为距离远或者电池无法供电断开连接
+//// // 已经成功发现服务
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onDisConnectSuccess(gatt,bluetoothDevice,status); //8断电断开 回调
+//// }
+//// }else if(status == 34){
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onDisConnectSuccess(gatt,bluetoothDevice,status); //34断开
+//// }
+//// }else {
+//// //其它断开连接
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onDisConnectSuccess(gatt,bluetoothDevice,status); //其它断开
+//// }
+//// }
+//// }else if(newState == BluetoothGatt.STATE_CONNECTING){
+//// L.d("jjia正在连接...");
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onConnecting(gatt,bluetoothDevice); //正在连接回调
+//// }
+//// }else if(newState == BluetoothGatt.STATE_DISCONNECTING){
+//// L.d("jjia正在断开...");
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onDisConnecting(gatt,bluetoothDevice); //正在断开回调
+//// }
+//// }
+// }
+//
+//
+//
+//
+// ///////////////////////////////////////// 打开通知 //////////////////////////////////////////
+//
+// /**
+// * 设置读特征接收通知
+// * @param enable 为true打开通知
+// * @param gatt 连接
+// * @param characteristic 特征
+// */
+// @SuppressLint("MissingPermission")
+// public void enableNotification(boolean enable, BluetoothGatt gatt, BluetoothGattCharacteristic characteristic){
+// if(gatt == null){
+// L.i("jjia------enableNotification-->gatt == null");
+// return;
+// }
+// if(characteristic == null){
+// L.i("jjia------enableNotification-->characteristic == null");
+// return;
+// }
+// //这一步必须要有,否则接收不到通知
+// gatt.setCharacteristicNotification(characteristic,enable);
+// }
+// //发现服务
+// //获取GATT服务发现后的回调
+// @SuppressLint("MissingPermission")
+// @Override
+// public void onServicesDiscovered(BluetoothGatt gatt, int status) {
+// super.onServicesDiscovered(gatt, status);
+//
+// if (status == BluetoothGatt.GATT_SUCCESS){
+//
+// mGatt = gatt;
+//
+// L.i("jjia------GATT_SUCCESS---services"); //服务发现
+//
+// if (gatt.getServices()!=null){
+// L.i("jjia-----find---services"+gatt.getServices().size()); //服务发现
+// for (BluetoothGattService bluetoothGattService : gatt.getServices()) {
+// if (bluetoothGattService!=null ){
+// String UID = bluetoothGattService.getUuid().toString();
+// if (!TextUtils.isEmpty(UID) && SERVICE_UUID.equals(UID)){
+// service = bluetoothGattService;
+// L.i("jjia------Service_UUID:" + bluetoothGattService.getUuid()); // 我们可以遍历到该蓝牙设备的全部Service对象。然后通过比较Service的UUID,我们可以区分该服务是属于什么业务的
+// for (BluetoothGattCharacteristic characteristic : bluetoothGattService.getCharacteristics()) {
+// L.i("jjia------characteristic-UUID:" + characteristic.getUuid());
+// if (characteristic!=null && !TextUtils.isEmpty(characteristic.getUuid().toString()) && WRITE_UUID.equals(characteristic.getUuid().toString())){
+//
+// write = characteristic;
+// read = characteristic;
+//
+// //打开读通知
+// enableNotification(true, gatt, read);
+//
+// //重点中重点,需要重新设置
+// List descriptors = write.getDescriptors();
+// for (BluetoothGattDescriptor descriptor : descriptors) {
+// descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
+// gatt.writeDescriptor(descriptor);
+// }
+// }
+// }
+// }
+//
+// }
+//
+//
+// EventBean eventBean = new EventBean("blue_ok");
+// EventBus.getDefault().post(eventBean);
+////
+//// if (SERVICE_UUID.equals(bluetoothGattService.getUuid().toString())) {
+////
+//// for (BluetoothGattCharacteristic characteristic : bluetoothGattService.getCharacteristics()) {
+//// L.i("jjia------characteristic-UUID:" + characteristic.getUuid());
+////// prepareBroadcastDataNotify(gatt, characteristic); //给满足条件的属性配置上消息通知
+//// }
+//// return;//结束循环操作
+//// }
+// }
+//
+//
+// }else {
+// L.i("jjia------no---services"); //服务发现
+// }
+//
+// }
+// //移除发现服务超时
+//// mHandler.removeCallbacks(serviceDiscoverOutTimeRunnable);
+//// L.d("jjia移除发现服务超时");
+////
+//// L.d("jjia发现服务");
+////
+//// //配置服务信息
+//// if(setupService(gatt,serviceUUID,readUUID,writeUUID)){
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onServiceDiscoverySucceed(gatt,gatt.getDevice(),status); //成功发现服务回调
+//// }
+//// }else{
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onServiceDiscoveryFailed(gatt,gatt.getDevice(),"获取服务特征异常"); //发现服务失败回调
+//// }
+//// }
+// }
+//
+// @Override
+// public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
+// super.onCharacteristicRead(gatt, characteristic, status);
+// L.d("jjia-------------读status: " + status);
+// }
+//
+// //向蓝牙设备写入数据结果回调
+// @Override
+// public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
+// super.onCharacteristicWrite(gatt, characteristic, status);
+//
+//
+// byte [] bb = characteristic.getValue();
+// L.i(characteristic.getUuid()+"jjia---------------向蓝牙设备写入数据结果回调--"+new String(bb));
+// L.i(status+"jjia---------------向蓝牙设备写入数据结果回调--"+BluetoothGatt.GATT_SUCCESS);
+//// if(characteristic.getValue() == null){
+//// L.d("jjiacharacteristic.getValue() == null");
+//// return;
+//// }
+//// //将收到的字节数组转换成十六进制字符串
+//// String msg = TypeConversion.bytes2HexString(characteristic.getValue(),characteristic.getValue().length);
+//// if(status == BluetoothGatt.GATT_SUCCESS){
+//// //写入成功
+//// L.d("jjia写入成功:" + msg);
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onWriteSuccess(gatt,gatt.getDevice(),characteristic.getValue()); //写入成功回调
+//// }
+////
+//// }else if(status == BluetoothGatt.GATT_FAILURE){
+//// //写入失败
+//// L.d("jjia写入失败:" + msg);
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onWriteFailure(gatt,gatt.getDevice(),characteristic.getValue(),"写入失败"); //写入失败回调
+//// }
+//// }else if(status == BluetoothGatt.GATT_WRITE_NOT_PERMITTED){
+//// //没有权限
+//// L.d("jjia没有权限!");
+//// }
+// }
+//
+// //读取蓝牙设备发出来的数据回调
+// @Override
+// public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
+// super.onCharacteristicChanged(gatt, characteristic);
+//
+// //接收数据
+// byte[] bytes = characteristic.getValue();
+//
+// L.i(characteristic.getUuid()+"jjia---------------读取蓝牙设备发出来的数据回调--");
+//// Log.w("TAG","收到数据str:" + TypeConversion.bytes2HexString(bytes,bytes.length));
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onReceiveMessage(gatt,gatt.getDevice(),characteristic,characteristic.getValue()); //接收数据回调
+//// }
+// }
+//
+// @Override
+// public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
+// super.onDescriptorRead(gatt, descriptor, status);
+// }
+//
+// @Override
+// public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
+// super.onDescriptorWrite(gatt, descriptor, status);
+// }
+//
+// @Override
+// public void onReliableWriteCompleted(BluetoothGatt gatt, int status) {
+// super.onReliableWriteCompleted(gatt, status);
+// L.d("jjiaonReliableWriteCompleted");
+// }
+//
+// @Override
+// public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
+// super.onReadRemoteRssi(gatt, rssi, status);
+//// if(status == BluetoothGatt.GATT_SUCCESS){
+//// L.d("jjia读取RSSI值成功,RSSI值:" + rssi + ",status" + status);
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onReadRssi(gatt,rssi,status); //成功读取连接的信号强度回调
+//// }
+//// }else if(status == BluetoothGatt.GATT_FAILURE){
+//// L.d("jjia读取RSSI值失败,status:" + status);
+//// }
+// }
+//
+// //修改MTU值结果回调
+// @Override
+// public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
+// super.onMtuChanged(gatt, mtu, status);
+// ///设置mtu值,即bluetoothGatt.requestMtu()时触发,提示该操作是否成功
+//// if(status == BluetoothGatt.GATT_SUCCESS){ //设置MTU成功
+//// //MTU默认取的是23,当收到 onMtuChanged 后,会根据传递的值修改MTU,注意由于传输用掉3字节,因此传递的值需要减3。
+//// //mtu - 3
+//// L.d("jjia设置MTU成功,新的MTU值:" + (mtu-3) + ",status" + status);
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onMTUSetSuccess("设置后新的MTU值 = " + (mtu-3) + " status = " + status,mtu - 3); //MTU设置成功
+//// }
+////
+//// }else if(status == BluetoothGatt.GATT_FAILURE){ //设置MTU失败
+//// L.d("jjia设置MTU值失败:" + (mtu-3) + ",status" + status);
+//// if(onBleConnectListener != null){
+//// onBleConnectListener.onMTUSetFailure("设置MTU值失败:" + (mtu-3) + " status:" + status); //MTU设置失败
+//// }
+//// }
+//
+// }
+// };
+//
+// public static final String SERVICE_UUID = "000000ff-0000-1000-8000-00805f9b34fb"; //蓝牙通讯服务
+// public static final String READ_UUID = "0000ff01-0000-1000-8000-00805f9b34fb"; //读特征
+// public static final String WRITE_UUID = "0000ff01-0000-1000-8000-00805f9b34fb"; //写特征
+// BluetoothGattService service;
+// BluetoothGattCharacteristic read;
+// BluetoothGattCharacteristic write;
+// BluetoothGatt mGatt ;
+//
+// @SuppressLint("MissingPermission")
+// public void sendData(byte [] data){
+// if (write!=null){
+// L.d("jjia------send--------");
+// write.setValue(data);
+// mGatt.writeCharacteristic(write);
+// }
+//
+// }
+////00002b29-0000-1000-8000-00805f9b34fb // 写
+//
+//
+// /**
+// * 设置读特征接收通知
+// * @param enable 为true打开通知
+// * @param gatt 连接
+// * @param characteristic 特征
+// */
+// @SuppressLint("MissingPermission")
+// @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
+// public void enableNotification(boolean enable, BluetoothGatt gatt, BluetoothGattCharacteristic characteristic){
+// if(gatt == null){
+// L.i("jjia---------enableNotification-->gatt == null");
+// return;
+// }
+// if(characteristic == null){
+// L.i("jjia--------enableNotification-->characteristic == null");
+// return;
+// }
+// //这一步必须要有,否则接收不到通知
+// gatt.setCharacteristicNotification(characteristic,enable);
+// }
+//
+//
+// public static final String CLIENT_CHARACTERISTIC_CONFIG = "00002902-0000-1000-8000-00805f9b34fb";
+//
+// @SuppressLint("MissingPermission")
+// private void setAutoReceiveData(BluetoothGatt gatt,BluetoothGattService linkLossService,BluetoothGattCharacteristic data,BluetoothGattDescriptor defaultDescriptor) {
+// try {
+//// BluetoothGattService linkLossService = gatt.getService(SERVICE_UUID);
+//// BluetoothGattCharacteristic data = linkLossService.getCharacteristic(CHARACTERISTIC_UUID);
+//// BluetoothGattDescriptor defaultDescriptor = data.getDescriptor(UUID.fromString(CLIENT_CHARACTERISTIC_CONFIG));
+// if (null != defaultDescriptor) {
+// defaultDescriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
+// gatt.writeDescriptor(defaultDescriptor);
+// }
+// gatt.setCharacteristicNotification(data, true);
+// } catch (Exception e) {
+//// BleLogUtils.appendLog("setAutoReceiveData:" + e.getMessage());
+// }
+// }
+//}
diff --git a/iFish7/src/main/java/com/ifish/utils/BlueToothUtil.kt b/iFish7/src/main/java/com/ifish/utils/BlueToothUtil.kt
new file mode 100644
index 000000000..ed084529f
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/utils/BlueToothUtil.kt
@@ -0,0 +1,20 @@
+package com.ifish.utils
+
+import android.annotation.SuppressLint
+import android.bluetooth.BluetoothAdapter
+import android.content.Context
+import android.content.Intent
+
+class BlueToothUtil {
+
+ companion object{
+
+ @JvmStatic
+ @SuppressLint("MissingPermission")
+ fun openBlueTooth(context: Context){
+ L.i("jjia-----提示用户去打开手机蓝牙")
+ val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
+ context.startActivity(enableBtIntent)
+ }
+ }
+}
\ No newline at end of file
diff --git a/iFish7/src/main/java/com/ifish/utils/ByteUtil.java b/iFish7/src/main/java/com/ifish/utils/ByteUtil.java
index 65f7b5c02..88cd17d42 100644
--- a/iFish7/src/main/java/com/ifish/utils/ByteUtil.java
+++ b/iFish7/src/main/java/com/ifish/utils/ByteUtil.java
@@ -71,11 +71,20 @@ public class ByteUtil{
* 将byte[]转换成IoBuffer
* @param str
*/
- public static IoBuffer byteToIoBuffer(byte [] bt,int length){
- IoBuffer ioBuffer = IoBuffer.allocate(100).setAutoExpand(true);
+ public static IoBuffer byteToIoBuffer(byte [] bt,int length){
+// IoBuffer ioBuffer = IoBuffer.allocate(Commons.IoBuffer).setAutoExpand(true);
+// //ioBuffer.order(ByteOrder.LITTLE_ENDIAN);// 修改此缓冲区的字节顺大端模式
+// ioBuffer.put(bt, 0, length);
+// ioBuffer.flip();
+// return ioBuffer;
+ return byteToIoBuffer(bt,length,100);
+ }
+
+ public static IoBuffer byteToIoBuffer(byte [] bt,int length,int xx){
+ IoBuffer ioBuffer = IoBuffer.allocate(xx).setAutoExpand(true);
//ioBuffer.order(ByteOrder.LITTLE_ENDIAN);// 修改此缓冲区的字节顺大端模式
- ioBuffer.put(bt, 0, length);
- ioBuffer.flip();
+ ioBuffer.put(bt, 0, length);
+ ioBuffer.flip();
return ioBuffer;
}
diff --git a/iFish7/src/main/java/com/ifish/utils/ClickUtil.java b/iFish7/src/main/java/com/ifish/utils/ClickUtil.java
new file mode 100644
index 000000000..4440e8058
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/utils/ClickUtil.java
@@ -0,0 +1,24 @@
+package com.ifish.utils;
+
+import android.view.View;
+
+public class ClickUtil {
+
+ private static long lastClickTime;
+
+ public static boolean isFastDoubleClick() {
+ return isFastDoubleClick(300);
+ }
+
+ public static boolean isFastDoubleClick(long interval) {
+ long time = System.currentTimeMillis();
+ long timeD = time - lastClickTime;
+ if (0 < timeD && timeD < interval) {
+ lastClickTime = time;
+ return true;
+ }
+ lastClickTime = time;
+ return false;
+ }
+
+}
diff --git a/iFish7/src/main/java/com/ifish/utils/Commons.java b/iFish7/src/main/java/com/ifish/utils/Commons.java
index adf2a7fd5..570fdf174 100644
--- a/iFish7/src/main/java/com/ifish/utils/Commons.java
+++ b/iFish7/src/main/java/com/ifish/utils/Commons.java
@@ -60,6 +60,10 @@ public class Commons {
public static List GRADERULES = null;//等级规则
public static List GOLDTASKS = null;//金币任务
public static final String NimUIKit_ID = "3";//云信聊天 联系爱鱼奇官方的用户id
+ public static final int SSID_STEP = 25;
+ public static final int IoBuffer = 100+ 0 * 2;
+ public static final int Remote_len = 57+ SSID_STEP * 2;
+ public static final int SSID_LENGTH = 20+ SSID_STEP ;
public static int num;
@@ -431,5 +435,6 @@ public class Commons {
public static final String Xunhuanbang_sNumber = "F4";
public static final String Shajundeng_sNumber = "F5";
public static final String Zaolangbang_sNumber = "F6";
+
}
}
diff --git a/iFish7/src/main/java/com/ifish/utils/Config.kt b/iFish7/src/main/java/com/ifish/utils/Config.kt
new file mode 100644
index 000000000..43c055d08
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/utils/Config.kt
@@ -0,0 +1,8 @@
+package com.ifish.utils
+
+class Config {
+ companion object{
+
+// const val deviceId= ""
+ }
+}
\ No newline at end of file
diff --git a/iFish7/src/main/java/com/ifish/utils/DateUtil.kt b/iFish7/src/main/java/com/ifish/utils/DateUtil.kt
new file mode 100644
index 000000000..d06070e6d
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/utils/DateUtil.kt
@@ -0,0 +1,112 @@
+package com.ifish.utils
+
+import com.ifish.basebean.TimeBean
+import com.ifish.baseclass.BaseApplication
+import com.ifish.view.WheelView
+
+class DateUtil {
+
+
+ companion object{
+
+
+ @JvmStatic
+ public fun hasContain(timeList: List, timer_num: Byte, start: Int, end: Int): Boolean {
+ L.i("jjia--------1-$start-$end")
+ if (timeList != null && timeList.size > 0) {
+ for (item in timeList) {
+ if (timer_num == item.no) {
+ continue
+ }
+ val a = item.start
+ val b = item.end
+
+ L.i("jjia-------2--$a-$b")
+ if (start >= a && start <= b) {
+ return true
+ }
+ if (end >= a && end <= b) {
+ return true
+ }
+ }
+ return false
+ } else {
+ return false
+ }
+ }
+
+ @JvmStatic
+ public fun hasContain(timeList: List, timer_num: Byte, startHView: WheelView, startMView:WheelView, endHView:WheelView, endMView:WheelView):Boolean{
+ val startH: Int = startHView.getSeletedIndex()
+ val startM: Int = startMView.getSeletedIndex()
+ val endH: Int = endHView.getSeletedIndex()
+ val endM: Int = endMView.getSeletedIndex()
+
+ if (startH == endH && startM == endM) {
+ ToastUtil.show(BaseApplication.app, "开始时间和结束时间不能相同")
+ return true
+ }
+
+ var isContain = false
+
+ var h1 = -1
+ var m1 = -1
+ var h2 = -1
+ var m2 = -1
+ if (startH > endH) {
+ h1 = startH * 60 + startM
+ m1 = 24 * 60
+ isContain = hasContain(timeList, timer_num, h1, m1)
+ if (!isContain) {
+ h2 = 0
+ m2 = endH * 60 + endM
+ isContain = hasContain(timeList, timer_num, h2, m2)
+ }
+ } else {
+ h1 = startH * 60 + startM
+ m1 = endH * 60 + endM
+
+ isContain = hasContain(timeList, timer_num, h1, m1)
+ }
+ if (isContain){
+ ToastUtil.show(BaseApplication.app, "时段设置不能重叠")
+ }
+
+ return isContain
+ }
+
+ @JvmStatic
+ fun getTimeList(timeList :MutableList,timer_time:ByteArray,timer_number:Byte):List{
+ var startH = 0
+ var startM = 0
+ var endH = 0
+ var endM = 0
+ for (j in timer_time.indices) {
+ if (j == 0) {
+ startH = timer_time.get(j).toInt()
+ L.i("jjia-------set------$startH")
+ } else if (j == 1) {
+ startM = timer_time.get(j).toInt()
+ L.i("jjia-------set------$startM")
+ } else if (j == 2) {
+ endH = timer_time.get(j).toInt()
+ L.i("jjia-------set------$endH")
+ } else if (j == 3) {
+ endM = timer_time.get(j).toInt()
+ L.i("jjia-------set------$endM")
+ }
+ }
+ if (startH > endH) {
+ timeList.add(TimeBean(timer_number, startH * 60 + startM, 24 * 60))
+ timeList.add(TimeBean(timer_number, 0, endH * 60 + endM))
+ } else {
+ timeList.add(TimeBean(timer_number, startH * 60 + startM, endH * 60 + endM))
+ }
+ return timeList
+ }
+ }
+
+
+
+
+}
\ No newline at end of file
diff --git a/iFish7/src/main/java/com/ifish/utils/DialogUtil.kt b/iFish7/src/main/java/com/ifish/utils/DialogUtil.kt
new file mode 100644
index 000000000..7f44382ce
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/utils/DialogUtil.kt
@@ -0,0 +1,46 @@
+package com.ifish.utils
+
+import android.app.Activity
+import com.ifish.baseclass.BaseActivity
+
+/**
+ * Created by achang on 2018/10/6.
+ */
+
+class DialogUtil1 {
+ companion object {
+ var mLoadingDialog: LoadingDialog? = null
+ var showDialog:Boolean=false
+ var hint:String?="正在加载中,请稍等片刻..."
+ fun showLoadingDialog(activity: Activity?, showDialog:Boolean, hint:String?="正在加载中,请稍等片刻..."): LoadingDialog {
+ this.showDialog= showDialog
+ if (activity!=null){
+ if (mLoadingDialog == null) {
+ mLoadingDialog = LoadingDialog(activity,hint)
+ if (!mLoadingDialog!!.isShowing && !activity.isFinishing) {
+ mLoadingDialog!!.show()
+ }
+ } else {
+ if (!mLoadingDialog!!.isShowing && !activity.isFinishing) {
+ mLoadingDialog!!.show()
+ }
+ }
+ }
+
+ return mLoadingDialog!!
+ }
+
+ fun setLoadingDialogDismiss(activity: Activity?) {
+ mLoadingDialog?.apply {
+ if (this.isShowing ) {
+ activity?.apply {
+ if (!this.isFinishing)
+ mLoadingDialog!!.dismiss()
+ mLoadingDialog = null
+ }
+ }
+ }
+ // LogUtil.logD("setLoadingDialogDismiss===========")
+ }
+ }
+}
diff --git a/iFish7/src/main/java/com/ifish/utils/GlideEngine.java b/iFish7/src/main/java/com/ifish/utils/GlideEngine.java
new file mode 100644
index 000000000..84c8fd931
--- /dev/null
+++ b/iFish7/src/main/java/com/ifish/utils/GlideEngine.java
@@ -0,0 +1,116 @@
+package com.ifish.utils;
+import android.content.Context;
+import android.widget.ImageView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.ifish.activity.R;
+import com.luck.picture.lib.engine.ImageEngine;
+import com.luck.picture.lib.utils.ActivityCompatHelper;
+
+/**
+ * @author:luck
+ * @date:2019-11-13 17:02
+ * @describe:Glide加载引擎
+ */
+public class GlideEngine implements ImageEngine {
+
+ /**
+ * 加载图片
+ *
+ * @param context 上下文
+ * @param url 资源url
+ * @param imageView 图片承载控件
+ */
+ @Override
+ public void loadImage(Context context, String url, ImageView imageView) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context)
+ .load(url)
+ .into(imageView);
+ }
+
+ @Override
+ public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context)
+ .load(url)
+ .override(maxWidth, maxHeight)
+ .into(imageView);
+ }
+
+ /**
+ * 加载相册目录封面
+ *
+ * @param context 上下文
+ * @param url 图片路径
+ * @param imageView 承载图片ImageView
+ */
+ @Override
+ public void loadAlbumCover(Context context, String url, ImageView imageView) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context)
+ .asBitmap()
+ .load(url)
+ .override(180, 180)
+ .sizeMultiplier(0.5f)
+ .transform(new CenterCrop(), new RoundedCorners(8))
+ .placeholder(R.drawable.umeng_socialize_share_pic)
+ .into(imageView);
+ }
+
+
+ /**
+ * 加载图片列表图片
+ *
+ * @param context 上下文
+ * @param url 图片路径
+ * @param imageView 承载图片ImageView
+ */
+ @Override
+ public void loadGridImage(Context context, String url, ImageView imageView) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context)
+ .load(url)
+ .override(200, 200)
+ .centerCrop()
+ .placeholder(R.drawable.umeng_socialize_share_pic)
+ .into(imageView);
+ }
+
+ @Override
+ public void pauseRequests(Context context) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context).pauseRequests();
+ }
+
+ @Override
+ public void resumeRequests(Context context) {
+ if (!ActivityCompatHelper.assertValidRequest(context)) {
+ return;
+ }
+ Glide.with(context).resumeRequests();
+ }
+
+ private GlideEngine() {
+ }
+
+ private static final class InstanceHolder {
+ static final GlideEngine instance = new GlideEngine();
+ }
+
+ public static GlideEngine createGlideEngine() {
+ return InstanceHolder.instance;
+ }
+}
diff --git a/iFish7/src/main/java/com/ifish/utils/HttpManager.java b/iFish7/src/main/java/com/ifish/utils/HttpManager.java
index ae352de85..2a92d5739 100644
--- a/iFish7/src/main/java/com/ifish/utils/HttpManager.java
+++ b/iFish7/src/main/java/com/ifish/utils/HttpManager.java
@@ -121,6 +121,11 @@ public class HttpManager {
public static String Company_PhoneNum = "18667812003";// 公司电话
public static String BuyCameraTaobao_URL = "http://h5.m.taobao.com/awp/core/detail.htm?id=535991514644";// 购买摄像头淘宝网址
+ public static final String AirKissConnectVideoTitle = "一键联网";
+ public static String AirKissConnectVideoUrl = "https://www.ifish7.com/download/s1.mp4"; //安卓版本的一键联网的视频
+ public static final String APConnectVideoTitle = "AP联网";
+ public static String APConnectVideoUrl = "https://www.ifish7.com/download/s2.mp4"; //安卓版本的 AP联网视频
+
private String user_URL = "user/";
private String users_URL = "users/";
public static String Room_URL = "room/";
@@ -360,6 +365,40 @@ public class HttpManager {
}
});
}
+ public HttpHandler unregister(final HttpListener> httpListener, String userId) {
+ String url = getFullUrl(users_URL + v3_URL + "deregister.do");
+ L.d(url);
+ RequestParams requestParams = new RequestParams();
+ requestParams.addBodyParameter("userId", userId);
+ String curTime = System.currentTimeMillis() / 1000 + "";
+ String nonce = getRandomNum() + "";
+ requestParams.addHeader(APPKEY, appKey);
+ requestParams.addHeader(NONCE, nonce);
+ requestParams.addHeader(CURTIME, curTime);
+ requestParams.addHeader(CHECKSUM, MD5Util.GetMD5(appSecret + nonce + curTime));
+ return http.send(HttpMethod.POST, url, requestParams, new RequestCallBack() {
+ @Override
+ public void onSuccess(ResponseInfo responseInfo) {
+ L.d(responseInfo.result.toString());
+ BaseBean