From b7f663167259e0827f448055dfc32b8baa368be8 Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 19 Feb 2025 19:55:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=9C=8D=E5=8A=A1=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=E5=86=8D=E7=9B=91=E6=8E=A7=E4=BB=A5=E5=A4=AA=E7=BD=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xypower/mpapp/MicroPhotoService.java | 118 ++++++++++-------- 1 file changed, 68 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 83b715c8..ad668a34 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -254,54 +254,6 @@ public class MicroPhotoService extends Service { try { if (usingEthernet()) { mConnectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); - mNetworkCallback = new ConnectivityManager.NetworkCallback() { - @Override - public void onLost(Network network) { - infoLog("Network Lost " + network.toString()); - updateEhernet(mNativeHandle, network.getNetworkHandle(), false); - updateDefaultNetwork(); - } - @Override - public void onAvailable(final Network network) { - String ip = ""; - try { - NetworkInfo ni = mConnectivityManager.getNetworkInfo(network); - LinkProperties lp = mConnectivityManager.getLinkProperties(network); - if (lp != null) { - List addresses = lp.getLinkAddresses(); - if (addresses != null && addresses.size() > 0) { - for (LinkAddress linkAddress : addresses) { - InetAddress inetAddress = linkAddress.getAddress(); - if (inetAddress != null && inetAddress instanceof Inet4Address) { - ip = inetAddress.getHostAddress(); - break; - } - } - } - } - } catch (Exception ex) { - ex.printStackTrace(); - } - - infoLog("Network Available " + network.toString() + " IP=" + ip + " Handle=" + Long.toString(network.getNetworkHandle())); - updateEhernet(mNativeHandle, network.getNetworkHandle(), true); - updateDefaultNetwork(); - } - - private void updateDefaultNetwork() { - MicroPhotoService thisService = MicroPhotoService.this; - long defaultNetHandle = thisService.getDefaultNetworkHandle(); - if (defaultNetHandle != 0) { - thisService.updateActiveNetwork(thisService.mNativeHandle, defaultNetHandle, true); - } - } - }; - - NetworkRequest request = new NetworkRequest.Builder() - .addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET) - .build(); - - mConnectivityManager.registerNetworkCallback(request, mNetworkCallback); Network[] nws = mConnectivityManager.getAllNetworks(); for (Network nw : nws) { @@ -439,8 +391,10 @@ public class MicroPhotoService extends Service { getApplicationContext().unregisterReceiver(mScreenaAtionReceiver); getApplicationContext().unregisterReceiver(mNetworkChangedReceiver); - if (mConnectivityManager != null && mNetworkCallback != null) { - mConnectivityManager.unregisterNetworkCallback(mNetworkCallback); + if (mConnectivityManager != null) { + if (mNetworkCallback != null) { + mConnectivityManager.unregisterNetworkCallback(mNetworkCallback); + } } LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(mLocalMsgReceiver); @@ -1082,6 +1036,70 @@ public class MicroPhotoService extends Service { long startTime = (date.getTime() + 999) / 1000; service.updateCaptureSchedule(startTime); + try { + if (usingEthernet()) { + mNetworkCallback = new ConnectivityManager.NetworkCallback() { + @Override + public void onLost(Network network) { + infoLog("Network Lost " + network.toString()); + updateEhernet(mNativeHandle, network.getNetworkHandle(), false); + updateDefaultNetwork(); + } + @Override + public void onAvailable(final Network network) { + String ip = ""; + try { + NetworkInfo ni = mConnectivityManager.getNetworkInfo(network); + LinkProperties lp = mConnectivityManager.getLinkProperties(network); + if (lp != null) { + List addresses = lp.getLinkAddresses(); + if (addresses != null && addresses.size() > 0) { + for (LinkAddress linkAddress : addresses) { + InetAddress inetAddress = linkAddress.getAddress(); + if (inetAddress != null && inetAddress instanceof Inet4Address) { + ip = inetAddress.getHostAddress(); + break; + } + } + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + + infoLog("Network Available " + network.toString() + " IP=" + ip + " Handle=" + Long.toString(network.getNetworkHandle())); + updateEhernet(mNativeHandle, network.getNetworkHandle(), true); + updateDefaultNetwork(); + } + + private void updateDefaultNetwork() { + MicroPhotoService thisService = MicroPhotoService.this; + long defaultNetHandle = thisService.getDefaultNetworkHandle(); + if (defaultNetHandle != 0) { + thisService.updateActiveNetwork(thisService.mNativeHandle, defaultNetHandle, true); + } + } + }; + + NetworkRequest request = new NetworkRequest.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET) + .build(); + + mConnectivityManager.registerNetworkCallback(request, mNetworkCallback); + + Network[] nws = mConnectivityManager.getAllNetworks(); + for (Network nw : nws) { + NetworkInfo ni = mConnectivityManager.getNetworkInfo(nw); + if (ni.getType() == ConnectivityManager.TYPE_ETHERNET) { + updateEhernet(mNativeHandle, nw.getNetworkHandle(), true); + } + + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + if (mPreviousLocation != null) { service.updatePosition(mNativeHandle, mPreviousLocation.getLongitude(), mPreviousLocation.getLatitude(), mPreviousLocation.getAccuracy(), mPreviousLocation.getTime() / 1000);