diff --git a/gradle.properties b/gradle.properties index c10423837..040ce8835 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,6 +25,6 @@ android.nonTransitiveRClass=true android.enableJetifier=true android.useAndroidX=true android.useDeprecatedNdk=true +versionCode=109 +versionName=4.12.09 -versionCode=104 -versionName=4.12.04 \ No newline at end of file diff --git a/iFish7/build.gradle b/iFish7/build.gradle index a87d7a1f7..ee9e6e7bc 100644 --- a/iFish7/build.gradle +++ b/iFish7/build.gradle @@ -25,7 +25,7 @@ android { config { keyAlias 'android.keystore' keyPassword 'ifish7' - storeFile file('../ifish7.keystore') + storeFile file('ifish7.keystore') storePassword 'ifish7' } } @@ -153,7 +153,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.4'//2.0.4 implementation 'com.tencent:mmkv:2.0.0' implementation("com.github.bumptech.glide:okhttp3-integration:4.11.0" ) -// implementation 'com.github.Jasonchenlijian:FastBle:2.4.0' + implementation 'com.github.Jasonchenlijian:FastBle:2.4.0' implementation 'io.github.lucksiege:pictureselector:v3.11.2' // 图片压缩 (按需引入) diff --git a/ifish7.keystore b/iFish7/ifish7.keystore similarity index 100% rename from ifish7.keystore rename to iFish7/ifish7.keystore diff --git a/iFish7/src/main/AndroidManifest.xml b/iFish7/src/main/AndroidManifest.xml index 7256fc80b..44abb2324 100644 --- a/iFish7/src/main/AndroidManifest.xml +++ b/iFish7/src/main/AndroidManifest.xml @@ -11,9 +11,6 @@ - - - @@ -37,14 +34,14 @@ - - - - - - - - + + + + + + + + + = Build.VERSION_CODES.S){ // jiablue -// perlist = new String[]{ -// android.Manifest.permission.BLUETOOTH_SCAN, -// android.Manifest.permission.BLUETOOTH_ADVERTISE, -// android.Manifest.permission.BLUETOOTH_CONNECT, -// android.Manifest.permission.ACCESS_FINE_LOCATION, -// android.Manifest.permission.ACCESS_COARSE_LOCATION, -// android.Manifest.permission.BLUETOOTH -// }; + perlist = new String[]{ + android.Manifest.permission.BLUETOOTH_SCAN, + android.Manifest.permission.BLUETOOTH_ADVERTISE, + android.Manifest.permission.BLUETOOTH_CONNECT, + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.ACCESS_COARSE_LOCATION, + android.Manifest.permission.BLUETOOTH + }; } initView();//初始化控件 } diff --git a/iFish7/src/main/java/com/ifish/activity/DeviceCameraListActivity.java b/iFish7/src/main/java/com/ifish/activity/DeviceCameraListActivity.java index 06392dddd..d364ac50b 100644 --- a/iFish7/src/main/java/com/ifish/activity/DeviceCameraListActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/DeviceCameraListActivity.java @@ -24,8 +24,8 @@ import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.RelativeLayout; import android.widget.TextView; -//jjia-push -//import com.clj.fastble.BleManager; +//jjia-xpush +import com.clj.fastble.BleManager; import com.ifish.adapter.GridViewCameraBaseAdapter; import com.ifish.adapter.GridViewDeviceBaseAdapter; import com.ifish.basebean.BaseBean; @@ -370,8 +370,8 @@ public class DeviceCameraListActivity extends BaseActivity { @Override public void success(BaseBean baseBean) { result = baseBean.result; - //jjia-push -// BleManager.getInstance().disconnectAllDevice(); + //jjia-xpush + BleManager.getInstance().disconnectAllDevice(); } @Override diff --git a/iFish7/src/main/java/com/ifish/activity/HotSpotConnentDeviceActivity.java b/iFish7/src/main/java/com/ifish/activity/HotSpotConnentDeviceActivity.java index 5caf1c700..6e5d28d91 100644 --- a/iFish7/src/main/java/com/ifish/activity/HotSpotConnentDeviceActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/HotSpotConnentDeviceActivity.java @@ -241,7 +241,7 @@ public class HotSpotConnentDeviceActivity extends BaseActivity { public void toDevice() { AppRoute.newToStart(HotSpotConnentDeviceActivity.this,deviceObj,true); - ToastUtil.show(HotSpotConnentDeviceActivity.this, "绑定设备成功"); +// ToastUtil.show(HotSpotConnentDeviceActivity.this, "绑定设备成功"); EventBean eventBean =new EventBean(EventBean.LINK_FINISH,0); EventBus.getDefault().post(eventBean); finish(); @@ -417,7 +417,7 @@ public class HotSpotConnentDeviceActivity extends BaseActivity { Commons.IS_CAMERA = false; sp.putBoolean(LoginSPKey.IS_CAMERA, Commons.IS_CAMERA); AppRoute.newToStart(HotSpotConnentDeviceActivity.this,deviceObj,true); - ToastUtil.show(HotSpotConnentDeviceActivity.this, "绑定设备成功"); +// ToastUtil.show(HotSpotConnentDeviceActivity.this, "绑定设备成功"); EventBean eventBean =new EventBean(EventBean.LINK_FINISH,0); EventBus.getDefault().post(eventBean); AnimationUtil.startAnimation(HotSpotConnentDeviceActivity.this); @@ -456,13 +456,13 @@ public class HotSpotConnentDeviceActivity extends BaseActivity { Commons.DevicePosition = Commons.DEVICE.size() - 1; } catch (Exception e) { } - ToastUtil.show(HotSpotConnentDeviceActivity.this, "设备序号" + Commons.DevicePosition + "---" + Commons.DEVICE.size()); +// ToastUtil.show(HotSpotConnentDeviceActivity.this, "设备序号" + Commons.DevicePosition + "---" + Commons.DEVICE.size()); Commons.IS_EventBus = true; Commons.HAVE_DEVICE = true;//改变判断是否绑定的变量 Commons.IS_CAMERA = false; sp.putBoolean(LoginSPKey.IS_CAMERA, Commons.IS_CAMERA); AppRoute.newToStart(HotSpotConnentDeviceActivity.this,deviceObj,true); - ToastUtil.show(HotSpotConnentDeviceActivity.this, "绑定设备成功"); +// ToastUtil.show(HotSpotConnentDeviceActivity.this, "绑定设备成功"); EventBean eventBean =new EventBean(EventBean.LINK_FINISH,0); EventBus.getDefault().post(eventBean); AnimationUtil.startAnimation(HotSpotConnentDeviceActivity.this); diff --git a/iFish7/src/main/java/com/ifish/activity/HotSpotConnentPetDeviceActivity.java b/iFish7/src/main/java/com/ifish/activity/HotSpotConnentPetDeviceActivity.java index ff84be814..7bcd26bf3 100644 --- a/iFish7/src/main/java/com/ifish/activity/HotSpotConnentPetDeviceActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/HotSpotConnentPetDeviceActivity.java @@ -583,7 +583,7 @@ public class HotSpotConnentPetDeviceActivity extends BaseActivity { Commons.DevicePosition = Commons.DEVICE.size() - 1; } catch (Exception e) { } - ToastUtil.show(HotSpotConnentPetDeviceActivity.this, "设备序号" + Commons.DevicePosition + "---" + Commons.DEVICE.size()); +// ToastUtil.show(HotSpotConnentPetDeviceActivity.this, "设备序号" + Commons.DevicePosition + "---" + Commons.DEVICE.size()); Commons.IS_EventBus = true; Commons.HAVE_DEVICE = true;//改变判断是否绑定的变量 Commons.IS_CAMERA = false; diff --git a/iFish7/src/main/java/com/ifish/activity/LoadingActivity.java b/iFish7/src/main/java/com/ifish/activity/LoadingActivity.java index 423522221..c3a62ef5f 100644 --- a/iFish7/src/main/java/com/ifish/activity/LoadingActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/LoadingActivity.java @@ -2,6 +2,7 @@ package com.ifish.activity; import android.app.AlertDialog; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.media.AudioManager; @@ -31,6 +32,7 @@ import androidx.annotation.NonNull; import com.alibaba.sdk.android.httpdns.HttpDns; import com.alibaba.sdk.android.httpdns.HttpDnsService; import com.bumptech.glide.Glide; +import com.ifish.activity.newbind.NewBindDeviceActivity; import com.ifish.basebean.AdInfos; import com.ifish.basebean.BaseBean; import com.ifish.basebean.Device; @@ -43,6 +45,7 @@ import com.ifish.geewe.DeviceCamera; 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.LoginSPKey; import com.ifish.utils.Commons.NetWork; @@ -53,11 +56,13 @@ import com.ifish.utils.HttpManager; import com.ifish.utils.L; import com.ifish.utils.SPUtil; import com.ifish.utils.ToastUtil; +import com.ifish.view.IosAlertDialog; import com.ifish.view.SuperTextView; import com.igexin.sdk.PushManager; import com.squareup.picasso.Picasso; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.WXAPIFactory; +import com.xiaomi.mipush.sdk.MiPushClient; import java.net.URL; import java.util.ArrayList; @@ -111,7 +116,7 @@ public class LoadingActivity extends BaseActivityNotAnim { private PermissionHelper permissionHelper; private static String firstShowPrivacy = "firstShowPrivacy"; - + String[] permission; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -122,16 +127,82 @@ public class LoadingActivity extends BaseActivityNotAnim { if (savedInstanceState != null) { setIntent(new Intent()); // 从堆栈恢复,不再重复解析之前的intent } + permission = AppUtil.getBluePermissionList(); + permissionHelper = new PermissionHelper(this, permission, 250); + // Boolean showPrivacy = SPUtil.getInstance(getApplicationContext()).getBoolean(firstShowPrivacy, false); Boolean aBoolean = ConfigUtil.getInstance(getApplicationContext()).getBoolean(LoginSPKey.IS_FirstOpen, false); if(!aBoolean && !showPrivacy){ startPrivacyTextDialog(); }else{ +// (); initapp(); } } + private void getPermission() { + permissionHelper.request(new PermissionHelper.PermissionCallback() { + @Override + public void onPermissionGranted() { + initapp(); + } + + @Override + public void onIndividualPermissionGranted(String[] grantedPermission) { + initapp(); +// AlertDialog.Builder dialog = new AlertDialog.Builder(LoadingActivity.this); +// dialog.setCancelable(false); +// dialog.setMessage("蓝牙联网,请先同意app获取蓝牙相关权限x"); +// 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() { + initapp(); + } + + @Override + public void onPermissionDeniedBySystem() { +// IosAlertDialog dialog = new IosAlertDialog(LoadingActivity.this).builder(); +// dialog.setCancelable(false); +// dialog.setTitle("权限申请理由"); +// dialog.setMessage("蓝牙联网,请到应用信息页面-权限管理-打开蓝牙权限"); +// dialog.setNegativeButton("取消", view -> { +// initapp(); +// }); +// dialog.setPositiveButton("去开启", view -> +// { +// AppUtil.toAuthority(LoadingActivity.this); +// }); +// dialog.show(); + initapp(); + } + }); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (permissionHelper != null) { + permissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + } + + private void analysisBaseUrlError(){ showProgressDialog(); @@ -308,11 +379,16 @@ public class LoadingActivity extends BaseActivityNotAnim { private void initapp() { - // jjia-push + // jjia-xpush // IPushService // IIntentService PushManager.getInstance().preInit(this); PushManager.getInstance().initialize(this); + MiPushClient.setAlias(this,"aaa","aaa" ); + + L.i("jjia------push init-as-"+MiPushClient.getAllAlias(this)); + L.i("jjia------push init-getRegId-"+MiPushClient.getRegId(this)); + L.i("jjia------push init-getRegId-"+PushManager.getInstance().getClientid(this)); if (BuildConfig.DEBUG){ PushManager.getInstance().setDebugLogger(this, s -> L.i("jjia--------"+s)); } @@ -899,9 +975,9 @@ public class LoadingActivity extends BaseActivityNotAnim { public void onClick(View v) { alertDialog.cancel(); SPUtil.getInstance(getApplicationContext()).putBoolean(firstShowPrivacy,true); -// getPermission(); // pushInit(); initapp(); +// getPermission(); } }); } diff --git a/iFish7/src/main/java/com/ifish/activity/MainSix_4F_ControlActivity.java b/iFish7/src/main/java/com/ifish/activity/MainSix_4F_ControlActivity.java index 8960779e9..8bd601085 100644 --- a/iFish7/src/main/java/com/ifish/activity/MainSix_4F_ControlActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/MainSix_4F_ControlActivity.java @@ -4,20 +4,26 @@ import static com.ifish.activity.MainTabActivity.map; import android.app.AlertDialog; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.text.TextUtils; +import android.view.Gravity; +import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import android.widget.Toast; import com.bumptech.glide.Glide; +import com.clj.fastble.data.BleScanState; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.ifish.basebean.BaseBean; @@ -43,7 +49,9 @@ import com.ifish.tcp.FishFeedType; import com.ifish.tcp.TcpReceiveThread; import com.ifish.tcp.TcpSendThread; import com.ifish.utils.AnimationUtil; +import com.ifish.utils.AppUtil; import com.ifish.utils.Commons; +import com.ifish.utils.DialogUtil; import com.ifish.utils.HttpListener; import com.ifish.utils.HttpManager; import com.ifish.utils.L; @@ -100,6 +108,9 @@ public class MainSix_4F_ControlActivity extends BaseGradeActivity implements Swi private Device deviceBean; + private boolean isBind = false; + private boolean isShowHint = true; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -117,9 +128,28 @@ public class MainSix_4F_ControlActivity extends BaseGradeActivity implements Swi } catch (Exception e) { e.printStackTrace(); } - + isBind = getIntent().getBooleanExtra(BaseGradeActivity.BINDDEVICE,false); + L.i("jjia------------"+isBind); + if (isBind){ + DialogUtil.Companion.showLoadingDialog(this,true,"设备正在联网中,请耐心等待"); + startDownTimer(); + } +// showHint(); } + private void showHint(){ + + isShowHint = false; + Toast toast = new Toast(this); + toast.setDuration(Toast.LENGTH_LONG); + + LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View view = inflater.inflate(R.layout.hint_toast, null); + toast.setView(view); + toast.setGravity(Gravity.CENTER,0,120); + toast.show(); + + } public void onEventMainThread(EventBean eventBean){ if (eventBean!=null && EventBean.CHANGE_DEVICE_NAME.equals(eventBean.name)){ setTitle(eventBean.value); @@ -146,7 +176,9 @@ public class MainSix_4F_ControlActivity extends BaseGradeActivity implements Swi protected void onDestroy() { isToast = false; EventBus.getDefault().unregister(this); + DialogUtil.Companion.setLoadingDialogDismiss(this); closeSoket(); + closeDownTimer(); stopAllTimer(); super.onDestroy(); } @@ -389,7 +421,7 @@ public class MainSix_4F_ControlActivity extends BaseGradeActivity implements Swi tv_wendu.setText(""); sw.setRefreshing(false); if (isToast) { - ToastUtil.showSpecial(MainSix_4F_ControlActivity.this, Commons.Text.Repost); +// ToastUtil.showSpecial(MainSix_4F_ControlActivity.this, Commons.Text.Repost); } } }; @@ -438,7 +470,7 @@ public class MainSix_4F_ControlActivity extends BaseGradeActivity implements Swi resetIVFlag(); isWaterDialog = false; dismissProgressDialog(); - ToastUtil.showSpecial(MainSix_4F_ControlActivity.this, Commons.Text.Repost); +// ToastUtil.showSpecial(MainSix_4F_ControlActivity.this, Commons.Text.Repost); } }; } @@ -579,9 +611,16 @@ public class MainSix_4F_ControlActivity extends BaseGradeActivity implements Swi //接受6控查询返回的指令 public void onEventMainThread(BackInfoModelSix_4F event) { + closeDownTimer(); L.i("jjia---------c------1"+event.toString()); hidegif(); dismissProgressDialog(); + if (isBind){ + DialogUtil.Companion.setLoadingDialogDismiss(this); + if (isShowHint){ + showHint(); + } + } dismissProgressDialogCancelble(); tv_offline.setVisibility(View.GONE); backInfoModelSix_4F = event; @@ -748,7 +787,7 @@ public class MainSix_4F_ControlActivity extends BaseGradeActivity implements Swi OffLineDevice(); } isWaterDialog = false; - dismissProgressDialog(); + dismissProgressDialog(); } private void OffLineDevice() {//设备离线的处理 @@ -1318,4 +1357,33 @@ public class MainSix_4F_ControlActivity extends BaseGradeActivity implements Swi }); dialog.show(); } + + + CountDownTimer countDownTimer; + int dowmCount = 0; + private void startDownTimer(){ + closeDownTimer(); + countDownTimer = new CountDownTimer(40000,1000) { + @Override + public void onTick(long l) { + DialogUtil.Companion.setProgress(dowmCount); + dowmCount++; + } + + @Override + public void onFinish() { + DialogUtil.Companion.setError(); + } + }; + countDownTimer.start(); + } + + private void closeDownTimer(){ + if (countDownTimer!=null){ + countDownTimer.cancel(); + countDownTimer = null; + } + } + + } diff --git a/iFish7/src/main/java/com/ifish/activity/MainTabActivity.java b/iFish7/src/main/java/com/ifish/activity/MainTabActivity.java index 5341c4a0e..79888390c 100644 --- a/iFish7/src/main/java/com/ifish/activity/MainTabActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/MainTabActivity.java @@ -721,19 +721,19 @@ public class MainTabActivity extends BaseFragmentActivity { } public void onEventMainThread(EventBean event) { - if (event!=null){ - switch (event.index) { - case -1: - startDownTimer(); - break; - case 1: - closeDownTimer(); - break; - default: - - break; - } - } +// if (event!=null){ +// switch (event.index) { +// case -1: +// startDownTimer(); +// break; +// case 1: +// closeDownTimer(); +// break; +// default: +// +// break; +// } +// } } CountDownTimer countDownTimer; diff --git a/iFish7/src/main/java/com/ifish/activity/MineActivity.java b/iFish7/src/main/java/com/ifish/activity/MineActivity.java index 48f6e1af3..f94715d3f 100644 --- a/iFish7/src/main/java/com/ifish/activity/MineActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/MineActivity.java @@ -7,11 +7,7 @@ */ package com.ifish.activity; -import android.app.AlertDialog; import android.app.Dialog; -import android.app.Fragment; -import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; @@ -25,7 +21,6 @@ import android.provider.MediaStore; import android.provider.Settings; import android.text.TextUtils; import android.view.View; -import android.view.View.OnClickListener; import android.view.Window; import android.widget.EditText; import android.widget.ImageView; @@ -42,7 +37,6 @@ import com.ifish.basebean.LoadHeadImage; import com.ifish.basebean.User; import com.ifish.baseclass.BaseActivity; import com.ifish.baseclass.UriForFile; -import com.ifish.fragment.DeviceFragment; import com.ifish.permission.PermissionHelper; import com.ifish.utils.AnimationUtil; import com.ifish.utils.AppUtil; @@ -631,6 +625,17 @@ public class MineActivity extends BaseActivity { @Override public void onIndividualPermissionGranted(String[] grantedPermission) { +//<<<<<<< HEAD +// AlertDialog.Builder dialog = new AlertDialog.Builder(MineActivity.this); +// dialog.setCancelable(false); +// dialog.setMessage("设置头像,请先同意app获取存储和相机权限"); +// dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { +// @Override +// public void onClick( +// DialogInterface dialog, +// int which) { +//======= +//>>>>>>> feature-online } @@ -693,7 +698,6 @@ public class MineActivity extends BaseActivity { IosAlertDialog openDialog; private void showPermissionHint(){ - openDialog = new IosAlertDialog(MineActivity.this).builder(); openDialog.setCancelable(true); openDialog.setTitle("申请权限目的说明"); @@ -701,10 +705,15 @@ public class MineActivity extends BaseActivity { openDialog.setPositiveButtonx("继续", new View.OnClickListener() { @Override public void onClick(View view) { - getPermission(); + if (permissionHelper.checkSelfPermission(permission)) { + gallery(); + }else{ + getPermission(); + } } }); + openDialog.setNegativeButton("取消", new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/iFish7/src/main/java/com/ifish/activity/MySettingActivity.java b/iFish7/src/main/java/com/ifish/activity/MySettingActivity.java index 04574b1f0..657ed27e6 100644 --- a/iFish7/src/main/java/com/ifish/activity/MySettingActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/MySettingActivity.java @@ -34,12 +34,14 @@ 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.HttpListener; import com.ifish.utils.HttpManager; import com.ifish.utils.L; import com.ifish.utils.SPUtil; import com.ifish.utils.ToastUtil; +import com.igexin.sdk.PushManager; import com.lidroid.xutils.HttpUtils; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.ResponseInfo; @@ -127,6 +129,8 @@ public class MySettingActivity extends BaseActivity { findViewById(R.id.rl_devicereset).setOnClickListener(this); findViewById(R.id.rl_bindphone).setOnClickListener(this); findViewById(R.id.tv_exit).setOnClickListener(view -> exitAccount()); + TextView textView = findViewById(R.id.cid); + textView.setText(PushManager.getInstance().getClientid(this)); } private void exitAccount(){ @@ -253,7 +257,12 @@ public class MySettingActivity extends BaseActivity { private void checkVersion() { versionCode = versionCode.toUpperCase(); - if (versionCode.equals(HttpManager.getVersionName(MySettingActivity.this))) { + + int code = AppUtil.getVersionValue(versionCode); + int appCode = AppUtil.getVersionValue(HttpManager.getVersionName(MySettingActivity.this)); + L.i("jia---------servercode--"+code); + L.i("jia---------appCode--"+appCode); + if (appCode>= code) { ToastUtil.show(MySettingActivity.this, "您使用的是最新版本"); } else { updateDialog(); diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/AirKissUtil.java b/iFish7/src/main/java/com/ifish/activity/newbind/AirKissUtil.java index ad45caa57..d71753f1c 100644 --- a/iFish7/src/main/java/com/ifish/activity/newbind/AirKissUtil.java +++ b/iFish7/src/main/java/com/ifish/activity/newbind/AirKissUtil.java @@ -532,7 +532,7 @@ public class AirKissUtil { Commons.HAVE_DEVICE = true;//改变判断是否绑定的变量 Commons.IS_CAMERA = false; sp.putBoolean(Commons.LoginSPKey.IS_CAMERA, Commons.IS_CAMERA); - ToastUtil.show(curActivity, "绑定设备成功"); +// ToastUtil.show(curActivity, "绑定设备成功"); AppRoute.newToStart(curActivity,deviceObj,true); curActivity.finish(); L.i("===================绑定设备成功=" + device_mac); @@ -599,7 +599,7 @@ public class AirKissUtil { Commons.HAVE_DEVICE = true;//改变判断是否绑定的变量 Commons.IS_CAMERA = false; sp.putBoolean(Commons.LoginSPKey.IS_CAMERA, Commons.IS_CAMERA); - ToastUtil.show(curActivity, "绑定设备成功"); +// ToastUtil.show(curActivity, "绑定设备成功"); AppRoute.newToStart(curActivity,deviceObj,true); curActivity.finish(); diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/BottomChoiceDialog.java b/iFish7/src/main/java/com/ifish/activity/newbind/BottomChoiceDialog.java index dae9ed4db..5ec78398d 100644 --- a/iFish7/src/main/java/com/ifish/activity/newbind/BottomChoiceDialog.java +++ b/iFish7/src/main/java/com/ifish/activity/newbind/BottomChoiceDialog.java @@ -148,8 +148,8 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi lineAirKiss.setVisibility(View.VISIBLE); lineAP.setVisibility(View.VISIBLE); lineSmartConfig.setVisibility(View.GONE); - // jiablue 暂时隐藏 - lineBle.setVisibility(View.GONE); + // jiaxblue 暂时隐藏 +// lineBle.setVisibility(View.GONE); switch (curConnectType) { case SmartConfig: // 处理SmartConfig逻辑 diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java b/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java index c07fbdfee..1087e2fa6 100644 --- a/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java @@ -28,16 +28,17 @@ import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.RequiresPermission; 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; +//jjia-xpush +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; @@ -58,6 +59,7 @@ 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.R; import com.ifish.activity.WebViewActivity; import com.ifish.basebean.BaseBean; @@ -65,6 +67,7 @@ import com.ifish.basebean.ConnectMessageEvent; import com.ifish.basebean.Device; import com.ifish.basebean.EventBean; import com.ifish.baseclass.BaseGradeActivity; +import com.ifish.permission.PermissionHelper; import com.ifish.tcp.BackFunctionCode7_11; import com.ifish.tcp.ModelCodec; import com.ifish.tcp.OrderDeviceConnectModel; @@ -73,6 +76,7 @@ import com.ifish.tcp.ResetDeviceModel; import com.ifish.utils.ActivityManager; import com.ifish.utils.AnimationUtil; import com.ifish.utils.AppRoute; +import com.ifish.utils.AppUtil; import com.ifish.utils.BlueToothUtil; import com.ifish.utils.ByteUtil; import com.ifish.utils.ClickUtil; @@ -83,6 +87,7 @@ import com.ifish.utils.L; import com.ifish.utils.SPUtil; import com.ifish.utils.ToastUtil; import com.ifish.utils.WifiAdmin; +import com.ifish.view.IosAlertDialog; import com.lidroid.xutils.util.LogUtils; import java.io.BufferedReader; @@ -130,12 +135,15 @@ public class NewBindDeviceActivity extends AppCompatActivity { private Dialog waterTempDialog; String type = null; private Activity activity; + private PermissionHelper permissionHelper; + String[] permission; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_bind_device_choice); activity = this; - + permission = AppUtil.getBluePermissionList(); + permissionHelper = new PermissionHelper(this, permission, 250); ActivityManager.getInstance().addActivity(this); sp=SPUtil.getInstance(this); @@ -151,8 +159,8 @@ public class NewBindDeviceActivity extends AppCompatActivity { devicetype = getIntent().getStringExtra("devicetype"); L.i("jjia----------------devicetype="+devicetype); airKissUtil.init(this,devicetype); - //jjia-push -// BleManager.getInstance().disconnectAllDevice(); + //jjia-xpush + BleManager.getInstance().disconnectAllDevice(); if ("bluetooth".equals(type)){ curConnectType = BlueTooth; }else { @@ -163,8 +171,8 @@ public class NewBindDeviceActivity extends AppCompatActivity { switchUIConnectType(curConnectType); if ("bluetooth".equals(type)){ // 主动去联网 - //jjia-push -// currentDevice = getIntent().getParcelableExtra("device"); + //jjia-xpush + currentDevice = getIntent().getParcelableExtra("device"); } EventBus.getDefault().register(this); @@ -319,6 +327,10 @@ public class NewBindDeviceActivity extends AppCompatActivity { public void onClick(View v) { Intent i = new Intent(); i.setClass(NewBindDeviceActivity.this, WebViewActivity.class); + if (curConnectType ==ConnectType.BlueTooth){ + i.putExtra(WebViewActivity.URL, HttpManager.BlueConnectVideoUrl); + i.putExtra(WebViewActivity.WEBVIEWTITLE, HttpManager.BlueConnectVideoTitle); + }else if (curConnectType == ConnectType.AirKiss){ i.putExtra(WebViewActivity.URL, HttpManager.AirKissConnectVideoUrl); i.putExtra(WebViewActivity.WEBVIEWTITLE, HttpManager.AirKissConnectVideoTitle); @@ -348,15 +360,15 @@ public class NewBindDeviceActivity extends AppCompatActivity { */ private void changeView(boolean blue){ - if (blue){ - tvTips2.setVisibility(View.GONE); - tvTips3.setVisibility(View.GONE); - - - }else { - tvTips2.setVisibility(View.VISIBLE); - tvTips3.setVisibility(View.VISIBLE); - } +// 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(); @@ -369,7 +381,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { tvConnectVideo.setVisibility(View.INVISIBLE); tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)"); tvTips2.setText("2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁以后,再点确定按钮。"); - tvTips3.setText("3、如多次尝试一键联网都不成功,可切换其他联网方式,每次重新连接时插座需断一次电然后重新复位连接。"); + tvTips3.setText("3、如多次尝试快捷联网都不成功,可切换其他联网方式,每次重新连接时插座需断一次电,然后重新复位连接。"); changeView(false); break; case BlueTooth: @@ -377,10 +389,10 @@ public class NewBindDeviceActivity extends AppCompatActivity { // 处理SmartConfig逻辑 tvConnectType.setText("蓝牙联网"); tvClickButton.setText("确定"); - tvConnectVideo.setVisibility(View.INVISIBLE); - tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)"); - tvTips2.setText("2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁以后,再点确定按钮。"); - tvTips3.setText("3、如多次尝试一键联网都不成功,可切换其他联网方式,每次重新连接时插座需断一次电然后重新复位连接。"); +// tvConnectVideo.setVisibility(View.INVISIBLE); + tvTips.setText("1、插座不支持5G的WiFi网络。"); + tvTips2.setText("2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁,再点确定按钮。"); + tvTips3.setText("3、如多次尝试蓝牙联网都不成功,可切换成AP联网方式,每次重新连接时插座需断一次电,然后重新复位连接。"); changeView(true); break; case APConnect: @@ -397,7 +409,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { tvClickButton.setText("确定"); tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)"); tvTips2.setText("2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁以后,再点确定按钮。"); - tvTips3.setText("3、如多次尝试一键联网都不成功,可切换其他联网方式,每次重新连接时插座需断一次电然后重新复位连接。"); + tvTips3.setText("3、如多次尝试一键联网都不成功,可切换其他联网方式,每次重新连接时插座需断一次电,然后重新复位连接。"); // 处理AirKiss逻辑 changeView(false); break; @@ -470,42 +482,13 @@ public class NewBindDeviceActivity extends AppCompatActivity { break; case BlueTooth: + if (permissionHelper.checkSelfPermission(permission)) { + blueClick(); + } else { + showPermissionHint(); + } - //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: @@ -515,49 +498,167 @@ public class NewBindDeviceActivity extends AppCompatActivity { case AirKiss: // 处理AirKiss逻辑 L.i("jjia----------------bssid="+bssid); - ToastUtil.show(NewBindDeviceActivity.this, "开始AirKiss联网..."); +// 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 void showPermissionHint(){ + IosAlertDialog dialog = new IosAlertDialog(this).builder(); + dialog.setCancelable(false); + dialog.setTitle("权限申请理由"); + dialog.setMessage("蓝牙联网,需要app获取手机的蓝牙扫描权限才能进行蓝牙扫描,是否允许申请蓝牙扫描相关权限?"); + dialog.setNegativeButton("拒绝", view -> { + + }); + dialog.setPositiveButton("申请", view -> + { + getPermission(); + }); + dialog.show(); + } + + private void getPermission() { + permissionHelper.request(new PermissionHelper.PermissionCallback() { + @Override + public void onPermissionGranted() { + blueClick(); + } + + @Override + public void onIndividualPermissionGranted(String[] grantedPermission) { + AlertDialog.Builder dialog = new AlertDialog.Builder(NewBindDeviceActivity.this); + 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(NewBindDeviceActivity.this); + 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(NewBindDeviceActivity.this); + dialog.setCancelable(false); + dialog.setTitle("温馨提示"); + dialog.setMessage("蓝牙联网,请到应用信息页面-权限管理-打开蓝牙权限"); + dialog.setPositiveButton("去开启", (dialog1, which) -> { + AppUtil.toAuthority(NewBindDeviceActivity.this); + }); + dialog.setNegativeButton("取消", (dialog12, which) -> { + }); + dialog.show(); + } + }); + } + + + private void blueClick(){ + //jjia-xpush + 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(); + } + } + } +//jjia-xpush + 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; + //jjia-xpush + BleDevice currentDevice; /** * 1.跳转设置页面连接ifish-xxx的wifi,连接成功后返回 */ @@ -636,142 +737,153 @@ public class NewBindDeviceActivity extends AppCompatActivity { } } } - //jjia-push + //jjia-xpush 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); -// } -// } -// }); -// } + 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()); -// } -// }); -// } + //jjia-xpush + 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 发送ok"); + } + + @Override + public void onWriteFailure(BleException exception) { + L.i("jjia-------------发送-失败"+exception.toString()); + } + }); + } + //jjia-xpush + private void toReset(){ + ResetDeviceModel model = OrderModel.resetDevice();//设置正式环境域名 + byte[] data = ModelCodec.enCode(model,Commons.IoBuffer); +// 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,"连接断开了"); -// } -// }); -// } + // 全局gatt + private BluetoothGatt mGatt; + //jjia-xpush + private void connectBle(){ + BleManager.getInstance().connect(currentDevice, new BleGattCallback() { + @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT) + @Override + public void onStartConnect() { + + if (mGatt!=null){ + mGatt.disconnect(); + mGatt.close(); + mGatt = null; + } + 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("蓝牙连接成功"); + + mGatt = gatt; + 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; @@ -791,8 +903,8 @@ public class NewBindDeviceActivity extends AppCompatActivity { @Override public int compareTo(Boolean available) { if (available) { - //jjia-push -// toReset(); + //jjia-xpush + toReset(); isContinue = false; connectDevice.cancel(); L.i("jjia-----------调用绑定接口---"); @@ -996,7 +1108,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { } - ToastUtil.show(NewBindDeviceActivity.this, "设备序号" + Commons.DevicePosition + "---" + Commons.DEVICE.size()); +// ToastUtil.show(NewBindDeviceActivity.this, "设备序号" + Commons.DevicePosition + "---" + Commons.DEVICE.size()); if (deviceObj!=null){ @@ -1036,7 +1148,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { private void toIntent(Device device){ dismissDialog(); - ToastUtil.show(NewBindDeviceActivity.this, "绑定设备成功"); +// ToastUtil.show(NewBindDeviceActivity.this, "绑定设备成功"); AppRoute.newToStart(NewBindDeviceActivity.this,device,true); EventBus.getDefault().post(new ConnectMessageEvent(1, "test")); finish(); @@ -1088,7 +1200,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { Commons.HAVE_DEVICE = true;//改变判断是否绑定的变量 Commons.IS_CAMERA = false; sp.putBoolean(Commons.LoginSPKey.IS_CAMERA, Commons.IS_CAMERA); - ToastUtil.show(NewBindDeviceActivity.this, "绑定设备成功"); +// ToastUtil.show(NewBindDeviceActivity.this, "绑定设备成功"); AppRoute.newToStart(NewBindDeviceActivity.this,deviceObj,true); finish(); L.i("===================绑定设备成功=" + device_mac); @@ -1145,23 +1257,23 @@ public class NewBindDeviceActivity extends AppCompatActivity { // myProgressDialogCancelble = null; // } // } - //jjia-push -// List deviceList; + //jjia-xpush + List 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--------没有连接的蓝牙---"); -// } + //jjia-xpush + 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 @@ -1171,6 +1283,10 @@ public class NewBindDeviceActivity extends AppCompatActivity { L.i(requestCode+"jjia--------result-1--"+requestCode); if (101== requestCode && 0==resultCode){ checkNet(); + }else if(250==requestCode){ + if (permissionHelper.checkSelfPermission(permission)) { + blueClick(); + } } } private void showDialog(String msg){ diff --git a/iFish7/src/main/java/com/ifish/basebean/EventBean.java b/iFish7/src/main/java/com/ifish/basebean/EventBean.java index d3c027d8d..c3e221bc6 100644 --- a/iFish7/src/main/java/com/ifish/basebean/EventBean.java +++ b/iFish7/src/main/java/com/ifish/basebean/EventBean.java @@ -10,7 +10,7 @@ public class EventBean { public String name; public String value; public int index = 0; - // jiablue + // jiaxblue // public static String BLUETOOTH_START_SCAN = "start_scan"; public static String BACK_STAGE = "back_stage"; public static String TAB_INDEX = "tab_index"; diff --git a/iFish7/src/main/java/com/ifish/baseclass/BaseApplication.java b/iFish7/src/main/java/com/ifish/baseclass/BaseApplication.java index 2e400944b..d2b0246a7 100644 --- a/iFish7/src/main/java/com/ifish/baseclass/BaseApplication.java +++ b/iFish7/src/main/java/com/ifish/baseclass/BaseApplication.java @@ -19,17 +19,16 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.multidex.MultiDexApplication; -//import com.clj.fastble.BleManager; -//import com.clj.fastble.scan.BleScanRuleConfig; +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.ToastUtil; import com.ifish.utils.TrustAllCerts; -//import com.igexin.sdk.PushManager; -import com.igexin.sdk.PushManager; import com.p2p.core.P2PSpecial.P2PSpecial; import com.squareup.picasso.Picasso; @@ -80,21 +79,19 @@ public class BaseApplication extends MultiDexApplication { P2PSpecial.getInstance().init(app, APPID, APPToken, APPVersion); initLog(); initPicasso(); - //jjia-push -// BleManager.getInstance().init(this); + //jjia-xpush + 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); - - + //jjia-xpush + 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) { @@ -151,8 +148,6 @@ public class BaseApplication extends MultiDexApplication { } }); - - } /** @@ -163,7 +158,6 @@ public class BaseApplication extends MultiDexApplication { @Override public void onActivityCreated(Activity activity, Bundle bundle) { Log.i("ifish7", "LHD" + "---" + activity.getLocalClassName()); - } @Override diff --git a/iFish7/src/main/java/com/ifish/fragment/DeviceFragment.java b/iFish7/src/main/java/com/ifish/fragment/DeviceFragment.java index 84d80d4d4..afd823d1e 100644 --- a/iFish7/src/main/java/com/ifish/fragment/DeviceFragment.java +++ b/iFish7/src/main/java/com/ifish/fragment/DeviceFragment.java @@ -9,6 +9,7 @@ package com.ifish.fragment; import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; +import android.Manifest; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; @@ -35,6 +36,7 @@ import android.provider.Settings; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -54,11 +56,11 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; 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; +//jjia-xpush +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.BuildConfig; import com.ifish.activity.DeviceInstructionActivity; @@ -196,7 +198,8 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi public static Activity cam_ctx; private PermissionHelper permissionHelper; - String[] permission; +// String[] permission; + String[] permission_blue; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -218,9 +221,11 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi adInfos(); initInformation(); - permission = new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}; - permissionHelper = new PermissionHelper(DeviceFragment.this, permission, 250); -// initBooth(); +// permission = new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}; + permission_blue = AppUtil.getBluePermissionList(); + permissionHelper = new PermissionHelper(DeviceFragment.this, permission_blue, 250); + + initBooth(); boolean notificationsEnabled = PushManager.getInstance().areNotificationsEnabled(requireActivity()); if (!notificationsEnabled){ toOpenNotifications(); @@ -274,9 +279,6 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi @Override public void onPermissionGranted() { - - - Intent intent = new Intent(); intent.setClass(getActivity(), BindTwoDeviceActivity.class); startActivity(intent); @@ -331,7 +333,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi AlertDialog.Builder dialog = new AlertDialog.Builder(getContext()); dialog.setCancelable(false); dialog.setTitle("温馨提示"); - dialog.setMessage("请到应用信息页面-权限管理-打开位置权限,不然是发现不了附近的wifi的,将无法进行配网连接您的智能设备"); + dialog.setMessage("请到应用信息页面-权限管理-打开位置权限,不然是发现不了附近的wifi或智能插座,将无法进行配网连接您的智能设备"); dialog.setPositiveButton("去开启", (dialog1, which) -> { AppUtil.toAuthority(requireActivity()); }); @@ -669,20 +671,15 @@ 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(); spversionCode = sp.getString("versionCode",""); - int versionCodeValue = getVersionValue(versionCode); -// int spversionCodeValue = getVersionValue(spversionCode); - int appCodeValue = getVersionValue(HttpManager.getVersionName(requireActivity())); + int versionCodeValue = AppUtil.getVersionValue(versionCode); + int appCodeValue = AppUtil.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); @@ -1135,8 +1132,6 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi @Override public void onResume() { super.onResume(); -//// deviceAdapter.notifyDataSetChanged(); -//// cameraAdapter.notifyDataSetChanged(); showDevice = PetDeviceGetDistinguish.getShowDevice(getContext()); showCamera = PetDeviceGetDistinguish.getFishCameras(Commons.CAMERA); deviceAdapter = new DeviceFragmentAdapter(getActivity(), showDevice); @@ -1145,10 +1140,70 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi lv_camera.setAdapter(cameraAdapter); setUserInfo(); - // jiablue -// startDownTimer(); + // jiaxblue + startDownTimer(); } + @Override + public void onStart() { + super.onStart(); + Activity activityName = ActivityManager.getInstance().lastActivity(); + if (activityName!=null && activityName.toString().contains("MainTabActivity")){ + + } + + } + @Override + public void onPause() { + super.onPause(); + oonPause(); + L.i("jjia-x-----xxx-----2"); + } + + + @Override + public void onStop() { + super.onStop(); + Activity activityName = ActivityManager.getInstance().lastActivity(); + if (activityName!=null && activityName.toString().contains("MainTabActivity")){ + + } + + } + + // jiaxblue + public void onEventMainThread(EventBean eventBean){ + if (eventBean!= null){ +// if (EventBean.BLUETOOTH_START_SCAN.equals(eventBean.name)){ +// L.i("jjia-x-----start-----"); +// if (!isShowEd){ +// initBooth(); +// } +// }else if (EventBean.BLUETOOTH_STOP_SCAN.equals(eventBean.name)){ +// L.i("jjia-x-----stop-----"); +// if (!isShowIng){ +// currentDevice = null; +// } +// if (AppUtil.checkSelfPermission(getContext(),permission_blue)) { +// BleManager.getInstance().cancelScan(); +// } +// +// }else + if (EventBean.TAB_INDEX.equals(eventBean.name)){ + currentIndex = eventBean.index; + L.i("jjia-x----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 setUserInfo() { try { @@ -1192,7 +1247,6 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi lv_camera.setAdapter(cameraAdapter); return; } -// 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())) { @@ -1205,88 +1259,6 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi sp.putBoolean(LoginSPKey.IS_CAMERA, Commons.IS_CAMERA); 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()); } }); lv_camera.setOnItemClickListener(new AdapterView.OnItemClickListener() { @@ -1600,11 +1572,9 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi AnimationUtil.startAnimation(getActivity()); break; case R.id.rl_adddevice: -// jiablue +// jiaxblue // EventBean eventBean = new EventBean(EventBean.BLUETOOTH_STOP_SCAN); // EventBus.getDefault().post(eventBean); - - addDevice(); @@ -1929,42 +1899,49 @@ 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; + //jjia-xpush + private void initBooth(){ + if (AppUtil.checkSelfPermission(getContext(),permission_blue)) { + boolean enable = BleManager.getInstance().isBlueEnable(); + if (enable) { + L.i("jjjia-----------蓝牙可用-开始扫描--"); + BleManager.getInstance().scan(new BleScanCallback() { + @Override + public void onScanFinished(List scanResultList) { + if (currentDevice!=null){ // 扫描结束,有设备 + L.i("jjjia-----------scan- end--"); + showDevice(); + } + } + + @Override + public void onScanStarted(boolean success) { + L.i("jjjia-----------scan- start--"); + } + + @SuppressLint("MissingPermission") + @Override + public void onScanning(BleDevice bleDevice) { + L.i("jjjia-----------scan- ing--"); + 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()); + } + } + }); + }else { + L.i("jjjia-----------蓝牙不可用---"); + } + }else { + L.i("jjjia-----------没有扫描权限---"); + } + } + //jjia-xpush + BleDevice currentDevice; public void onEventMainThread(BluetoothDevice event) { } @@ -1973,40 +1950,14 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi 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.setMessage("添加设备,需要先获取位置信息,才能获取附近wifi信息或智能设备,进行配网连接您的设备,是否允许申请位置权限和蓝牙权限?"); openDialog.setPositiveButton("继续", new View.OnClickListener() { @Override public void onClick(View view) { @@ -2019,112 +1970,126 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi } }); - openDialog.show(); } + IosAlertDialog alertDialog; 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(); + alertDialog = new IosAlertDialog(requireContext(), Gravity.BOTTOM).builder(); + alertDialog.showBottom(true); + alertDialog.setTextColor(R.color.danghao_color); + alertDialog.setCancelable(false); + alertDialog.setTitle("发现设备"); + alertDialog.setMessage("鱼缸智能插座1个"); + alertDialog.setNegativeButton("忽略", new OnClickListener() { + @Override + public void onClick(View view) { + isShowIng = false; + alertDialog.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()); + alertDialog.setPositiveButton("添加", new OnClickListener() { + @Override + public void onClick(View view) { + alertDialog.dismiss(); + isShowIng = false; + closeDownTimer(); + Intent intent = new Intent(); + intent.setClass(requireActivity(), NewBindDeviceActivity.class); + intent.putExtra("title", "连接水族箱"); + intent.putExtra("type", "bluetooth"); + //jjia-xpush + intent.putExtra("device", currentDevice); + startActivity(intent); + AnimationUtil.finishAnimation(requireActivity()); + } }); - dialog.show(); + alertDialog.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--上一次的扫描还在继续中-"); -// } -// } + if (AppUtil.checkSelfPermission(getContext(),permission_blue)) { + if (!isShowIng && currentIndex == 0){ + dowmCount = 1; + countDownTimer = new CountDownTimer(2000000000,1000) { + @Override + public void onTick(long l) { + L.i("jjia-----dowmCount--"+dowmCount); + //jjia-xpush + 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++; - } + dowmCount++; + } - @Override - public void onFinish() { - L.i("jjia---倒计时完成----------"); - } - }; - countDownTimer.start(); - }else { - L.i("jjia----timer--已扫描到设备,暂不执行倒计时-"); + @Override + public void onFinish() { + L.i("jjia---倒计时完成----------"); + } + }; + countDownTimer.start(); + }else { + L.i("jjia----timer--已扫描到设备,暂不执行倒计时-"); + } } - } private void closeDownTimer(){ if (countDownTimer!=null){ countDownTimer.cancel(); countDownTimer = null; + L.i("jjia-----dowmCount--xxx"); } } - //jjia-push -// private BleScanState getScanState(){ -// return BleManager.getInstance().getScanSate(); -// } - - @Override - public void onPause() { - super.onPause(); - oonPause(); + //jjia-xpush + private BleScanState getScanState(){ + return BleManager.getInstance().getScanSate(); } private void oonPause(){ + + if (alertDialog!=null){ + L.i("jjia---扫描暂停----------"); + alertDialog.dismiss(); + alertDialog = null; + } closeDownTimer(); - //jjia-push -// BleScanState scanState = getScanState(); -// if (BleScanState.STATE_SCANNING.equals(scanState)) { -// BleManager.getInstance().cancelScan(); -// L.i("jjia---扫描暂停----------"); -// } else { -// -// } -// L.i("jjia---扫描暂停-"+scanState); + if (AppUtil.checkSelfPermission(getContext(),permission_blue)) { + //jjia-xpush + BleScanState scanState = getScanState(); + if (BleScanState.STATE_SCANNING.equals(scanState)) { + currentDevice = null; + BleManager.getInstance().cancelScan(); + L.i("jjia---扫描暂停----------"); + } + L.i("jjia---扫描暂停-"+scanState); + } + } + + } diff --git a/iFish7/src/main/java/com/ifish/fragment/MineFragment.java b/iFish7/src/main/java/com/ifish/fragment/MineFragment.java index c2b96684d..213093ca9 100644 --- a/iFish7/src/main/java/com/ifish/fragment/MineFragment.java +++ b/iFish7/src/main/java/com/ifish/fragment/MineFragment.java @@ -34,8 +34,8 @@ import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; -//jjia-push -//import com.clj.fastble.BleManager; +//jjia-xpush +import com.clj.fastble.BleManager; import com.ifish.activity.AboutActivity; import com.ifish.activity.BindTwoDeviceActivity; import com.ifish.activity.CaptureActivity; diff --git a/iFish7/src/main/java/com/ifish/tcp/TcpReceiveThread.java b/iFish7/src/main/java/com/ifish/tcp/TcpReceiveThread.java index 394f61fee..661bfeb29 100644 --- a/iFish7/src/main/java/com/ifish/tcp/TcpReceiveThread.java +++ b/iFish7/src/main/java/com/ifish/tcp/TcpReceiveThread.java @@ -103,6 +103,7 @@ public class TcpReceiveThread implements Runnable { } } else if(obj instanceof BackInfoModelSix_4F_FeedFish){ //一键喂鱼查询 BackInfoModelSix_4F_FeedFish model = (BackInfoModelSix_4F_FeedFish) obj; + L.i("jjia---------------------BackInfoModelSix_4F_FeedFish-----"); if (Commons.IS_EventBus) {//判断tcp连接返回的mac地址是否与自己本地相同 不同则不做处理 try { if (ByteUtil.bytesToHexString(model.getSrc()).equals(Commons.DEVICE.get(MainTabActivity.sp.getInt(LoginSPKey.Position, 0)).getMacAddress())) { diff --git a/iFish7/src/main/java/com/ifish/utils/AppUtil.java b/iFish7/src/main/java/com/ifish/utils/AppUtil.java index 89e2178f7..9bb8379e4 100644 --- a/iFish7/src/main/java/com/ifish/utils/AppUtil.java +++ b/iFish7/src/main/java/com/ifish/utils/AppUtil.java @@ -6,6 +6,7 @@ import android.bluetooth.BluetoothManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.text.TextUtils; @@ -14,6 +15,7 @@ import android.widget.ImageView; import androidx.activity.ComponentActivity; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; import com.ifish.activity.R; import com.squareup.picasso.Picasso; @@ -258,7 +260,14 @@ public class AppUtil { return false; } } - + public static boolean checkSelfPermission(Context context ,String[] permissions) { + for (String permission : permissions) { + if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { + return false; + } + } + return true; + } public static String [] getImagePermissionList(){ List perList = new ArrayList<>(); @@ -282,6 +291,26 @@ public class AppUtil { return permissions; } + + public static String [] getBluePermissionList(){ + List perList = new ArrayList<>(); + perList.add(android.Manifest.permission.BLUETOOTH); + perList.add(android.Manifest.permission.ACCESS_FINE_LOCATION); + perList.add(android.Manifest.permission.ACCESS_COARSE_LOCATION); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){ + perList.add(android.Manifest.permission.BLUETOOTH_SCAN); + perList.add(android.Manifest.permission.BLUETOOTH_ADVERTISE); + perList.add(android.Manifest.permission.BLUETOOTH_CONNECT); + } + int size = perList.size(); + String [] permissions = new String[size]; + + for (int i = 0;i(R.id.iconx) + image = icon.drawable as AnimationDrawable + image?.start() + + + progress =findViewById(R.id.dg_pb_loading) + cardview =findViewById(R.id.cardview) + ivCancel =findViewById(R.id.iv_cancel) + tvCancel =findViewById(R.id.tv_cancel) + var view =findViewById(R.id.tv_hint) - view.text = hint - if (TextUtils.isEmpty(hint)){ - + tvCancel?.setOnClickListener { + dismiss() } + view.text = hint - window!!.setDimAmount(0f) //去除阴影遮罩效果 + window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); setCanceledOnTouchOutside(false) - // setCancelable(false) } + + fun setProgress(value: Int){ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + progress?.setProgress(value,true) + } + } + + fun setError(){ + cardview?.visibility = View.GONE + ivCancel?.visibility = View.VISIBLE + tvCancel?.visibility = View.VISIBLE + image?.stop() + + } + } diff --git a/iFish7/src/main/java/com/ifish/view/IosAlertDialog.java b/iFish7/src/main/java/com/ifish/view/IosAlertDialog.java index 66d6665b1..62b1b5d08 100644 --- a/iFish7/src/main/java/com/ifish/view/IosAlertDialog.java +++ b/iFish7/src/main/java/com/ifish/view/IosAlertDialog.java @@ -14,6 +14,9 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; + +import androidx.core.content.ContextCompat; + import com.ifish.activity.R; /** @@ -30,6 +33,7 @@ public class IosAlertDialog { private Button btn_neg; private Button btn_pos; private ImageView img_line; + private View bottom; private Display display; private boolean showTitle = false; private boolean showMsg = false; @@ -37,7 +41,7 @@ public class IosAlertDialog { private boolean showNegBtn = false; private boolean isMiddleShowEclipse = false; //setMsg时 文本内容超过最多5行后,省略号是否居中显示,默认不居中 private int maxLines = 5; - + int gravity = Gravity.CENTER; public IosAlertDialog(Context context) { this.context = context; WindowManager windowManager = (WindowManager) context @@ -45,6 +49,27 @@ public class IosAlertDialog { display = windowManager.getDefaultDisplay(); } + public void showBottom(boolean show) { + if (bottom!=null){ + if (show){ + bottom.setVisibility(View.VISIBLE); + }else { + bottom.setVisibility(View.GONE); + } + + } + } + + public IosAlertDialog(Context context, int gravity) { + this.context = context; + WindowManager windowManager = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + display = windowManager.getDefaultDisplay(); + this.gravity = gravity; + } + + + public IosAlertDialog builder() { // 获取Dialog布局 View view = LayoutInflater.from(context).inflate( @@ -52,6 +77,7 @@ public class IosAlertDialog { // 获取自定义Dialog布局中的控件 lLayout_bg = view.findViewById(R.id.lLayout_bg); txt_title = view.findViewById(R.id.txt_title); + bottom = view.findViewById(R.id.bottom); txt_title.setVisibility(View.GONE); txt_msg = view.findViewById(R.id.txt_msg); txt_msg.setVisibility(View.GONE); @@ -64,14 +90,18 @@ public class IosAlertDialog { // 定义Dialog布局和参数 dialog = new Dialog(context, R.style.AlertDialogStyle); - dialog.getWindow().setGravity(Gravity.CENTER); + dialog.getWindow().setGravity(gravity); dialog.setContentView(view); // 调整dialog背景大小 lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display - .getWidth() * 0.7), LinearLayout.LayoutParams.MATCH_PARENT)); + .getWidth() * 0.9), LinearLayout.LayoutParams.MATCH_PARENT)); return this; } + public void setTextColor(int color){ + txt_msg.setTextColor(ContextCompat.getColor(context,color)); + } + public IosAlertDialog setTitle(String title) { showTitle = true; if ("".equals(title)) { diff --git a/iFish7/src/main/res/drawable-xxhdpi/bluetooth_five.png b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_five.png new file mode 100644 index 000000000..74231e155 Binary files /dev/null and b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_five.png differ diff --git a/iFish7/src/main/res/drawable-xxhdpi/bluetooth_four.png b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_four.png new file mode 100644 index 000000000..e795f10e0 Binary files /dev/null and b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_four.png differ diff --git a/iFish7/src/main/res/drawable-xxhdpi/bluetooth_one.png b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_one.png new file mode 100644 index 000000000..f2dbc333e Binary files /dev/null and b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_one.png differ diff --git a/iFish7/src/main/res/drawable-xxhdpi/bluetooth_three.png b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_three.png new file mode 100644 index 000000000..19ee41fa5 Binary files /dev/null and b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_three.png differ diff --git a/iFish7/src/main/res/drawable-xxhdpi/bluetooth_two.png b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_two.png new file mode 100644 index 000000000..3911b5d46 Binary files /dev/null and b/iFish7/src/main/res/drawable-xxhdpi/bluetooth_two.png differ diff --git a/iFish7/src/main/res/drawable-xxhdpi/loading_icon.png b/iFish7/src/main/res/drawable-xxhdpi/loading_icon.png new file mode 100644 index 000000000..e22ff4ca8 Binary files /dev/null and b/iFish7/src/main/res/drawable-xxhdpi/loading_icon.png differ diff --git a/iFish7/src/main/res/drawable/bluetooth_connect.xml b/iFish7/src/main/res/drawable/bluetooth_connect.xml new file mode 100755 index 000000000..623a89e45 --- /dev/null +++ b/iFish7/src/main/res/drawable/bluetooth_connect.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/iFish7/src/main/res/drawable/progress_drawable.xml b/iFish7/src/main/res/drawable/progress_drawable.xml new file mode 100755 index 000000000..bda2d4644 --- /dev/null +++ b/iFish7/src/main/res/drawable/progress_drawable.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/iFish7/src/main/res/drawable/shape_loading_anim.xml b/iFish7/src/main/res/drawable/shape_loading_anim.xml index b92ec523f..cca4e4d00 100644 --- a/iFish7/src/main/res/drawable/shape_loading_anim.xml +++ b/iFish7/src/main/res/drawable/shape_loading_anim.xml @@ -1,6 +1,6 @@ diff --git a/iFish7/src/main/res/drawable/shape_white_radius15.xml b/iFish7/src/main/res/drawable/shape_white_radius15.xml index 83fe57a48..fcc7c8743 100644 --- a/iFish7/src/main/res/drawable/shape_white_radius15.xml +++ b/iFish7/src/main/res/drawable/shape_white_radius15.xml @@ -2,5 +2,5 @@ - + \ No newline at end of file diff --git a/iFish7/src/main/res/layout/activity_new_bind_device_choice.xml b/iFish7/src/main/res/layout/activity_new_bind_device_choice.xml index e2a702367..d5ccbc3f1 100644 --- a/iFish7/src/main/res/layout/activity_new_bind_device_choice.xml +++ b/iFish7/src/main/res/layout/activity_new_bind_device_choice.xml @@ -36,7 +36,7 @@ android:layout_height="wrap_content" android:layout_gravity="right" android:layout_marginRight="10dp" - android:text="联网视频" + android:text="联网视频教程" android:textColor="#E60012" android:textSize="15sp" /> @@ -184,6 +184,16 @@ android:text="3、如多次尝试一键联网都不成功,可切换其他联网方式,每次重新联接时插座需断一次电然后重新复位联接。" android:textColor="#999999" /> + + - - - - + + - - \ No newline at end of file + android:layout_centerInParent="true" + android:background="@color/white" + android:layout_width="match_parent" + android:orientation="vertical" + android:layout_height="wrap_content"> + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/iFish7/src/main/res/layout/hint_toast.xml b/iFish7/src/main/res/layout/hint_toast.xml new file mode 100644 index 000000000..aafea6aa0 --- /dev/null +++ b/iFish7/src/main/res/layout/hint_toast.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/iFish7/src/main/res/layout/ios_dialog_layout.xml b/iFish7/src/main/res/layout/ios_dialog_layout.xml index a5ab3c6d8..820d216a5 100644 --- a/iFish7/src/main/res/layout/ios_dialog_layout.xml +++ b/iFish7/src/main/res/layout/ios_dialog_layout.xml @@ -1,6 +1,11 @@ - + + android:textSize="16sp" />