app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -1,9 +1,18 @@ package com.hdl.photovoltaic; import android.app.Application; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import com.hdl.hdlhttp.HxHttpConfig; import com.hdl.linkpm.sdk.HDLLinkPMSdk; @@ -15,6 +24,7 @@ import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.enums.NetworkType; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlOtaLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.ui.HomeLoginActivity; import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; @@ -63,6 +73,8 @@ SharedPreUtils.init(this); getAppLanguage(); initThirdSDK(); // appLocationInfo(); } public void getAppLanguage() { @@ -71,7 +83,7 @@ //从内存里面获取不到语言,获取当前系统的; String str = getResources().getConfiguration().locale.getCountry(); if (str.equals("CN") || str.equals("TW")) { UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.zh); UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.cn); } else { UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.en); } @@ -291,5 +303,42 @@ } } public void appLocationInfo() { LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } //开始定位服务,minTimeMs最小时间间隔(单位为毫秒),minDistanceM最小距离间隔(单位为米)、最小时间间隔(单位为毫秒)等参数。 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, new LocationListener() { @Override public void onLocationChanged(@NonNull Location location) { // 当位置发生变化时调用此方法 double latitude = location.getLatitude(); // 获取纬度 double longitude = location.getLongitude(); // 获取经度 HdlLogLogic.print("纬度--->" + latitude, true); HdlLogLogic.print("经度--->" + longitude, true); // 这里可以根据需求处理获取到的经纬度数据 } public void onStatusChanged(String provider, int status, Bundle extras) { } public void onProviderEnabled(String provider) { } public void onProviderDisabled(String provider) { } }); } } app/src/main/java/com/hdl/photovoltaic/other/HdlJpushLogic.java
@@ -46,7 +46,7 @@ * @param isOpened true=点击通知栏回调,false=收到推送通知回调; */ public void JpushPushCommonData(Context context, JPushMessageInfoBean jPushMessageInfoBean, boolean isOpened) { //添加在推送数据到缓存列表中; //添加推送数据到缓存列表中; this.addPushDataToMemoryList(jPushMessageInfoBean); if (isOpened) { Intent intent = new Intent(context, MyPowerStationActivity.class); app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -1,13 +1,25 @@ package com.hdl.photovoltaic.other; import android.Manifest; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.IBinder; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean; import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean; @@ -30,6 +42,7 @@ import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; import com.hdl.photovoltaic.utils.NetworkUtils; import com.hdl.photovoltaic.utils.WifiUtils; import com.hdl.photovoltaic.widget.ConfirmationCancelDialog; import com.hdl.sdk.link.common.exception.HDLLinkCode; import com.hdl.sdk.link.common.exception.HDLLinkException; import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus; @@ -318,6 +331,10 @@ uniCallbackData(UserConfigManage.getInstance().getCurrentAppLanguage(), callback); } break; //获取位置信息 case HDLUniMP.UNI_EVENT_REPLY_OTHER_LOCATION_INFO: { this.uniGetLocationInfo(data, callback); } } } HdlLogLogic.print("uni发来的数据--->大类--->" + topic + "\r\n" + data, true); @@ -364,6 +381,44 @@ //endregion //region ******uni接口方法****** /** * 获取位置信息,包括经纬度 */ private void uniGetLocationInfo(Object data, DCUniMPJSCallback callback) { // 初始化LocationManager对象 LocationManager locationManager = (LocationManager) HDLApp.getInstance().getSystemService(Context.LOCATION_SERVICE); JsonObject jsonObject = new JsonObject(); //INTERNET 允许使用网络 //ACCESS_FINE_LOCATION 允许使用GPS定位 //ACCESS_COARSE_LOCATION 允许使用WIFI热点或基站来获取粗略的定位 if (ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { jsonObject.addProperty("result", -2);//没有位置信息权限 uniCallbackData(jsonObject.toString(), callback); return; } // 判断设备是否支持定位功能 if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { jsonObject.addProperty("result", -1);//不支持定位功能 //提示用户打开定位功能或者引导用户去系统设置页面打开定位功能 uniCallbackData(jsonObject.toString(), callback); return; } Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location == null) { jsonObject.addProperty("result", -3);//没有位置信息权限 uniCallbackData(jsonObject.toString(), callback); return; } jsonObject.addProperty("result", 0);//不支持定位功能 jsonObject.addProperty("longitude", location.getLongitude());//经度 jsonObject.addProperty("latitude", location.getLatitude());//纬度 uniCallbackData(jsonObject.toString(), callback); HdlLogLogic.print("经纬度--->经度:" + location.getLongitude() + "纬度:" + location.getLatitude(), true); } /** * 向云端获取逆变器oid列表 @@ -429,9 +484,9 @@ */ private void uniGetLocalFirmwares(Object data, DCUniMPJSCallback callback) { try { String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//硬件型号 // String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//硬件型号 String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//系统镜像id String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//固件版本id // String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//固件版本id // String oid = getKeyValue("oid", getKeyValue("data", data));//固件oid List<DeviceFirmwareBean> list = new ArrayList<>(); String driverFileList = HdlFileLogic.getInstance().getFirmwareRootPath(); @@ -463,7 +518,7 @@ * 向云端发起【设备固件下载】指令 */ private void uniDeviceFirmwareDownload(Object data, DCUniMPJSCallback callback) { String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//云端上设备id // String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//云端上设备id String oid = getKeyValue("oid", getKeyValue("data", data));//该固件的oid String imageId = getKeyValue("imageId", getKeyValue("data", data));//固件镜像id String version = getKeyValue("version", getKeyValue("data", data));//固件版本 @@ -515,7 +570,7 @@ String oid = getKeyValue("oid", getKeyValue("data", data));//升级固件的oid String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//固件版本id String version = getKeyValue("version", getKeyValue("data", data));//固件版本 String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//云端上文件MD5 // String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//云端上文件MD5 String imageId = getKeyValue("imageId", getKeyValue("data", data));//固件镜像id String module = "FW#" + imageId;//模块信息(HW:硬件) @@ -686,8 +741,8 @@ private void uniGetLocalDrivers(Object data, DCUniMPJSCallback callback) { try { String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//驱动编号或驱动名称 String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//驱动类型id String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动类型id // String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//驱动类型id // String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动类型id List<GatewayDriverBean> list = new ArrayList<>(); String driverFileList = HdlFileLogic.getInstance().getDriveRootPath(); File file = new File(driverFileList); @@ -719,11 +774,11 @@ */ private void uniGatewayDriverDownload(Object data, DCUniMPJSCallback callback) { String deviceOid = getKeyValue("oid", getKeyValue("data", data));//逆变器设备oid // String deviceOid = getKeyValue("oid", getKeyValue("data", data));//逆变器设备oid String driverCode = getKeyValue("driverCode", getKeyValue("data", data));//驱动编码 String imageId = getKeyValue("imageId", getKeyValue("data", data));//驱动镜像id // String imageId = getKeyValue("imageId", getKeyValue("data", data));//驱动镜像id String version = getKeyValue("version", getKeyValue("data", data));//驱动版本 String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动版本id // String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动版本id String localUrl = getKeyValue("localUrl", getKeyValue("data", data));//储存在本地驱动文件路径 String url = getKeyValue("url", getKeyValue("data", data));//云端上文件地址 String md5 = getKeyValue("md5", getKeyValue("data", data));//云端上文件MD5 app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
@@ -107,7 +107,7 @@ viewBinding.homeLoginInstallUserTv.setSelected(UserConfigManage.getInstance().isBAccount()); viewBinding.homeLoginPrivacyCheckIv.setSelected(UserConfigManage.getInstance().isAcceiptPolicy()); setStringDifferentColors(viewBinding.homeLoginPrivacyTv); if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.zh)) { if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.cn)) { viewBinding.homeLoginLanguageTv.setText("简体中文"); } else { viewBinding.homeLoginLanguageTv.setText("English"); app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
@@ -2,14 +2,22 @@ import androidx.annotation.NonNull; import androidx.appcompat.content.res.AppCompatResources; import androidx.core.app.ActivityCompat; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.net.Uri; import android.os.Bundle; import android.os.Process; import android.os.SystemClock; import android.provider.ContactsContract; import android.provider.Settings; import android.text.TextUtils; import android.view.View; @@ -94,6 +102,8 @@ this.clickJpushNotificationMessage(); //通知限权 this.notificationSet(); //初始化权限 requestPermissions(); } @@ -276,13 +286,12 @@ } public void requestPermissions() { String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}); //Manifest.permission.ACCESS_COARSE_LOCATION String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}); if (ary.length > 0) { requestPermissions(ary, PermissionUtils.STATUS_SUCCESS); this.requestPermissions(ary, PermissionUtils.STATUS_SUCCESS); } else { if (mPermissionsResultCallback != null) { mPermissionsResultCallback.succeed(); } locationUpdates(); } } @@ -292,28 +301,17 @@ if (requestCode == PermissionUtils.STATUS_SUCCESS) { for (int i = 0; i < permissions.length; i++) { if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { if (mPermissionsResultCallback != null) { mPermissionsResultCallback.succeed(); switch (permissions[i]) { case Manifest.permission.ACCESS_FINE_LOCATION: { locationUpdates(); } break; } } } } } private PermissionsResultCallback mPermissionsResultCallback; public void setPermissionsResultCallback(PermissionsResultCallback permissionsResultCallback) { mPermissionsResultCallback = permissionsResultCallback; } public interface PermissionsResultCallback { void succeed(); void failing(); } @@ -523,4 +521,70 @@ } /** * 初始化【开启定位】和【位置信息】权限 */ private void locationUpdates() { // 初始化LocationManager对象 LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 判断设备是否支持定位功能 if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { // 提示用户打开定位功能或者引导用户去系统设置页面打开定位功能 ConfirmationCancelDialog confirmationCancelDialog = new ConfirmationCancelDialog(_mActivity); confirmationCancelDialog.setTitle(getString(R.string.loading_title_tip)); confirmationCancelDialog.setContent(getString(R.string.system_positioning_switch)); confirmationCancelDialog.setConfirmation(getString(R.string.go_to_settings)); confirmationCancelDialog.show(); confirmationCancelDialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { @Override public void Confirm() { confirmationCancelDialog.dismiss(); Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); HDLApp.getInstance().startActivity(intent); } }); confirmationCancelDialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() { @Override public void Cancel() { confirmationCancelDialog.dismiss(); } }); } else { // //INTERNET 允许使用网络 // //ACCESS_FINE_LOCATION 允许使用GPS定位 // //ACCESS_COARSE_LOCATION 允许使用WIFI热点或基站来获取粗略的定位 // if (ActivityCompat.checkSelfPermission(_mActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // // TODO: Consider calling // // ActivityCompat#requestPermissions // // here to request the missing permissions, and then overriding // // public void onRequestPermissionsResult(int requestCode, String[] permissions, // // int[] grantResults) // // to handle the case where the user grants the permission. See the documentation // // for ActivityCompat#requestPermissions for more details. // return; // } // HdlLogLogic.print("开始纬度经度--->", true); // Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); // // //建议这个 minTime 不小于 60000,即 1 分钟,这样会更加高效而且省电 // locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { // @Override // public void onLocationChanged(@NonNull Location location) { // // 当位置发生变化时调用此方法 // double latitude = location.getLatitude(); // 获取纬度 // double longitude = location.getLongitude(); // 获取经度 // // HdlLogLogic.print("纬度--->" + latitude, true); // HdlLogLogic.print("经度--->" + longitude, true); // } // }); } } } app/src/main/java/com/hdl/photovoltaic/ui/me/WebActivity.java
@@ -64,7 +64,7 @@ viewBinding.toolbarTopFragmentHouseListRl.topBackBtn.setVisibility(View.VISIBLE); viewBinding.toolbarTopFragmentHouseListRl.topBarView.setBackgroundColor(getResources().getColor(R.color.text_FFFFFFFF, null)); if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.zh)) { if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.cn)) { //中文 if (this.typeIntValue == 0) { //用户协议 app/src/main/java/com/hdl/photovoltaic/ui/test/TestLogActivity.java
@@ -148,7 +148,7 @@ HdlThreadLogic.runSubThread(new Runnable() { @Override public void run() { HdlFileLogic.getInstance().delFileLien(HdlFileLogic.getInstance().getLogFileNamePath(), 2); // HdlFileLogic.getInstance().delFileLien(HdlFileLogic.getInstance().getLogFileNamePath(), 2); String content = HdlLogLogic.readLog(); HdlThreadLogic.runMainThread(new Runnable() { @Override app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
@@ -60,6 +60,7 @@ public final static String UNI_EVENT_REPLY_OTHER_MODEL = "uni_other_model";//其它模块(大类) public final static String UNI_EVENT_REPLY_OTHER_UNIT = "temperature_unit";//获取温度单位 public final static String UNI_EVENT_REPLY_OTHER_APP_LANGUAGE = "app_language";//获取app语言 public final static String UNI_EVENT_REPLY_OTHER_LOCATION_INFO = "location_info";//获取app位置信息 /*********Wifi模块*********/ //卫锦定义 app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java
@@ -344,15 +344,15 @@ * 注意:需要提前小程序在运行才可成功 * * @param uniAppId 小程序指定 * @param event 小程序指定主题 * @param topic 小程序指定主题 * @param data String或JSON */ public void sendUniMPEvent(String uniAppId, String event, Object data) { public void sendUniMPEvent(String uniAppId, String topic, Object data) { if (mUniMPCaches.containsKey(uniAppId)) { if (mUniMPCaches.get(uniAppId) != null) { mUniMPCaches.get(uniAppId).sendUniMPEvent(event, data); HdlLogLogic.print("发送通知成功:event:" + event + " data:" + new Gson().toJson(data)); mUniMPCaches.get(uniAppId).sendUniMPEvent(topic, data); HdlLogLogic.print("发送通知成功:event:" + topic + " data:" + new Gson().toJson(data)); } else { HdlLogLogic.print("发送失败,小程序对象为空:" + uniAppId); } app/src/main/java/com/hdl/photovoltaic/utils/LocalManageUtil.java
@@ -28,7 +28,7 @@ */ public class LocalManageUtil { public static final String zh = "zh";//中文 public static final String cn = "cn";//中文 public static final String en = "en";//英文 // private static Locale mLocale; @@ -140,7 +140,7 @@ LanguageAdapter.ItemData zh = new LanguageAdapter.ItemData(); zh.setState(false); zh.setTitle("简体中文"); zh.setLanguage(LocalManageUtil.zh); zh.setLanguage(LocalManageUtil.cn); list.add(zh); LanguageAdapter.ItemData en = new LanguageAdapter.ItemData(); en.setState(false); @@ -189,7 +189,7 @@ // Locale locale = context.getResources().getConfiguration().locale; // String language = locale.getLanguage(); String language = UserConfigManage.getInstance().getCurrentAppLanguage(); return language.equals(zh); return language.equals(cn); } public static List<NationBean> getNationBeans() { app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
@@ -48,7 +48,7 @@ * @param activity - * @param strings - */ public static void askPermission(Activity activity, String[] strings) { public static void activityPermission(Activity activity, String[] strings) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { List<String> newList = new ArrayList<>(); for (String permission : strings) { app/src/main/res/values-en/strings.xml
@@ -205,5 +205,6 @@ <string name="welcome_to_the_smart_energy_app">Welcome to the Smart Energy APP</string> <string name="no_permissions_unable_to_receive_push">Unable to receive push notification If the permission is not enabled, you cannot receive push information.</string> <string name="go_to_settings">Go to Settings</string> <string name="system_positioning_switch">You need to turn on the system positioning switch. Otherwise, the system can obtain the position information.</string> </resources> app/src/main/res/values-zh/strings.xml
@@ -203,6 +203,7 @@ <string name="welcome_to_the_smart_energy_app">欢迎打开智慧能源APP</string> <string name="no_permissions_unable_to_receive_push">通知权限没开启,将无法收到推送信息.</string> <string name="go_to_settings">前往设置</string> <string name="system_positioning_switch">需要打开系统定位开关,否则取法获取位置信息.</string> </resources> app/src/main/res/values/strings.xml
@@ -203,6 +203,7 @@ <string name="welcome_to_the_smart_energy_app">欢迎打开智慧能源APP</string> <string name="no_permissions_unable_to_receive_push">通知权限没开启,将无法收到推送信息.</string> <string name="go_to_settings">前往设置</string> <string name="system_positioning_switch">需要打开系统定位开关,否则取法获取位置信息.</string> </resources>