diff options
author | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2020-09-16 13:47:38 -0400 |
---|---|---|
committer | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2020-09-16 13:47:38 -0400 |
commit | ca572ffcc60b274b99236da4f6f46649062e32df (patch) | |
tree | a7706c5e0d56897af0ee7d4e63b029dc7a0d13a3 /android/sdl_android/src/main | |
parent | e297e68fd68e2302dc2d6fcd7b86798a863f7177 (diff) | |
parent | de8e5c9a71ba2c4c793bcf6fcccbb964fe25853a (diff) | |
download | sdl_android-ca572ffcc60b274b99236da4f6f46649062e32df.tar.gz |
Merge branch 'develop' into feature/issue_1448_generate_deprecated_javadocfeature/issue_1448_generate_deprecated_javadoc
Diffstat (limited to 'android/sdl_android/src/main')
59 files changed, 313 insertions, 444 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/encoder/EncoderUtils.java b/android/sdl_android/src/main/java/com/smartdevicelink/encoder/EncoderUtils.java index 8f3001294..5fd3f417d 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/encoder/EncoderUtils.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/encoder/EncoderUtils.java @@ -87,14 +87,18 @@ public final class EncoderUtils { } ByteBuffer sps = format.getByteBuffer("csd-0"); - int spsLen = sps.remaining(); + int spsLen = sps != null ? sps.remaining() : 0; ByteBuffer pps = format.getByteBuffer("csd-1"); - int ppsLen = pps.remaining(); + int ppsLen = pps != null ? pps.remaining() : 0; byte[] output = new byte[spsLen + ppsLen]; try { - sps.get(output, 0, spsLen); - pps.get(output, spsLen, ppsLen); + if (sps != null) { + sps.get(output, 0, spsLen); + } + if (pps != null) { + pps.get(output, spsLen, ppsLen); + } } catch (Exception e) { // should not happen DebugTool.logWarning(TAG, "Error while copying H264 codec specific data: " + e); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/encoder/SdlEncoder.java b/android/sdl_android/src/main/java/com/smartdevicelink/encoder/SdlEncoder.java index 7172b0225..251c3ad3a 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/encoder/SdlEncoder.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/encoder/SdlEncoder.java @@ -38,7 +38,7 @@ import android.media.MediaFormat; import android.os.Build; import android.view.Surface; -import com.smartdevicelink.proxy.interfaces.IVideoStreamListener; +import com.smartdevicelink.streaming.video.IVideoStreamListener; import com.smartdevicelink.util.DebugTool; import java.io.IOException; @@ -214,7 +214,7 @@ public class SdlEncoder { if (mBufferInfo.size != 0) { ByteBuffer encoderOutputBuffer = encoderOutputBuffers[encoderStatus]; - byte[] dataToWrite = null; + byte[] dataToWrite; int dataOffset = 0; // append SPS and PPS in front of every IDR NAL unit diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/encoder/VirtualDisplayEncoder.java b/android/sdl_android/src/main/java/com/smartdevicelink/encoder/VirtualDisplayEncoder.java index 766e10aaa..de342f7c9 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/encoder/VirtualDisplayEncoder.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/encoder/VirtualDisplayEncoder.java @@ -43,10 +43,10 @@ import android.os.Build; import android.view.Display; import android.view.Surface; -import com.smartdevicelink.proxy.interfaces.IVideoStreamListener; import com.smartdevicelink.proxy.rpc.ImageResolution; import com.smartdevicelink.proxy.rpc.VideoStreamingFormat; import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec; +import com.smartdevicelink.streaming.video.IVideoStreamListener; import com.smartdevicelink.streaming.video.VideoStreamingParameters; import com.smartdevicelink.util.DebugTool; @@ -101,17 +101,14 @@ public class VirtualDisplayEncoder { initPassed = true; } - @SuppressWarnings("unused") public VideoStreamingParameters getStreamingParams(){ return this.streamingParams; } - @SuppressWarnings("unused") public void setStreamingParams(int displayDensity, ImageResolution resolution, int frameRate, int bitrate, int interval, VideoStreamingFormat format) { this.streamingParams = new VideoStreamingParameters(displayDensity, frameRate, bitrate, interval, resolution, format); } - @SuppressWarnings("unused") public void setStreamingParams(VideoStreamingParameters streamingParams) { this.streamingParams = streamingParams; } @@ -321,7 +318,6 @@ public class VirtualDisplayEncoder { } } - @SuppressWarnings("deprecation") void drainEncoder(boolean endOfStream) { if (mVideoEncoder == null || mOutputListener == null) { return; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java index f109cbe85..09adbbaa6 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java @@ -36,6 +36,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.os.Handler; import android.os.Looper; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -90,7 +91,7 @@ public class SdlManager extends BaseSdlManager { @Override public void onTransportEvent(List<TransportRecord> connectedTransports, boolean audioStreamTransportAvail, boolean videoStreamTransportAvail) { - //Pass to submanagers that need it + //Pass to sub managers that need it if (videoStreamManager != null) { videoStreamManager.handleTransportUpdated(connectedTransports, audioStreamTransportAvail, videoStreamTransportAvail); } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoder.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoder.java index 04fe41c97..141a2b020 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoder.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoder.java @@ -36,6 +36,7 @@ import android.media.MediaCodec; import android.media.MediaFormat;
import android.net.Uri;
import android.os.Build;
+
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoderCompat.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoderCompat.java index ce2d3c49e..7e32d3261 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoderCompat.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioDecoderCompat.java @@ -35,6 +35,7 @@ import android.content.Context; import android.media.MediaCodec; import android.media.MediaFormat; import android.net.Uri; + import androidx.annotation.NonNull; import com.smartdevicelink.managers.audio.AudioStreamManager.SampleType; @@ -90,7 +91,7 @@ public class AudioDecoderCompat extends BaseAudioDecoder { * Runnable to decode audio data */ private static class DecoderRunnable implements Runnable { - WeakReference<AudioDecoderCompat> weakReference; + final WeakReference<AudioDecoderCompat> weakReference; /** * Decodes all audio data from source diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java index 52b4db580..0e4a2ed2c 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java @@ -38,11 +38,12 @@ import android.net.Uri; import android.os.Build;
import android.os.Handler;
import android.os.Looper;
+
import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;
-import com.smartdevicelink.SdlConnection.SdlSession;
+import com.smartdevicelink.session.SdlSession;
import com.smartdevicelink.managers.CompletionListener;
import com.smartdevicelink.managers.StreamingStateMachine;
import com.smartdevicelink.managers.lifecycle.OnSystemCapabilityListener;
@@ -50,9 +51,8 @@ import com.smartdevicelink.protocol.ProtocolMessage; import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.protocol.enums.SessionType;
import com.smartdevicelink.proxy.RPCNotification;
-import com.smartdevicelink.proxy.interfaces.IAudioStreamListener;
-import com.smartdevicelink.proxy.interfaces.ISdl;
-import com.smartdevicelink.proxy.interfaces.ISdlServiceListener;
+import com.smartdevicelink.managers.ISdl;
+import com.smartdevicelink.protocol.ISdlServiceListener;
import com.smartdevicelink.proxy.rpc.AudioPassThruCapabilities;
import com.smartdevicelink.proxy.rpc.OnHMIStatus;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
@@ -61,6 +61,7 @@ import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType; import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
import com.smartdevicelink.streaming.IStreamListener;
import com.smartdevicelink.streaming.StreamPacketizer;
+import com.smartdevicelink.streaming.audio.IAudioStreamListener;
import com.smartdevicelink.transport.utl.TransportRecord;
import com.smartdevicelink.util.DebugTool;
import com.smartdevicelink.util.Version;
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/BaseAudioDecoder.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/BaseAudioDecoder.java index 53e3d64f0..d7f4f3a7c 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/BaseAudioDecoder.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/BaseAudioDecoder.java @@ -38,6 +38,7 @@ import android.media.MediaExtractor; import android.media.MediaFormat;
import android.net.Uri;
import android.os.Build;
+
import androidx.annotation.NonNull;
import com.smartdevicelink.managers.audio.AudioStreamManager.SampleType;
@@ -109,7 +110,7 @@ public abstract class BaseAudioDecoder { for (int i = 0; i < numTracks; ++i) {
MediaFormat f = extractor.getTrackFormat(i);
String m = f.getString(MediaFormat.KEY_MIME);
- if (m.startsWith("audio/")) {
+ if (m != null && m.startsWith("audio/")) {
format = f;
mime = m;
extractor.selectTrack(i);
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/SampleBuffer.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/SampleBuffer.java index 05a9cc285..0993b2ec2 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/SampleBuffer.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/SampleBuffer.java @@ -44,7 +44,6 @@ import java.nio.ByteOrder; public class SampleBuffer {
private static final String TAG = SampleBuffer.class.getSimpleName();
- @SuppressWarnings({"unused", "FieldCanBeLocal"})
private @SampleType final int sampleType;
private final ByteBuffer byteBuffer;
private final int channelCount;
@@ -94,7 +93,6 @@ public class SampleBuffer { * @param presentationTimeUs The presentation time for the buffer.
* @return A new and empty sample buffer.
*/
- @SuppressWarnings("unused")
public static SampleBuffer allocate(int capacity, @SampleType int sampleType, int channelCount, ByteOrder byteOrder, long presentationTimeUs) {
return new SampleBuffer(capacity, sampleType, channelCount, byteOrder, presentationTimeUs);
}
@@ -117,7 +115,6 @@ public class SampleBuffer { /**
* Returns the capacity of the buffer per channel.
*/
- @SuppressWarnings("unused")
public int capacity() {
return byteBuffer.capacity() / sampleType / channelCount;
}
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/FileManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/FileManager.java index 0efc3b6ff..6b98e9b58 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/FileManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/FileManager.java @@ -35,11 +35,12 @@ package com.smartdevicelink.managers.file; import android.content.Context; import android.content.res.Resources; import android.net.Uri; + import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.managers.file.filetypes.SdlFile; -import com.smartdevicelink.proxy.interfaces.ISdl; import com.smartdevicelink.proxy.rpc.PutFile; import com.smartdevicelink.util.DebugTool; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/filetypes/SdlArtwork.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/filetypes/SdlArtwork.java index d0e46f7e5..afceb04a1 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/filetypes/SdlArtwork.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/filetypes/SdlArtwork.java @@ -33,6 +33,7 @@ package com.smartdevicelink.managers.file.filetypes; import android.net.Uri; + import androidx.annotation.NonNull; import com.smartdevicelink.proxy.rpc.Image; @@ -111,7 +112,7 @@ public class SdlArtwork extends SdlFile implements Cloneable{ } @Override - public void setType(FileType fileType) { + public void setType(@NonNull FileType fileType) { if(fileType == null || fileType.equals(FileType.GRAPHIC_JPEG) || fileType.equals(FileType.GRAPHIC_PNG) || fileType.equals(FileType.GRAPHIC_BMP)){ super.setType(fileType); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/filetypes/SdlFile.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/filetypes/SdlFile.java index 4fe5e3898..2b978c790 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/filetypes/SdlFile.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/filetypes/SdlFile.java @@ -33,6 +33,7 @@ package com.smartdevicelink.managers.file.filetypes; import android.net.Uri; + import androidx.annotation.NonNull; import com.smartdevicelink.proxy.rpc.enums.FileType; @@ -40,6 +41,7 @@ import com.smartdevicelink.proxy.rpc.enums.StaticIconName; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.Arrays; /** * A class representing data to be uploaded to core @@ -317,7 +319,7 @@ public class SdlFile{ int result = 1; result += ((getName() == null) ? 0 : Integer.rotateLeft(getName().hashCode(), 1)); result += ((getUri() == null) ? 0 : Integer.rotateLeft(getUri().hashCode(), 2)); - result += ((getFileData() == null) ? 0 : Integer.rotateLeft(getFileData().hashCode(), 3)); + result += ((getFileData() == null) ? 0 : Integer.rotateLeft(Arrays.hashCode(getFileData()), 3)); result += ((getType() == null) ? 0 : Integer.rotateLeft(getType().hashCode(), 4)); result += Integer.rotateLeft(Boolean.valueOf(isStaticIcon()).hashCode(), 5); result += Integer.rotateLeft(Boolean.valueOf(isPersistent()).hashCode(), 6); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/EncryptionLifecycleManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/EncryptionLifecycleManager.java index ae7a0886e..b2749212e 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/EncryptionLifecycleManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/EncryptionLifecycleManager.java @@ -34,9 +34,9 @@ package com.smartdevicelink.managers.lifecycle; import androidx.annotation.NonNull; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.managers.ServiceEncryptionListener; import com.smartdevicelink.protocol.enums.SessionType; -import com.smartdevicelink.proxy.interfaces.ISdl; class EncryptionLifecycleManager extends BaseEncryptionLifecycleManager { diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java index 78233dc0f..e5aee6c3e 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java @@ -32,15 +32,15 @@ package com.smartdevicelink.managers.lifecycle; -import android.app.Service; import android.content.Context; + import androidx.annotation.RestrictTo; -import com.smartdevicelink.SdlConnection.SdlSession; +import com.smartdevicelink.session.SdlSession; import com.smartdevicelink.exception.SdlException; import com.smartdevicelink.exception.SdlExceptionCause; +import com.smartdevicelink.protocol.ISdlServiceListener; import com.smartdevicelink.protocol.enums.SessionType; -import com.smartdevicelink.proxy.interfaces.ISdlServiceListener; import com.smartdevicelink.proxy.rpc.enums.SdlDisconnectedReason; import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType; import com.smartdevicelink.security.SdlSecurityBase; @@ -52,8 +52,6 @@ import com.smartdevicelink.transport.enums.TransportType; import com.smartdevicelink.util.DebugTool; import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.Collections; /** * The lifecycle manager creates a central point for all SDL session logic to converge. It should only be used by @@ -157,10 +155,6 @@ public class LifecycleManager extends BaseLifecycleManager { * * @param isEncrypted Specify true if packets on this service have to be encrypted * @param parameters VideoStreamingParameters that are desired. Does not guarantee this is what will be accepted. - * @return If the service is opened successfully, an instance of VideoStreamingParams is - * returned which contains accepted video format. If the service is opened with legacy - * mode (i.e. without any negotiation) then an instance of VideoStreamingParams is - * returned. If the service was not opened then null is returned. */ private void tryStartVideoStream(boolean isEncrypted, VideoStreamingParameters parameters) { if (session == null) { diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/SystemCapabilityManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/SystemCapabilityManager.java index e4e635883..e10693770 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/SystemCapabilityManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/SystemCapabilityManager.java @@ -31,7 +31,7 @@ */ package com.smartdevicelink.managers.lifecycle; -import com.smartdevicelink.proxy.interfaces.ISdl; +import com.smartdevicelink.managers.ISdl; /** * <strong>SystemCapabilityManager</strong> <br> diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenConfig.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenConfig.java index 8d1e9a6c8..df1db5475 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenConfig.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenConfig.java @@ -60,7 +60,9 @@ import java.lang.annotation.RetentionPolicy; */ public class LockScreenConfig { - private boolean enable, deviceLogo, enableDismissGesture; + private final boolean enable; + private boolean deviceLogo; + private boolean enableDismissGesture; private int backgroundColor, appIconInt, customViewInt; private @DisplayMode int displayMode; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManager.java index 711afcc72..603435800 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManager.java @@ -24,7 +24,7 @@ import java.security.NoSuchAlgorithmException; */ class LockScreenDeviceIconManager { - private Context context; + private final Context context; private static final String SDL_DEVICE_STATUS_SHARED_PREFS = "sdl.lockScreenIcon"; private static final String STORED_ICON_DIRECTORY_PATH = "sdl/lock_screen_icon/"; private static final String TAG = "LockScreenDeviceIconManager"; @@ -47,7 +47,7 @@ class LockScreenDeviceIconManager { * @param iconRetrievedListener an interface that will implement onIconReceived and OnError methods */ void retrieveIcon(String iconURL, OnIconRetrievedListener iconRetrievedListener) { - Bitmap icon = null; + Bitmap icon; try { if (isIconCachedAndValid(iconURL)) { DebugTool.logInfo(TAG, "Icon Is Up To Date"); @@ -127,7 +127,7 @@ class LockScreenDeviceIconManager { icon.compress(Bitmap.CompressFormat.PNG, 0 /*ignored for PNG*/, bos); byte[] bitmapData = bos.toByteArray(); - FileOutputStream fos = null; + FileOutputStream fos; try { fos = new FileOutputStream(f); fos.write(bitmapData); @@ -189,11 +189,11 @@ class LockScreenDeviceIconManager { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] messageDigest = md.digest(iconUrl.getBytes()); BigInteger no = new BigInteger(1, messageDigest); - String hashtext = no.toString(16); - while (hashtext.length() < 32) { - hashtext = "0" + hashtext; + StringBuilder hashText = new StringBuilder(no.toString(16)); + while (hashText.length() < 32) { + hashText.insert(0, "0"); } - iconHash = hashtext; + iconHash = hashText.toString(); } catch (NoSuchAlgorithmException e) { DebugTool.logError(TAG, "Unable to hash icon url"); e.printStackTrace(); @@ -208,7 +208,9 @@ class LockScreenDeviceIconManager { File iconDir = new File(context.getCacheDir() + "/" + STORED_ICON_DIRECTORY_PATH); if (iconDir.listFiles() != null) { for (File child : iconDir.listFiles()) { - child.delete(); + if (child != null) { + child.delete(); + } } } } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java index 06f992875..56975a390 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java @@ -44,7 +44,7 @@ import com.smartdevicelink.managers.BaseSubManager; import com.smartdevicelink.managers.CompletionListener; import com.smartdevicelink.protocol.enums.FunctionID; import com.smartdevicelink.proxy.RPCNotification; -import com.smartdevicelink.proxy.interfaces.ISdl; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.proxy.rpc.OnDriverDistraction; import com.smartdevicelink.proxy.rpc.OnHMIStatus; import com.smartdevicelink.proxy.rpc.OnSystemRequest; @@ -70,19 +70,26 @@ import java.lang.ref.WeakReference; public class LockScreenManager extends BaseSubManager { private static final String TAG = "LockScreenManager"; - private WeakReference<Context> context; + private final WeakReference<Context> context; HMILevel hmiLevel; private OnRPCNotificationListener systemRequestListener, ddListener, hmiListener; private String deviceIconUrl; - boolean driverDistStatus, mIsLockscreenDismissible, enableDismissGesture, lockScreenEnabled, deviceLogoEnabled; + boolean driverDistStatus; + boolean mIsLockscreenDismissible; + boolean enableDismissGesture; + final boolean lockScreenEnabled; + final boolean deviceLogoEnabled; private volatile boolean isApplicationForegrounded; private androidx.lifecycle.LifecycleObserver lifecycleObserver; - int lockScreenIcon, lockScreenColor, customView, displayMode; + final int lockScreenIcon; + final int lockScreenColor; + final int customView; + int displayMode; Bitmap deviceLogo; private boolean mLockScreenHasBeenDismissed, lockscreenDismissReceiverRegistered, receivedFirstDDNotification; private String mLockscreenWarningMsg; private BroadcastReceiver mLockscreenDismissedReceiver; - private LockScreenDeviceIconManager mLockScreenDeviceIconManager; + private final LockScreenDeviceIconManager mLockScreenDeviceIconManager; public LockScreenManager(LockScreenConfig lockScreenConfig, Context context, ISdl internalInterface){ diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/SDLLockScreenActivity.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/SDLLockScreenActivity.java index a1af673a2..3007d081a 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/SDLLockScreenActivity.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/SDLLockScreenActivity.java @@ -55,7 +55,6 @@ import com.smartdevicelink.R; public class SDLLockScreenActivity extends Activity { - private static final String TAG = "SDLLockScreenActivity"; public static final String LOCKSCREEN_COLOR_EXTRA = "LOCKSCREEN_COLOR_EXTRA"; public static final String LOCKSCREEN_ICON_EXTRA = "LOCKSCREEN_ICON_EXTRA"; public static final String LOCKSCREEN_DEVICE_LOGO_EXTRA = "LOCKSCREEN_DEVICE_LOGO_EXTRA"; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/permission/PermissionManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/permission/PermissionManager.java index 7430c3143..540cbbf20 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/permission/PermissionManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/permission/PermissionManager.java @@ -35,7 +35,7 @@ package com.smartdevicelink.managers.permission; import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; -import com.smartdevicelink.proxy.interfaces.ISdl; +import com.smartdevicelink.managers.ISdl; /** PermissionManager gives the developer information about what permissions are permitted in specific HMI level diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java index 31c6da0b1..00bb57628 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java @@ -35,8 +35,8 @@ package com.smartdevicelink.managers.screen; import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.managers.file.FileManager; -import com.smartdevicelink.proxy.interfaces.ISdl; /** * <strong>ScreenManager</strong> <br> diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SoftButtonManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SoftButtonManager.java index 5499d3a5a..8e30bb446 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SoftButtonManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SoftButtonManager.java @@ -35,8 +35,8 @@ package com.smartdevicelink.managers.screen; import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.managers.file.FileManager; -import com.smartdevicelink.proxy.interfaces.ISdl; /** * <strong>SoftButtonManager</strong> <br> diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java index 9f08bef36..eba3c9b2f 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java @@ -3,7 +3,7 @@ package com.smartdevicelink.managers.screen; import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; -import com.smartdevicelink.proxy.interfaces.ISdl; +import com.smartdevicelink.managers.ISdl; /** * <strong>SubscribeButtonManager</strong> <br> diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/TextAndGraphicManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/TextAndGraphicManager.java index fe216ea5f..b4154cdf0 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/TextAndGraphicManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/TextAndGraphicManager.java @@ -36,9 +36,9 @@ import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; import com.smartdevicelink.R; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.managers.file.FileManager; import com.smartdevicelink.managers.file.filetypes.SdlArtwork; -import com.smartdevicelink.proxy.interfaces.ISdl; import com.smartdevicelink.proxy.rpc.enums.FileType; /** diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java index f0895fe22..887d40e94 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java @@ -35,8 +35,8 @@ package com.smartdevicelink.managers.screen.choiceset; import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.managers.file.FileManager; -import com.smartdevicelink.proxy.interfaces.ISdl; /** * <strong>ChoiceSetManager</strong> <br> diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java index d29312cdf..b2055c976 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java @@ -34,8 +34,8 @@ package com.smartdevicelink.managers.screen.menu; import androidx.annotation.RestrictTo; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.managers.file.FileManager; -import com.smartdevicelink.proxy.interfaces.ISdl; /** * <strong>MenuManager</strong> <br> diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java index afde7404d..641ab189e 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java @@ -34,7 +34,7 @@ package com.smartdevicelink.managers.screen.menu; import androidx.annotation.RestrictTo; -import com.smartdevicelink.proxy.interfaces.ISdl; +import com.smartdevicelink.managers.ISdl; /** * <strong>VoiceCommandManager</strong> <br> diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/HapticInterfaceManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/HapticInterfaceManager.java index 78b6bb03b..36863bc99 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/HapticInterfaceManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/HapticInterfaceManager.java @@ -1,30 +1,30 @@ -/*************************************************************************************************** - * Copyright © 2017 Xevo Inc. - * Redistribution and use in source and binary forms, with or without modification, are permitted - * provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, this list of conditions - * and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. Neither the name of the copyright holder nor the names of its contributors may be used to - * endorse or promote products derived from this software without specific prior written - * permission. - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY - * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - **************************************************************************************************/ +/************************************************************************************************** + Copyright © 2017 Xevo Inc. + Redistribution and use in source and binary forms, with or without modification, are permitted + provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright notice, this list of conditions + and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, this list of + conditions and the following disclaimer in the documentation and/or other materials provided + with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors may be used to + endorse or promote products derived from this software without specific prior written + permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY + WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ package com.smartdevicelink.managers.video; import android.view.View; import android.view.ViewGroup; -import com.smartdevicelink.proxy.interfaces.ISdl; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.proxy.rpc.HapticRect; import com.smartdevicelink.proxy.rpc.Rectangle; import com.smartdevicelink.proxy.rpc.SendHapticData; @@ -45,7 +45,7 @@ import java.util.List; class HapticInterfaceManager extends BaseHapticInterfaceManager { private static final String TAG = "Haptic"; - private WeakReference<ISdl> proxyHolder; + private final WeakReference<ISdl> proxyHolder; private List<HapticRect> userHapticData; HapticInterfaceManager(ISdl proxy) { @@ -70,7 +70,7 @@ class HapticInterfaceManager extends BaseHapticInterfaceManager { } /** - * Sends haptic data found by searching for focusable and clickable Views in the view heirarchy + * Sends haptic data found by searching for focusable and clickable Views in the view hierarchy * to the HU. Should be called by Presentation's OnShowListener. * * @param root diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java index 77467f429..a8c3a74be 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java @@ -42,19 +42,18 @@ import android.view.MotionEvent; import androidx.annotation.RestrictTo; -import com.smartdevicelink.SdlConnection.SdlSession; +import com.smartdevicelink.session.SdlSession; import com.smartdevicelink.encoder.VirtualDisplayEncoder; import com.smartdevicelink.managers.BaseSubManager; import com.smartdevicelink.managers.CompletionListener; +import com.smartdevicelink.managers.ISdl; import com.smartdevicelink.managers.StreamingStateMachine; import com.smartdevicelink.managers.lifecycle.OnSystemCapabilityListener; +import com.smartdevicelink.protocol.ISdlServiceListener; import com.smartdevicelink.protocol.ProtocolMessage; import com.smartdevicelink.protocol.enums.FunctionID; import com.smartdevicelink.protocol.enums.SessionType; import com.smartdevicelink.proxy.RPCNotification; -import com.smartdevicelink.proxy.interfaces.ISdl; -import com.smartdevicelink.proxy.interfaces.ISdlServiceListener; -import com.smartdevicelink.proxy.interfaces.IVideoStreamListener; import com.smartdevicelink.proxy.rpc.DisplayCapabilities; import com.smartdevicelink.proxy.rpc.ImageResolution; import com.smartdevicelink.proxy.rpc.OnHMIStatus; @@ -73,6 +72,7 @@ import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener; import com.smartdevicelink.streaming.AbstractPacketizer; import com.smartdevicelink.streaming.IStreamListener; import com.smartdevicelink.streaming.StreamPacketizer; +import com.smartdevicelink.streaming.video.IVideoStreamListener; import com.smartdevicelink.streaming.video.RTPH264Packetizer; import com.smartdevicelink.streaming.video.SdlRemoteDisplay; import com.smartdevicelink.streaming.video.VideoStreamingParameters; @@ -89,17 +89,17 @@ import java.util.concurrent.FutureTask; @TargetApi(19) public class VideoStreamManager extends BaseVideoStreamManager { - private static String TAG = "VideoStreamManager"; + private static final String TAG = "VideoStreamManager"; private WeakReference<Context> context; private volatile VirtualDisplayEncoder virtualDisplayEncoder; private Class<? extends SdlRemoteDisplay> remoteDisplayClass = null; private SdlRemoteDisplay remoteDisplay; - private float[] touchScalar = {1.0f,1.0f}; //x, y + private final float[] touchScalar = {1.0f,1.0f}; //x, y private HapticInterfaceManager hapticManager; private SdlMotionEvent sdlMotionEvent = null; private OnHMIStatus currentOnHMIStatus; - private StreamingStateMachine stateMachine; + private final StreamingStateMachine stateMachine; private VideoStreamingParameters parameters; private IVideoStreamListener streamListener; private boolean isTransportAvailable = false; @@ -466,13 +466,13 @@ public class VideoStreamManager extends BaseVideoStreamManager { remoteDisplay.dismissPresentation(); } - FutureTask<Boolean> fTask = new FutureTask<Boolean>( new SdlRemoteDisplay.Creator(context.get(), disp, remoteDisplay, remoteDisplayClass, new SdlRemoteDisplay.Callback(){ + FutureTask<Boolean> fTask = new FutureTask<>(new SdlRemoteDisplay.Creator(context.get(), disp, remoteDisplay, remoteDisplayClass, new SdlRemoteDisplay.Callback() { @Override public void onCreated(final SdlRemoteDisplay remoteDisplay) { //Remote display has been created. //Now is a good time to do parsing for spatial data VideoStreamManager.this.remoteDisplay = remoteDisplay; - if(hapticManager != null) { + if (hapticManager != null) { remoteDisplay.getMainView().post(new Runnable() { @Override public void run() { @@ -482,17 +482,17 @@ public class VideoStreamManager extends BaseVideoStreamManager { } //Get touch scalars ImageResolution resolution = null; - if(internalInterface.getProtocolVersion().getMajor() >= 5){ //At this point we should already have the capability + if (internalInterface.getProtocolVersion().getMajor() >= 5) { //At this point we should already have the capability VideoStreamingCapability capability = null; if (internalInterface.getSystemCapabilityManager() != null) { capability = (VideoStreamingCapability) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.VIDEO_STREAMING, null, false); } - if(capability != null){ + if (capability != null) { resolution = capability.getPreferredResolution(); } } - if(resolution == null){ //Either the protocol version is too low to access video streaming caps, or they were null + if (resolution == null) { //Either the protocol version is too low to access video streaming caps, or they were null DisplayCapabilities dispCap = null; if (internalInterface.getSystemCapabilityManager() != null) { dispCap = (DisplayCapabilities) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.DISPLAY, null, false); @@ -502,11 +502,11 @@ public class VideoStreamManager extends BaseVideoStreamManager { } } - if(resolution != null){ + if (resolution != null) { DisplayMetrics displayMetrics = new DisplayMetrics(); disp.getMetrics(displayMetrics); createTouchScalar(resolution, displayMetrics); - } + } } @@ -514,7 +514,7 @@ public class VideoStreamManager extends BaseVideoStreamManager { public void onInvalidated(final SdlRemoteDisplay remoteDisplay) { //Our view has been invalidated //A good time to refresh spatial data - if(hapticManager != null) { + if (hapticManager != null) { remoteDisplay.getMainView().post(new Runnable() { @Override public void run() { @@ -523,7 +523,7 @@ public class VideoStreamManager extends BaseVideoStreamManager { }); } } - } )); + })); Thread showPresentation = new Thread(fTask); showPresentation.setName("RmtDispThread"); @@ -562,7 +562,7 @@ public class VideoStreamManager extends BaseVideoStreamManager { } List<MotionEvent> convertTouchEvent(OnTouchEvent onTouchEvent){ - List<MotionEvent> motionEventList = new ArrayList<MotionEvent>(); + List<MotionEvent> motionEventList = new ArrayList<>(); List<TouchEvent> touchEventList = onTouchEvent.getEvent(); if (touchEventList == null || touchEventList.size() == 0) return null; @@ -643,7 +643,7 @@ public class VideoStreamManager extends BaseVideoStreamManager { */ private static class SdlMotionEvent { class Pointer { - int id; + final int id; float x; float y; Pointer (int id) { @@ -657,7 +657,7 @@ public class VideoStreamManager extends BaseVideoStreamManager { } } - private CopyOnWriteArrayList<Pointer> pointers = new CopyOnWriteArrayList<>(); + private final CopyOnWriteArrayList<Pointer> pointers = new CopyOnWriteArrayList<>(); private long downTime; private long downTimeOnHMI; private long eventTime; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlPacket.java b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlPacket.java index 723af1939..707f55c01 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlPacket.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlPacket.java @@ -34,7 +34,7 @@ public class SdlPacket extends BaseSdlPacket implements Parcelable { } /* *************************************************************************************************************************************************** - * *********************************************************** Parceable Overrides ***************************************************************** + * *********************************************************** Parcelable Overrides ***************************************************************** *****************************************************************************************************************************************************/ @@ -42,7 +42,7 @@ public class SdlPacket extends BaseSdlPacket implements Parcelable { //I think this is FIFO...right? public SdlPacket(Parcel p) { this.version = p.readInt(); - this.encryption = (p.readInt() == 0) ? false : true; + this.encryption = p.readInt() != 0; this.frameType = p.readInt(); this.serviceType = p.readInt(); this.frameInfo = p.readInt(); @@ -61,7 +61,7 @@ public class SdlPacket extends BaseSdlPacket implements Parcelable { messagingVersion = p.readInt(); if (messagingVersion >= 2) { if (p.readInt() == 1) { //We should have a transport type attached - this.transportRecord = (TransportRecord) p.readParcelable(TransportRecord.class.getClassLoader()); + this.transportRecord = p.readParcelable(TransportRecord.class.getClassLoader()); } } }catch (RuntimeException e){ diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlProtocol.java b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlProtocol.java index fd6ac275f..2f5771548 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlProtocol.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlProtocol.java @@ -51,7 +51,6 @@ public class SdlProtocol extends SdlProtocolBase { private static final String TAG ="SdlProtocol"; - @SuppressWarnings("ConstantConditions") public SdlProtocol(@NonNull ISdlProtocol iSdlProtocol, @NonNull MultiplexTransportConfig config) { super(iSdlProtocol,config); this.requestedPrimaryTransports = config.getPrimaryTransports(); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/HeartbeatMonitor.java b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/HeartbeatMonitor.java index dd65cc3a4..b0fcc73f3 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/HeartbeatMonitor.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/HeartbeatMonitor.java @@ -47,7 +47,7 @@ public class HeartbeatMonitor implements IHeartbeatMonitor { private final Object listenerLock = new Object();
private int mHeartBeatInterval = HEARTBEAT_INTERVAL;
- private boolean mHeartBeatAck = true;
+ private final boolean mHeartBeatAck = true;
private IHeartbeatMonitorListener mListener;
private volatile boolean mIsAckReceived;
@@ -64,7 +64,7 @@ public class HeartbeatMonitor implements IHeartbeatMonitor { public Runnable getHeartbeatRunnable () { return heartbeatTimeoutRunnable; }
public boolean isHeartbeatReceived () { return isHeartbeatReceived; }
- private Runnable heartbeatTimeoutRunnable = new Runnable() {
+ private final Runnable heartbeatTimeoutRunnable = new Runnable() {
@Override
public void run() {
@@ -91,7 +91,7 @@ public class HeartbeatMonitor implements IHeartbeatMonitor { }
};
- private Runnable heartbeatAckTimeoutRunnable = new Runnable() {
+ private final Runnable heartbeatAckTimeoutRunnable = new Runnable() {
@Override
public void run() {
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/IHeartbeatMonitor.java b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/IHeartbeatMonitor.java index 6ad5fb001..68e8709f4 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/IHeartbeatMonitor.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/IHeartbeatMonitor.java @@ -38,19 +38,19 @@ public interface IHeartbeatMonitor { /**
* Starts the monitor. If the monitor is already started, nothing happens.
*/
- public void start();
+ void start();
/**
* Stops the monitor. Does nothing if it is already stopped.
*/
- public void stop();
+ void stop();
/**
* Returns the heartbeat messages interval.
*
* @return interval in milliseconds
*/
- public int getInterval();
+ int getInterval();
/**
* Sets the interval for sending heartbeat messages if nothing is sent over
@@ -59,34 +59,34 @@ public interface IHeartbeatMonitor { * @param interval interval in milliseconds (min/max values depend on
* concrete implementations)
*/
- public void setInterval(int interval);
+ void setInterval(int interval);
/**
* Returns the listener.
*
* @return the listener
*/
- public IHeartbeatMonitorListener getListener();
+ IHeartbeatMonitorListener getListener();
/**
* Sets the heartbeat's listener.
*
* @param listener the new listener
*/
- public void setListener(IHeartbeatMonitorListener listener);
+ void setListener(IHeartbeatMonitorListener listener);
/**
* Notifies the monitor about sent/received messages.
*/
- public void notifyTransportActivity();
+ void notifyTransportActivity();
/**
* Notifies the monitor about a received heartbeat ACK message.
*/
- public void heartbeatACKReceived();
+ void heartbeatACKReceived();
/**
* Notifies the monitor about a received heartbeat message.
*/
- public void heartbeatReceived();
+ void heartbeatReceived();
}
\ No newline at end of file diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/IHeartbeatMonitorListener.java b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/IHeartbeatMonitorListener.java index 26f3535b2..e95a6a5ec 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/IHeartbeatMonitorListener.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/protocol/heartbeat/IHeartbeatMonitorListener.java @@ -45,12 +45,12 @@ public interface IHeartbeatMonitorListener { * * @param monitor the caller */ - public void sendHeartbeat(IHeartbeatMonitor monitor); + void sendHeartbeat(IHeartbeatMonitor monitor); /** * Notifies the listener that the heartbeat timed out. * * @param monitor the caller */ - public void heartbeatTimedOut(IHeartbeatMonitor monitor); + void heartbeatTimedOut(IHeartbeatMonitor monitor); } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/SdlConnection/SdlSession.java b/android/sdl_android/src/main/java/com/smartdevicelink/session/SdlSession.java index c57743a2f..f7c1e18d6 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/SdlConnection/SdlSession.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/session/SdlSession.java @@ -30,18 +30,18 @@ * POSSIBILITY OF SUCH DAMAGE. */ -package com.smartdevicelink.SdlConnection; +package com.smartdevicelink.session; import android.content.Context; import androidx.annotation.RestrictTo; import com.smartdevicelink.exception.SdlException; +import com.smartdevicelink.protocol.ISdlServiceListener; import com.smartdevicelink.protocol.SdlPacket; import com.smartdevicelink.protocol.SdlProtocol; import com.smartdevicelink.protocol.SdlProtocolBase; import com.smartdevicelink.protocol.enums.SessionType; -import com.smartdevicelink.proxy.interfaces.ISdlServiceListener; import com.smartdevicelink.transport.MultiplexTransportConfig; import com.smartdevicelink.transport.TCPTransportConfig; import com.smartdevicelink.transport.enums.TransportType; @@ -98,7 +98,8 @@ public class SdlSession extends BaseSdlSession { } // If requiresAudioSupport is false, or a supported audio output device is available - return !requiresAudioSupport || mediaStreamingStatus.isAudioOutputAvailable(); + boolean isAudioOutputAvailable = mediaStreamingStatus != null && mediaStreamingStatus.isAudioOutputAvailable(); + return !requiresAudioSupport || isAudioOutputAvailable; } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/streaming/StreamPacketizer.java b/android/sdl_android/src/main/java/com/smartdevicelink/streaming/StreamPacketizer.java index 24608ecfe..7bd091596 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/streaming/StreamPacketizer.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/streaming/StreamPacketizer.java @@ -33,12 +33,12 @@ package com.smartdevicelink.streaming; import androidx.annotation.RestrictTo;
-import com.smartdevicelink.SdlConnection.SdlSession;
+import com.smartdevicelink.session.SdlSession;
import com.smartdevicelink.managers.CompletionListener;
import com.smartdevicelink.protocol.ProtocolMessage;
import com.smartdevicelink.protocol.enums.SessionType;
-import com.smartdevicelink.proxy.interfaces.IAudioStreamListener;
-import com.smartdevicelink.proxy.interfaces.IVideoStreamListener;
+import com.smartdevicelink.streaming.audio.IAudioStreamListener;
+import com.smartdevicelink.streaming.video.IVideoStreamListener;
import com.smartdevicelink.util.DebugTool;
import java.io.IOException;
@@ -68,14 +68,13 @@ public class StreamPacketizer extends AbstractPacketizer implements IVideoStream // a limit of the buffer size, we avoid buffer overflows when underlying transport is too slow.
private static final int MAX_QUEUE_SIZE = 256 * 1024;
- private Object mPauseLock;
+ private final Object mPauseLock = new Object();
private boolean mPaused;
private boolean isServiceProtected = false;
private BlockingQueue<ByteBufferWithListener> mOutputQueue;
public StreamPacketizer(IStreamListener streamListener, InputStream is, SessionType sType, byte rpcSessionID, SdlSession session) throws IOException {
super(streamListener, is, sType, rpcSessionID, session);
- mPauseLock = new Object();
mPaused = false;
isServiceProtected = _session.isServiceProtected(_serviceType);
if (bufferSize == 0) {
@@ -87,7 +86,7 @@ public class StreamPacketizer extends AbstractPacketizer implements IVideoStream bufferSize = BUFF_READ_SIZE;
buffer = new byte[bufferSize];
}
- mOutputQueue = new LinkedBlockingQueue<ByteBufferWithListener>(MAX_QUEUE_SIZE / bufferSize);
+ mOutputQueue = new LinkedBlockingQueue<>(MAX_QUEUE_SIZE / bufferSize);
}
public void start() throws IOException {
@@ -158,7 +157,7 @@ public class StreamPacketizer extends AbstractPacketizer implements IVideoStream }
while (frame.hasRemaining()) {
- int len = frame.remaining() > bufferSize ? bufferSize : frame.remaining();
+ int len = Math.min(frame.remaining(), bufferSize);
ProtocolMessage pm = new ProtocolMessage();
pm.setSessionID(_rpcSessionID);
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/streaming/video/SdlRemoteDisplay.java b/android/sdl_android/src/main/java/com/smartdevicelink/streaming/video/SdlRemoteDisplay.java index cdb80ef1e..e22fbb9c6 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/streaming/video/SdlRemoteDisplay.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/streaming/video/SdlRemoteDisplay.java @@ -51,7 +51,7 @@ import java.lang.reflect.Constructor; import java.util.concurrent.Callable; /** - * SdlRemoteDisplay is an abstract class that should be extended by developers to creat their remote displays. + * SdlRemoteDisplay is an abstract class that should be extended by developers to create their remote displays. * All logic for UI events can be stored in their extension. * * <br><br> <b>NOTE:</b> When the UI changes (buttons appear, layouts change, etc) the developer should call {@link #invalidate()} to alert any @@ -64,8 +64,8 @@ public abstract class SdlRemoteDisplay extends Presentation { protected Window w; protected View mainView; - protected Handler handler = new Handler(); - protected Handler uiHandler = new Handler(Looper.getMainLooper()); + protected final Handler handler = new Handler(); + protected final Handler uiHandler = new Handler(Looper.getMainLooper()); protected Callback callback; public SdlRemoteDisplay(Context context, Display display) { @@ -95,7 +95,7 @@ public abstract class SdlRemoteDisplay extends Presentation { handler.removeCallbacks(mStartRefreshTaskCallback); } - protected Runnable mStartRefreshTaskCallback = new Runnable() { + protected final Runnable mStartRefreshTaskCallback = new Runnable() { public void run() { if(mainView == null){ mainView = w.getDecorView().findViewById(android.R.id.content); @@ -108,7 +108,6 @@ public abstract class SdlRemoteDisplay extends Presentation { } }; - @SuppressWarnings("unused") public View getMainView(){ if(mainView == null){ mainView = w.getDecorView().findViewById(android.R.id.content); @@ -116,7 +115,6 @@ public abstract class SdlRemoteDisplay extends Presentation { return this.mainView; } - @SuppressWarnings("unused") public void invalidate(){ // let listeners know the view has been invalidated if(callback != null){ @@ -152,13 +150,13 @@ public abstract class SdlRemoteDisplay extends Presentation { } public static class Creator implements Callable<Boolean> { - private Context context; - private Display mDisplay; + private final Context context; + private final Display mDisplay; boolean presentationShowError = false; SdlRemoteDisplay remoteDisplay; - Class<? extends SdlRemoteDisplay> remoteDisplayClass; - private Handler uiHandler = new Handler(Looper.getMainLooper()); - private Callback callback; + final Class<? extends SdlRemoteDisplay> remoteDisplayClass; + private final Handler uiHandler = new Handler(Looper.getMainLooper()); + private final Callback callback; public Creator(Context context, Display display, SdlRemoteDisplay remoteDisplay, Class<? extends SdlRemoteDisplay> remoteDisplayClass, Callback callback){ diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/trace/TraceDeviceInfo.java b/android/sdl_android/src/main/java/com/smartdevicelink/trace/TraceDeviceInfo.java index 584b388ef..5f2452125 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/trace/TraceDeviceInfo.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/trace/TraceDeviceInfo.java @@ -29,9 +29,6 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
-/**
- *
- */
package com.smartdevicelink.trace;
import android.bluetooth.BluetoothAdapter;
@@ -145,9 +142,8 @@ public class TraceDeviceInfo { .getBondedDevices();
StringBuilder write = new StringBuilder("<btpairs>");
- Iterator<BluetoothDevice> iter = btDevices.iterator();
- while (iter.hasNext()) {
- write.append(SdlTrace.getBTDeviceInfo(iter.next()));
+ for (BluetoothDevice btDevice : btDevices) {
+ write.append(SdlTrace.getBTDeviceInfo(btDevice));
}
write.append("</btpairs>");
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBaseTransport.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBaseTransport.java index e1f138978..a8eecd484 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBaseTransport.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBaseTransport.java @@ -124,7 +124,7 @@ public abstract class MultiplexBaseTransport { } protected abstract void stop(int state); - protected void stop(int state, byte error) {}; + protected void stop(int state, byte error) {} public abstract void write(byte[] out, int offset, int count); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java index 449774d57..7995b7bde 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java @@ -29,6 +29,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; + import androidx.annotation.RequiresPermission; import com.smartdevicelink.protocol.SdlPacket; @@ -63,7 +64,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ // Key names received from the BluetoothSerialServer Handler private static final long MS_TILL_TIMEOUT = 2500; private static final int READ_BUFFER_SIZE = 4096; - private final Object THREAD_LOCK = new Object();; + private final Object THREAD_LOCK = new Object(); protected static final String SHARED_PREFS = "sdl.bluetoothprefs"; @@ -75,7 +76,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ private ConnectedThread mConnectedThread; private ConnectedWriteThread mConnectedWriteThread; Handler timeOutHandler; - Runnable socketRunable; + Runnable socketRunnable; boolean keepSocketAlive = true; /** @@ -310,7 +311,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ private void timerDelayRemoveDialog(final BluetoothSocket sock){ timeOutHandler = new Handler(); - socketRunable = new Runnable() { + socketRunnable = new Runnable() { public void run() { //Log.e(TAG, "BLUETOOTH SOCKET CONNECT TIMEOUT - ATTEMPT TO CLOSE SOCKET"); try { @@ -320,7 +321,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ } } }; - timeOutHandler.postDelayed(socketRunable, MS_TILL_TIMEOUT); + timeOutHandler.postDelayed(socketRunnable, MS_TILL_TIMEOUT); } @@ -332,7 +333,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ */ private class AcceptThread extends Thread { // The local server socket - private String mSocketType; + private final String mSocketType; final BluetoothServerSocket mmServerSocket; @SuppressLint("NewApi") @@ -350,7 +351,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ } catch (IOException e) { //Log.e(TAG, "Socket Type: " + mSocketType + "listen() failed", e); MultiplexBluetoothTransport.this.stop(STATE_ERROR, REASON_SPP_ERROR); - //Let's try to shut down this thead + //Let's try to shut down this thread }catch(SecurityException e2){ //Log.e(TAG, "<LIVIO> Security Exception in Accept Thread - "+e2.toString()); interrupt(); @@ -369,7 +370,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ " BEGIN mAcceptThread" + this); setName("AcceptThread" + mSocketType); - BluetoothSocket socket = null; + BluetoothSocket socket; int listenAttempts = 0; // Listen to the server socket if we're not connected @@ -453,8 +454,8 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ private final BluetoothDevice mmDevice; public ConnectThread(BluetoothDevice device) { mmDevice = device; - //Log.d(TAG, "Attempting to conenct to " + device.getName()); - //Log.d(TAG, "UUID to conenct to " + SERVER_UUID.toString()); + //Log.d(TAG, "Attempting to connect to " + device.getName()); + //Log.d(TAG, "UUID to connect to " + SERVER_UUID.toString()); } @@ -463,7 +464,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ try{ mAdapter.cancelDiscovery(); }catch(SecurityException e2){ - DebugTool.logError(TAG, "Don't have required permision to cancel discovery. Moving on"); + DebugTool.logError(TAG, "Don't have required permission to cancel discovery. Moving on"); } } @@ -499,13 +500,13 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ try { Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[]{int.class}); //Log.i(TAG,"connecting using createRfcommSocket"); - mmSocket = (BluetoothSocket) m.invoke(mmDevice, Integer.valueOf(1)); + mmSocket = (BluetoothSocket) m.invoke(mmDevice, 1); if (mmSocket != null) { //Looper.prepare(); timerDelayRemoveDialog(mmSocket); //Looper.loop(); mmSocket.connect(); - timeOutHandler.removeCallbacks(socketRunable); + timeOutHandler.removeCallbacks(socketRunnable); if (Looper.myLooper() != null) { Looper.myLooper().quit(); } @@ -533,7 +534,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ timerDelayRemoveDialog(mmSocket); //Looper.loop(); mmSocket.connect(); - timeOutHandler.removeCallbacks(socketRunable); + timeOutHandler.removeCallbacks(socketRunnable); if (Looper.myLooper() != null) { Looper.myLooper().quit(); } @@ -562,7 +563,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ timerDelayRemoveDialog(mmSocket); //Looper.loop(); mmSocket.connect(); - timeOutHandler.removeCallbacks(socketRunable); + timeOutHandler.removeCallbacks(socketRunnable); if (Looper.myLooper() != null) { Looper.myLooper().quit(); } @@ -584,7 +585,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ timerDelayRemoveDialog(mmSocket); //Looper.loop(); mmSocket.connect(); - timeOutHandler.removeCallbacks(socketRunable); + timeOutHandler.removeCallbacks(socketRunnable); if (Looper.myLooper() != null) { Looper.myLooper().quit(); } @@ -701,7 +702,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ private class ConnectedThread extends Thread { private final BluetoothSocket mmSocket; private final InputStream mmInStream; - SdlPsm psm; + final SdlPsm psm; public ConnectedThread(BluetoothSocket socket) { this.psm = new SdlPsm(); //Log.d(TAG, "Creating a Connected - Read Thread"); @@ -791,7 +792,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport{ Field[] f = bsSocket.getClass().getDeclaredFields(); //int channel = -1; - BluetoothSocket mySocket = null; + BluetoothSocket mySocket; for (Field field : f) { if(field.getName().equals("mSocket")){ field.setAccessible(true); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTcpTransport.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTcpTransport.java index 50d6ba051..c640f67ba 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTcpTransport.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTcpTransport.java @@ -70,7 +70,7 @@ public class MultiplexTcpTransport extends MultiplexBaseTransport { private OutputStream mOutputStream = null; private MultiplexTcpTransport.TcpTransportThread mThread = null; private WriterThread writerThread; - private Context mContext; + private final Context mContext; public MultiplexTcpTransport(int port, String ipAddress, boolean autoReconnect, Handler handler, Context context) { @@ -182,7 +182,7 @@ public class MultiplexTcpTransport extends MultiplexBaseTransport { * Internal class that represents separate thread, that does actual work, related to connecting/reading/writing data */ private class TcpTransportThread extends Thread { - SdlPsm psm; + final SdlPsm psm; public TcpTransportThread(){ psm = new SdlPsm(); } @@ -358,7 +358,7 @@ public class MultiplexTcpTransport extends MultiplexBaseTransport { private class WriterThread extends Thread { private boolean isHalted = false; - private boolean mVerbose = false; + private final boolean mVerbose = false; final BlockingQueue<OutPacket> packetQueue = new LinkedBlockingQueue<>(); @Override @@ -433,9 +433,9 @@ public class MultiplexTcpTransport extends MultiplexBaseTransport { } private final class OutPacket{ - byte[] bytes; - int count; - int offset; + final byte[] bytes; + final int count; + final int offset; OutPacket(byte[] bytes, int offset, int count){ this.bytes = bytes; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTransportConfig.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTransportConfig.java index 4d0ab0670..e2dd06521 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTransportConfig.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTransportConfig.java @@ -67,8 +67,8 @@ public class MultiplexTransportConfig extends BaseTransportConfig{ */ public static final int FLAG_MULTI_SECURITY_HIGH = 0x30; - Context context; - String appId; + final Context context; + final String appId; ComponentName service; int securityLevel; @@ -143,7 +143,7 @@ public class MultiplexTransportConfig extends BaseTransportConfig{ } /** - * Get the securitly level that will be used to verify a router service before binding + * Get the security level that will be used to verify a router service before binding * @return the set security level * @see #FLAG_MULTI_SECURITY_OFF * @see #FLAG_MULTI_SECURITY_LOW diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexUsbTransport.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexUsbTransport.java index 42bbc29a4..e76f2180c 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexUsbTransport.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexUsbTransport.java @@ -205,7 +205,7 @@ public class MultiplexUsbTransport extends MultiplexBaseTransport{ } private class ReaderThread extends Thread{ - SdlPsm psm; + final SdlPsm psm; final InputStream inputStream; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/RouterServiceValidator.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/RouterServiceValidator.java index 78f78ccb2..39f5909b5 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/RouterServiceValidator.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/RouterServiceValidator.java @@ -47,6 +47,7 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Handler; import android.os.Looper; + import androidx.annotation.NonNull; import com.smartdevicelink.util.AndroidTools; @@ -89,7 +90,7 @@ public class RouterServiceValidator { private static final String JSON_RESPONSE_OBJECT_TAG = "response"; - private static final String JSON_RESONSE_APP_VERSIONS_TAG = "versionBlacklist"; + private static final String JSON_RESPONSE_APP_VERSIONS_TAG = "versionBlacklist"; private static final String JSON_PUT_ARRAY_TAG = "installedApps"; private static final String JSON_APP_PACKAGE_TAG = "packageName"; @@ -112,7 +113,7 @@ public class RouterServiceValidator { * This will flag the validator to check for app version during debugging. * <br><br><b>NOTE: This flag will include a package check as well. */ - public static final int FLAG_DEBUG_VERSION_CHECK = 0x03; //We use 3 becuase version check will be 2, but since a version check implies a package check we do 2+1=3; + public static final int FLAG_DEBUG_VERSION_CHECK = 0x03; //We use 3 because version check will be 2, but since a version check implies a package check we do 2+1=3; public static final int FLAG_DEBUG_INSTALLED_FROM_CHECK = 0x04; public static final int FLAG_DEBUG_USE_TIMESTAMP_CHECK = 0x05; @@ -121,11 +122,10 @@ public class RouterServiceValidator { private int flags = FLAG_DEBUG_NONE; - private Context context= null; + private Context context; private boolean inDebugMode = false; - @SuppressWarnings("unused") private static boolean pendingListRefresh = false; - + private ComponentName service;//This is how we can save different routers over another in a waterfall method if we choose to. private static int securityLevel = -1; @@ -240,7 +240,7 @@ public class RouterServiceValidator { * FindRouterTask: AsyncTask to find the connected RouterService. */ class FindRouterTask extends AsyncTask<Context, Void, ComponentName> { - FindConnectedRouterCallback mCallback; + final FindConnectedRouterCallback mCallback; final Handler mHandler = new Handler(Looper.getMainLooper()); final Integer TIMEOUT_MSEC = 10000; // 10 sec @@ -356,7 +356,6 @@ public class RouterServiceValidator { || (this.inDebugMode && ((this.flags & FLAG_DEBUG_INSTALLED_FROM_CHECK) != FLAG_DEBUG_INSTALLED_FROM_CHECK)); } - @SuppressWarnings("unused") private boolean shouldOverrideTimeCheck(){ return (this.inDebugMode && ((this.flags & FLAG_DEBUG_USE_TIMESTAMP_CHECK) != FLAG_DEBUG_USE_TIMESTAMP_CHECK)); } @@ -402,17 +401,18 @@ public class RouterServiceValidator { ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); //PackageManager pm = context.getPackageManager(); - - for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { - //Log.d(TAG, service.service.getClassName()); - //We will check to see if it contains this name, should be pretty specific - if ((service.service.getClassName()).toLowerCase(Locale.US).contains(SdlBroadcastReceiver.SDL_ROUTER_SERVICE_CLASS_NAME)){ - //this.service = service.service; //This is great - if(service.started && service.restarting==0){ //If this service has been started and is not crashed - return service.service; //appPackageForComponenetName(service.service,pm); + if (manager != null) { + for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { + //Log.d(TAG, service.service.getClassName()); + //We will check to see if it contains this name, should be pretty specific + if ((service.service.getClassName()).toLowerCase(Locale.US).contains(SdlBroadcastReceiver.SDL_ROUTER_SERVICE_CLASS_NAME)) { + //this.service = service.service; //This is great + if (service.started && service.restarting == 0) { //If this service has been started and is not crashed + return service.service; //appPackageForComponenetName(service.service,pm); + } } } - } + } return null; } @@ -484,7 +484,7 @@ public class RouterServiceValidator { JSONObject trustedApps = stringToJson(getTrustedList(context)); JSONArray versions; - JSONObject app = null; + JSONObject app; try { app = trustedApps.getJSONObject(packageName); @@ -498,7 +498,7 @@ public class RouterServiceValidator { if(shouldOverrideVersionCheck()){ //If we don't care about versions, just return true return true; } - try { versions = app.getJSONArray(JSON_RESONSE_APP_VERSIONS_TAG); } catch (JSONException e) { e.printStackTrace();return false;} + try { versions = app.getJSONArray(JSON_RESPONSE_APP_VERSIONS_TAG); } catch (JSONException e) { e.printStackTrace();return false;} return verifyVersion(version, versions); } @@ -530,12 +530,12 @@ public class RouterServiceValidator { * @return */ private static List<SdlApp> findAllSdlApps(Context context){ - List<SdlApp> apps = new ArrayList<SdlApp>(); + List<SdlApp> apps = new ArrayList<>(); PackageManager packageManager = context.getPackageManager(); Intent intent = new Intent(); intent.setAction(TransportConstants.START_ROUTER_SERVICE_ACTION); List<ResolveInfo> infoList = packageManager.queryBroadcastReceivers(intent, 0); - //We want to sort our list so that we know it's the same everytime + //We want to sort our list so that we know it's the same every time Collections.sort(infoList,new Comparator<ResolveInfo>() { @Override public int compare(ResolveInfo lhs, ResolveInfo rhs) { @@ -583,7 +583,7 @@ public class RouterServiceValidator { } return false; } - + pendingListRefresh = true; //Might want to store a flag letting this class know a request is currently pending StringBuilder builder = new StringBuilder(); @@ -660,11 +660,13 @@ public class RouterServiceValidator { */ protected boolean isServiceRunning(Context context, ComponentName service){ ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - for (RunningServiceInfo serviceInfo : manager.getRunningServices(Integer.MAX_VALUE)) { - if (serviceInfo.service.equals(service)) { - return true; - } - } + if (manager != null) { + for (RunningServiceInfo serviceInfo : manager.getRunningServices(Integer.MAX_VALUE)) { + if (serviceInfo.service.equals(service)) { + return true; + } + } + } return false; } @@ -703,9 +705,9 @@ public class RouterServiceValidator { return prefAdd.commit(); } /****************************************************************** - * + * * Saving the list for later!!! - * + * ******************************************************************/ /** @@ -796,8 +798,8 @@ public class RouterServiceValidator { * Class that holds all the info we want to send/receive from the validation server */ public static class SdlApp{ - String packageName; - int versionCode; + final String packageName; + final int versionCode; SdlApp(String packageName, int versionCode){ this.packageName = packageName; @@ -805,7 +807,7 @@ public class RouterServiceValidator { } } - public static enum TrustedAppStore{ + public enum TrustedAppStore{ PLAY_STORE("com.android.vending"), AMAZON("com.amazon.venezia"), XIAOMI("com.xiaomi.market"), @@ -815,7 +817,7 @@ public class RouterServiceValidator { HIAPK("com.hiapk.marketpho"), ; - String packageString; + final String packageString; private TrustedAppStore(String packageString){ this.packageString = packageString; } @@ -830,8 +832,8 @@ public class RouterServiceValidator { return false; } TrustedAppStore[] stores = TrustedAppStore.values(); - for(int i =0; i<stores.length; i++){ - if(packageString.equalsIgnoreCase(stores[i].packageString)){ + for (TrustedAppStore store : stores) { + if (packageString.equalsIgnoreCase(store.packageString)) { return true; } } @@ -843,8 +845,8 @@ public class RouterServiceValidator { * This interface is used as a callback to know when we have either obtained a list or at least returned from our attempt. * */ - public static interface TrustedListCallback{ - public void onListObtained(boolean successful); + public interface TrustedListCallback{ + void onListObtained(boolean successful); } } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java index bad3ccc2e..3229d4abd 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java @@ -41,19 +41,14 @@ import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.hardware.usb.UsbManager; import android.os.Build; -import android.os.Debug; import android.os.Looper; import android.os.Parcelable; import android.util.AndroidRuntimeException; import androidx.annotation.CallSuper; -import com.smartdevicelink.R; import com.smartdevicelink.transport.RouterServiceValidator.TrustedListCallback; import com.smartdevicelink.transport.enums.TransportType; import com.smartdevicelink.transport.utl.SdlDeviceListener; @@ -162,7 +157,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ RouterServiceValidator.createTrustedListRequest(context, false, new TrustedListCallback(){ @Override public void onListObtained(boolean successful) { - //Log.v(TAG, "SDL enabled by router service from " + packageName + " compnent package " + componentName.getPackageName() + " - " + componentName.getClassName()); + //Log.v(TAG, "SDL enabled by router service from " + packageName + " component package " + componentName.getPackageName() + " - " + componentName.getClassName()); //List obtained. Let's start our service queuedService = componentName; finalIntent.setAction("com.sdl.noaction"); //Replace what's there so we do go into some unintended loop @@ -261,7 +256,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ new ServiceFinder(context, context.getPackageName(), new ServiceFinder.ServiceFinderCallback() { @Override public void onComplete(Vector<ComponentName> routerServices) { - runningBluetoothServicePackage = new Vector<ComponentName>(); + runningBluetoothServicePackage = new Vector<>(); runningBluetoothServicePackage.addAll(routerServices); if (runningBluetoothServicePackage.isEmpty()) { //If there isn't a service running we should try to start one @@ -350,6 +345,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ if (e != null && e instanceof AndroidRuntimeException && "android.app.RemoteServiceException".equals(e.getClass().getName()) //android.app.RemoteServiceException is a private class + && e.getMessage() != null && e.getMessage().contains("SdlRouterService")) { DebugTool.logInfo(TAG, "Handling failed startForegroundService call"); @@ -375,13 +371,15 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ return false; } if (runningBluetoothServicePackage == null) { - runningBluetoothServicePackage = new Vector<ComponentName>(); + runningBluetoothServicePackage = new Vector<>(); } else { runningBluetoothServicePackage.clear(); } ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - manager.getRunningAppProcesses(); - List<RunningServiceInfo> runningServices = null; + if (manager != null) { + manager.getRunningAppProcesses(); + } + List<RunningServiceInfo> runningServices; try { runningServices = manager.getRunningServices(Integer.MAX_VALUE); } catch (NullPointerException e) { @@ -450,7 +448,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ ServiceFinder finder = new ServiceFinder(context, context.getPackageName(), new ServiceFinder.ServiceFinderCallback() { @Override public void onComplete(Vector<ComponentName> routerServices) { - runningBluetoothServicePackage = new Vector<ComponentName>(); + runningBluetoothServicePackage = new Vector<>(); runningBluetoothServicePackage.addAll(routerServices); requestTransportStatus(context,null,true,false); } @@ -473,7 +471,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ return; } if((!lookForServices || isRouterServiceRunning(context)) && !runningBluetoothServicePackage.isEmpty()){ //So there is a service up, let's see if it's connected - final ConcurrentLinkedQueue<ComponentName> list = new ConcurrentLinkedQueue<ComponentName>(runningBluetoothServicePackage); + final ConcurrentLinkedQueue<ComponentName> list = new ConcurrentLinkedQueue<>(runningBluetoothServicePackage); final SdlRouterStatusProvider.ConnectedStatusCallback sdlBrCallback = new SdlRouterStatusProvider.ConnectedStatusCallback() { @Override diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java index 2fde0e817..8f569e7a2 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java @@ -70,12 +70,13 @@ import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.Parcelable; import android.os.RemoteException; -import androidx.annotation.NonNull; -import androidx.core.app.NotificationCompat; import android.util.AndroidRuntimeException; import android.util.SparseArray; import android.util.SparseIntArray; +import androidx.annotation.NonNull; +import androidx.core.app.NotificationCompat; + import com.smartdevicelink.R; import com.smartdevicelink.marshal.JsonRPCMarshaller; import com.smartdevicelink.protocol.BinaryFrameHeader; @@ -152,18 +153,12 @@ public class SdlRouterService extends Service{ public static final String SDL_NOTIFICATION_FAQS_PAGE = "https://smartdevicelink.com/en/guides/android/frequently-asked-questions/sdl-notifications/"; - /** - * @deprecated use {@link TransportConstants#START_ROUTER_SERVICE_ACTION} instead - */ - @Deprecated - public static final String START_SERVICE_ACTION = "sdl.router.startservice"; public static final String REGISTER_WITH_ROUTER_ACTION = "com.sdl.android.register"; /** Message types sent from the BluetoothReadService Handler */ public static final int MESSAGE_STATE_CHANGE = 1; public static final int MESSAGE_READ = 2; - @SuppressWarnings("unused") - public static final int MESSAGE_WRITE = 3; + public static final int MESSAGE_WRITE = 3; public static final int MESSAGE_DEVICE_NAME = 4; public static final int MESSAGE_LOG = 5; @@ -1023,7 +1018,6 @@ public class SdlRouterService extends Service{ return true; } - @SuppressWarnings("unused") private void pingClients(){ Message message = Message.obtain(); DebugTool.logInfo(TAG, "Pinging "+ registeredApps.size()+ " clients"); @@ -1229,6 +1223,7 @@ public class SdlRouterService extends Service{ if (e != null && e instanceof AndroidRuntimeException && "android.app.RemoteServiceException".equals(e.getClass().getName()) //android.app.RemoteServiceException is a private class + && e.getMessage() != null && e.getMessage().contains("invalid channel for service notification")) { //This is the message received in the exception for notification channel issues // Set the flag to not delete the notification channel to avoid this exception in the future @@ -1442,7 +1437,6 @@ public class SdlRouterService extends Service{ } @SuppressLint("NewApi") - @SuppressWarnings("deprecation") private void enterForeground(String content, long chronometerLength, boolean ongoing) { DebugTool.logInfo(TAG, "Attempting to enter the foreground - " + System.currentTimeMillis()); @@ -1610,12 +1604,6 @@ public class SdlRouterService extends Service{ *********************************************** Helper Methods ************************************************************** ****************************************************************************************************************************************/ - @SuppressWarnings("SameReturnValue") - @Deprecated - public String getConnectedDeviceName(){ - return null; - } - private ArrayList<TransportRecord> getConnectedTransports(){ ArrayList<TransportRecord> connected = new ArrayList<>(); if(bluetoothTransport != null && bluetoothTransport.isConnected()){ @@ -1733,11 +1721,6 @@ public class SdlRouterService extends Service{ } } - @Deprecated - public void onTransportConnected(final TransportType type){ - onTransportConnected(new TransportRecord(type,null)); - } - public void onTransportConnected(final TransportRecord record){ cancelForegroundTimeOut(); enterForeground(createConnectedNotificationText(),0,true); @@ -1798,11 +1781,6 @@ public class SdlRouterService extends Service{ } - @Deprecated - public void onTransportDisconnected(TransportType type) { - onTransportDisconnected(new TransportRecord(type,null)); - } - public void onTransportDisconnected(TransportRecord record){ cachedModuleVersion = -1; //Reset our cached version //Stop any current pings being sent before the proper state can be determined. @@ -1911,16 +1889,6 @@ public class SdlRouterService extends Service{ } } - @Deprecated - public void onTransportError(TransportType transportType){ - onTransportError(new TransportRecord(transportType,null), null); - } - - @Deprecated - public void onTransportError(TransportRecord record) { - onTransportError(record, null); - } - public void onTransportError(TransportRecord transport, Bundle errorBundle){ switch (transport.getType()){ case BLUETOOTH: @@ -2012,7 +1980,7 @@ public class SdlRouterService extends Service{ } } - @SuppressWarnings("unused") //The return false after the packet null check is not dead code. Read the getByteArray method from bundle + //The return false after the packet null check is not dead code. Read the getByteArray method from bundle public boolean writeBytesToTransport(Bundle bundle){ if(bundle == null){ return false; @@ -2385,7 +2353,7 @@ public class SdlRouterService extends Service{ * And start SDL * @return a boolean if a connection was attempted */ - @SuppressWarnings({"MissingPermission", "unused"}) + @SuppressWarnings({"MissingPermission"}) public synchronized boolean bluetoothQuerryAndConnect(){ BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); if(adapter != null && adapter.isEnabled()){ @@ -2429,29 +2397,6 @@ public class SdlRouterService extends Service{ //************************************************************************************************************************************** //********************************************************* PREFERENCES **************************************************************** //************************************************************************************************************************************** - /** - * @deprecated - * This method will set the last known bluetooth connection method that worked with this phone. - * This helps speed up the process of connecting - * @param level The level of bluetooth connecting method that last worked - * @param prefLocation Where the preference should be stored - */ - @SuppressWarnings("DeprecatedIsStillUsed") - @Deprecated - public static void setBluetoothPrefs (int level, String prefLocation) { - DebugTool.logWarning(TAG, "This method is deprecated and will not take any action"); - } - - /** - * @deprecated - * This method has been deprecated as it was bad practice. - */ - @SuppressWarnings({"DeprecatedIsStillUsed", "SameReturnValue"}) - @Deprecated - public static int getBluetoothPrefs(String prefLocation) - { - return 0; - } /** * Set the connection establishment status of the particular device @@ -2756,7 +2701,6 @@ public class SdlRouterService extends Service{ // *********************************************************** UTILITY **************************************************************** //*****************************************************************************************************************************************/ - @SuppressWarnings("unused") private void debugPacket(byte[] bytes){ //DEBUG @@ -2940,7 +2884,7 @@ public class SdlRouterService extends Service{ * @deprecated Move to the new version checking system with meta-data * */ - @SuppressWarnings({"unused", "DeprecatedIsStillUsed"}) + @SuppressWarnings({"DeprecatedIsStillUsed"}) @Deprecated static class LocalRouterService implements Parcelable{ Intent launchIntent = null; @@ -3075,24 +3019,6 @@ public class SdlRouterService extends Service{ /** * This is a simple class to hold onto a reference of a registered app. * @param appId the supplied id for this app that is attempting to register - * @param messenger the specific messenger that is tied to this app - */ - @Deprecated - public RegisteredApp(String appId, Messenger messenger){ - this.appId = appId; - this.messenger = messenger; - this.sessionIds = new Vector<Long>(); - this.queues = new ConcurrentHashMap<>(); - queueWaitHandler = new Handler(); - registeredTransports = new SparseArray<ArrayList<TransportType>>(); - awaitingSession = new Vector<>(); - setDeathNote(); - routerMessagingVersion = 1; - } - - /** - * This is a simple class to hold onto a reference of a registered app. - * @param appId the supplied id for this app that is attempting to register * @param routerMessagingVersion * @param messenger the specific messenger that is tied to this app */ @@ -3184,7 +3110,6 @@ public class SdlRouterService extends Service{ } } - @SuppressWarnings("unused") public void clearSessionIds(){ this.sessionIds.clear(); } @@ -3373,11 +3298,6 @@ public class SdlRouterService extends Service{ } } - @Deprecated - public void handleMessage(int flags, byte[] packet) { - handleMessage(flags,packet,null); - } - public void handleMessage(int flags, byte[] packet, TransportType transportType){ if(flags == TransportConstants.BYTES_TO_SEND_FLAG_LARGE_PACKET_START){ clearBuffer(); @@ -3509,17 +3429,11 @@ public class SdlRouterService extends Service{ private static final int DELAY_COEF = 1; private static final int SIZE_COEF = 1; - private byte[] bytesToWrite = null; + private byte[] bytesToWrite; private final int offset, size, priorityCoefficient; private final long timestamp; final Bundle receivedBundle; TransportType transportType; - - @SuppressWarnings("SameParameterValue") - @Deprecated - public PacketWriteTask(byte[] bytes, int offset, int size, int priorityCoefficient) { - this(bytes, offset, size, priorityCoefficient,null); - } public PacketWriteTask(byte[] bytes, int offset, int size, int priorityCoefficient, TransportType transportType){ timestamp = System.currentTimeMillis(); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterStatusProvider.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterStatusProvider.java index 6a7230fcd..0640017d5 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterStatusProvider.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterStatusProvider.java @@ -54,16 +54,16 @@ public class SdlRouterStatusProvider { private static final String TAG = "SdlRouterStateProvider"; - private Context context = null; + private Context context; private boolean isBound = false; - ConnectedStatusCallback cb = null; + ConnectedStatusCallback cb; Messenger routerServiceMessenger = null; - private ComponentName routerService = null; + private ComponentName routerService; private int flags = 0; final Messenger clientMessenger; - private ServiceConnection routerConnection= new ServiceConnection() { + private final ServiceConnection routerConnection= new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { DebugTool.logInfo(TAG, "Bound to service " + className.toString()); @@ -167,7 +167,7 @@ public class SdlRouterStatusProvider { public ClientHandler(SdlRouterStatusProvider provider){ super(Looper.getMainLooper()); - this.provider = new WeakReference<SdlRouterStatusProvider>(provider); + this.provider = new WeakReference<>(provider); } @Override @@ -183,10 +183,10 @@ public class SdlRouterStatusProvider { break; } } - }; + } public interface ConnectedStatusCallback{ - public void onConnectionStatusUpdate(boolean connected, ComponentName service, Context context); + void onConnectionStatusUpdate(boolean connected, ComponentName service, Context context); } } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TCPTransportManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TCPTransportManager.java index 3df010bcf..4381b97c6 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TCPTransportManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TCPTransportManager.java @@ -14,9 +14,9 @@ public class TCPTransportManager extends TransportManagerBase{ private static final String TAG = "TCPTransportManager"; - private TCPHandler tcpHandler; + private final TCPHandler tcpHandler; private MultiplexTcpTransport transport; - private TCPTransportConfig config; + private final TCPTransportConfig config; public TCPTransportManager(TCPTransportConfig config, TransportEventListener transportEventListener){ super(config,transportEventListener); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java index 3851ab563..dd887b6d4 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java @@ -33,13 +33,10 @@ package com.smartdevicelink.transport; import android.annotation.SuppressLint; -import android.app.ActivityManager; -import android.app.ActivityManager.RunningServiceInfo; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -49,6 +46,9 @@ import android.os.Parcelable; import android.os.RemoteException; import android.os.TransactionTooLargeException; +import androidx.annotation.NonNull; +import androidx.annotation.RestrictTo; + import com.smartdevicelink.protocol.SdlPacket; import com.smartdevicelink.transport.enums.TransportType; import com.smartdevicelink.transport.utl.ByteAraryMessageAssembler; @@ -62,9 +62,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; -import java.util.Locale; +@RestrictTo(RestrictTo.Scope.LIBRARY) public class TransportBroker { private static final String TAG = "SdlTransportBroker"; @@ -80,9 +80,9 @@ public class TransportBroker { private static final TransportRecord LEGACY_TRANSPORT_RECORD = new TransportRecord(TransportType.BLUETOOTH,null); private final String WHERE_TO_REPLY_PREFIX = "com.sdl.android."; - private String appId = null; - private String whereToReply = null; - private Context currentContext = null; + private final String appId; + private final String whereToReply; + private Context currentContext; private final Object INIT_LOCK = new Object(); private final Object MESSAGE_SEND_LOCK = new Object(); @@ -92,7 +92,7 @@ public class TransportBroker { boolean isBound = false, registeredWithRouterService = false; private String routerPackage = null, routerClassName = null; - private ComponentName routerService = null; + private ComponentName routerService; private SdlPacket bufferedPacket = null; @@ -100,7 +100,7 @@ public class TransportBroker { private ServiceConnection routerConnection; private int routerServiceVersion = 1; - private int messagingVersion = MAX_MESSAGING_VERSION; + private final int messagingVersion = MAX_MESSAGING_VERSION; private void initRouterConnection() { routerConnection = new ServiceConnection() { @@ -180,11 +180,11 @@ public class TransportBroker { * Handler of incoming messages from service. */ static class ClientHandler extends Handler { - ClassLoader loader; + final ClassLoader loader; final WeakReference<TransportBroker> provider; public ClientHandler(TransportBroker provider) { - this.provider = new WeakReference<TransportBroker>(provider); + this.provider = new WeakReference<>(provider); loader = getClass().getClassLoader(); } @@ -235,7 +235,6 @@ public class TransportBroker { broker.registeredWithRouterService = false; broker.enableLegacyMode(true); //We call this so we can start the process of legacy connection - //onHardwareDisconnected(TransportType.BLUETOOTH); broker.onLegacyModeEnabled(); break; default: @@ -243,7 +242,7 @@ public class TransportBroker { DebugTool.logWarning(TAG, "Registration denied from router service. Reason - " + msg.arg1); break; } - ; + break; @@ -251,7 +250,6 @@ public class TransportBroker { if (msg.arg1 == TransportConstants.UNREGISTRATION_RESPONSE_SUCESS) { // We've been unregistered. Now what? - } else { //We were denied our unregister request to the router service, let's see why DebugTool.logWarning(TAG, "Unregister request denied from router service. Reason - " + msg.arg1); //Do we care? @@ -263,7 +261,7 @@ public class TransportBroker { DebugTool.logWarning(TAG, "Received packet message from router service with no bundle"); return; } - //So the intent has a packet with it. PEFRECT! Let's send it through the library + //So the intent has a packet with it. PERFECT! Let's send it through the library int flags = bundle.getInt(TransportConstants.BYTES_TO_SEND_FLAGS, TransportConstants.BYTES_TO_SEND_FLAG_NONE); if (bundle.containsKey(TransportConstants.FORMED_PACKET_EXTRA_NAME)) { @@ -310,10 +308,8 @@ public class TransportBroker { broker.bufferedPacket = null; } } - //} - //} } else { - DebugTool.logWarning(TAG, "Flase positive packet reception"); + DebugTool.logWarning(TAG, "False positive packet reception"); } break; case TransportConstants.HARDWARE_CONNECTION_EVENT: @@ -356,7 +352,7 @@ public class TransportBroker { } /** - * Handle a potential connection event. This will adapt legacy router service implementaions + * Handle a potential connection event. This will adapt legacy router service implementations * into the new multiple transport scheme. * @param bundle the received bundle from the router service * @param broker reference to the transport broker that this handler exists @@ -393,25 +389,19 @@ public class TransportBroker { @SuppressLint("SimpleDateFormat") - public TransportBroker(Context context, String appId, ComponentName service) { + public TransportBroker(@NonNull Context context, @NonNull String appId, @NonNull ComponentName service) { synchronized (INIT_LOCK) { + this.appId = appId; + currentContext = context; + this.routerService = service; + clientMessenger = new Messenger(new ClientHandler(this)); initRouterConnection(); - //So the user should have set the AppId, lets define where the intents need to be sent + + //So the user should have set the AppId, lets define where the messages need to be sent SimpleDateFormat s = new SimpleDateFormat("hhmmssss"); //So we have a time stamp of the event String timeStamp = s.format(new Date(System.currentTimeMillis())); - if (whereToReply == null) { - if (appId == null) { //This should really just throw an error - whereToReply = WHERE_TO_REPLY_PREFIX + "." + timeStamp; - } else { - whereToReply = WHERE_TO_REPLY_PREFIX + appId + "." + timeStamp; - } - } - //this.appId = appId.concat(timeStamp); - this.appId = appId; - currentContext = context; - //Log.d(TAG, "Registering our reply receiver: " + whereToReply); - this.routerService = service; + whereToReply = WHERE_TO_REPLY_PREFIX + appId + "." + timeStamp; } } @@ -422,7 +412,7 @@ public class TransportBroker { //Log.d(TAG, "Starting up transport broker for " + whereToReply); synchronized (INIT_LOCK) { if (currentContext == null) { - throw new IllegalStateException("This instance can't be started since it's local reference of context is null. Ensure when suppling a context to the TransportBroker that it is valid"); + throw new IllegalStateException("This instance can't be started since it's local reference of context is null. Ensure when supplying a context to the TransportBroker that it is valid"); } if (routerConnection == null) { initRouterConnection(); @@ -479,31 +469,11 @@ public class TransportBroker { public void onServiceUnregsiteredFromRouterService(int unregisterCode) { } - @Deprecated - public void onHardwareDisconnected(TransportType type) { - stop(); - } public void onHardwareDisconnected(TransportRecord record, List<TransportRecord> connectedTransports) { } - /** - * WILL NO LONGER BE CALLED - * - * @param type - * @return - */ - @Deprecated - public boolean onHardwareConnected(TransportType type) { - synchronized (INIT_LOCK) { - if (routerServiceMessenger == null) { - return false; - } - return true; - } - } - public boolean onHardwareConnected(List<TransportRecord> transports) { synchronized (INIT_LOCK) { if (routerServiceMessenger == null && transports != null && transports.size() > 0) { @@ -525,31 +495,7 @@ public class TransportBroker { return routerServiceVersion; } - /** - * We want to check to see if the Router service is already up and running - * - * @param context - * @return - */ - private boolean isRouterServiceRunning(Context context) { - if (context == null) { - - return false; - } - ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { - //We will check to see if it contains this name, should be pretty specific - if ((service.service.getClassName()).toLowerCase(Locale.US).contains(SdlBroadcastReceiver.SDL_ROUTER_SERVICE_CLASS_NAME)) { - this.routerClassName = service.service.getClassName(); - this.routerPackage = service.service.getPackageName(); - return true; - } - } - return false; - } - - - public boolean sendPacketToRouterService(SdlPacket packet) { //We use ints because that is all that is supported by the outputstream class + public boolean sendPacketToRouterService(SdlPacket packet) { //We use ints because that is all that is supported by the output stream class //Log.d(TAG,whereToReply + "Sending packet to router service"); if (routerServiceMessenger == null) { @@ -617,16 +563,14 @@ public class TransportBroker { } //Make sure we know where to bind to if (this.routerService == null) { - if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.O) && !isRouterServiceRunning(getContext())) {//We should be able to ignore this case because of the validation now - DebugTool.logInfo(TAG, whereToReply + " found no router service. Shutting down."); - this.onHardwareDisconnected(null); - return false; - } - } else {//We were already told where to bind. This should be the case. - this.routerClassName = this.routerService.getClassName(); - this.routerPackage = this.routerService.getPackageName(); + DebugTool.logInfo(TAG, whereToReply + " has no router service reference; should shut down."); + return false; } + this.routerClassName = this.routerService.getClassName(); + this.routerPackage = this.routerService.getPackageName(); + + if (!sendBindingIntent()) { DebugTool.logError(TAG, "Something went wrong while trying to bind with the router service."); SdlBroadcastReceiver.queryForConnectedService(currentContext); @@ -730,7 +674,7 @@ public class TransportBroker { */ private static boolean legacyModeEnabled = false; - private static Object LEGACY_LOCK = new Object(); + private static final Object LEGACY_LOCK = new Object(); protected void enableLegacyMode(boolean enable) { synchronized (LEGACY_LOCK) { diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java index c653c7d93..13edfb5f1 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java @@ -55,7 +55,6 @@ import com.smartdevicelink.util.DebugTool; import java.lang.ref.WeakReference; import java.util.List; -@SuppressWarnings("unused") public class TransportManager extends TransportManagerBase{ private static final String TAG = "TransportManager"; @@ -97,7 +96,7 @@ public class TransportManager extends TransportManagerBase{ @Override public void onFinishedValidation(boolean valid, ComponentName name) { DebugTool.logInfo(TAG, "onFinishedValidation valid=" + valid + "; name=" + ((name == null)? "null" : name.getPackageName())); - if (valid) { + if (valid && name != null) { mConfig.service = name; transport = new TransportBrokerImpl(contextWeakReference.get(), mConfig.appId, mConfig.service); DebugTool.logInfo(TAG, "TransportManager start was called; transport=" + transport); @@ -244,7 +243,7 @@ public class TransportManager extends TransportManagerBase{ String[] split = address.split(":"); if(split.length == 2) { bundle.putString(ControlFrameTags.RPC.TransportEventUpdate.TCP_IP_ADDRESS, split[0]); - bundle.putInt(ControlFrameTags.RPC.TransportEventUpdate.TCP_PORT, Integer.valueOf(split[1])); + bundle.putInt(ControlFrameTags.RPC.TransportEventUpdate.TCP_PORT, Integer.parseInt(split[1])); } //else {something went wrong;} }else{ bundle.putString(ControlFrameTags.RPC.TransportEventUpdate.TCP_IP_ADDRESS, address); @@ -450,7 +449,7 @@ public class TransportManager extends TransportManagerBase{ String action = intent.getAction(); if(BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)){ exitLegacyMode("Bluetooth disconnected"); - }else if(action.equalsIgnoreCase(BluetoothAdapter.ACTION_STATE_CHANGED)){ + }else if(action != null && action.equalsIgnoreCase(BluetoothAdapter.ACTION_STATE_CHANGED)){ int bluetoothState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1); if(bluetoothState == BluetoothAdapter.STATE_TURNING_OFF || bluetoothState == BluetoothAdapter.STATE_OFF){ DebugTool.logInfo(TAG, "Bluetooth is shutting off, exiting legacy mode."); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/UsbTransferProvider.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/UsbTransferProvider.java index cd351a622..0b0c9b88d 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/UsbTransferProvider.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/UsbTransferProvider.java @@ -71,7 +71,7 @@ public class UsbTransferProvider { ParcelFileDescriptor usbPfd; Bundle usbInfoBundle; - private ServiceConnection routerConnection= new ServiceConnection() { + private final ServiceConnection routerConnection= new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { DebugTool.logInfo(TAG, "Bound to service " + className.toString()); @@ -212,7 +212,7 @@ public class UsbTransferProvider { public ClientHandler(UsbTransferProvider provider){ super(Looper.getMainLooper()); - this.provider = new WeakReference<UsbTransferProvider>(provider); + this.provider = new WeakReference<>(provider); } @Override diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/ByteArrayMessageSpliter.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/ByteArrayMessageSpliter.java index 9ab93aea9..670711709 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/ByteArrayMessageSpliter.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/ByteArrayMessageSpliter.java @@ -50,11 +50,11 @@ public class ByteArrayMessageSpliter { boolean firstPacket; ByteArrayInputStream stream; int bytesRead; - int what; - String appId; + final int what; + final String appId; byte[] buffer; - int orginalSize; - int priorityCoef; + final int orginalSize; + final int priorityCoef; int routerServiceVersion = 1; TransportRecord transportRecord; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java index b9bd8bb12..1ca1f8d97 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java @@ -39,6 +39,7 @@ import android.content.SharedPreferences; import android.os.Handler; import android.os.Looper; import android.os.Message; + import androidx.annotation.NonNull; import com.smartdevicelink.transport.MultiplexBaseTransport; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/util/AndroidTools.java b/android/sdl_android/src/main/java/com/smartdevicelink/util/AndroidTools.java index 0e75acd77..ea2bf709f 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/util/AndroidTools.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/util/AndroidTools.java @@ -84,7 +84,7 @@ public class AndroidTools { public static HashMap<String,ResolveInfo> getSdlEnabledApps(Context context, String myPackageName){ Intent intent = new Intent(TransportConstants.START_ROUTER_SERVICE_ACTION); List<ResolveInfo> infos = context.getPackageManager().queryBroadcastReceivers(intent, 0); - HashMap<String,ResolveInfo> sdlMultiList = new HashMap<String,ResolveInfo>(); + HashMap<String,ResolveInfo> sdlMultiList = new HashMap<>(); for(ResolveInfo info: infos){ if(info.activityInfo.applicationInfo.packageName.equals(myPackageName)){ continue; //Ignoring my own package @@ -111,7 +111,7 @@ public class AndroidTools { if(packageManager != null) { for (ResolveInfo info : resolveInfoList) { - PackageInfo packageInfo = null; + PackageInfo packageInfo; try { packageInfo = packageManager.getPackageInfo(info.serviceInfo.packageName, 0); sdlAppInfoList.add(new SdlAppInfo(info, packageInfo)); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/util/HttpRequestTask.java b/android/sdl_android/src/main/java/com/smartdevicelink/util/HttpRequestTask.java index 44125dff2..1cc0b514c 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/util/HttpRequestTask.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/util/HttpRequestTask.java @@ -146,7 +146,7 @@ public class HttpRequestTask extends AsyncTask<String, String, String> { } return null; } - String response = null; + String response; response = buffer.toString(); //send to post execute @@ -199,12 +199,12 @@ public class HttpRequestTask extends AsyncTask<String, String, String> { * Called when HTTP request is successfully completed. * @param response The response to the HTTP request. */ - public abstract void httpCallComplete(String response); + void httpCallComplete(String response); /** * Called when HTTP request failed. * @param statusCode The HTTP failure code. */ - public abstract void httpFailure(int statusCode); + void httpFailure(int statusCode); } } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java b/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java index 6553da286..d88912c62 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java @@ -113,8 +113,8 @@ public class IntegrationValidator { if (permissionInfos != null && permissionInfos.length > 0) { String permissionInfo; - for (int i = 0; i < permissionInfos.length; i++) { - permissionInfo = permissionInfos[i]; + for (String info : permissionInfos) { + permissionInfo = info; permissionList.remove(permissionInfo); } } @@ -147,9 +147,9 @@ public class IntegrationValidator { if (receivers != null && receivers.length > 0) { ActivityInfo receiver; - for (int i = 0; i < receivers.length; i++) { + for (ActivityInfo activityInfo : receivers) { - receiver = receivers[i]; + receiver = activityInfo; if (receiver != null) { int j = 0; for (ResolveInfo sdlReceiver : sdlReceivers) { diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/util/MediaStreamingStatus.java b/android/sdl_android/src/main/java/com/smartdevicelink/util/MediaStreamingStatus.java index 84c21f761..e7a4b69d6 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/util/MediaStreamingStatus.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/util/MediaStreamingStatus.java @@ -43,6 +43,7 @@ import android.content.IntentFilter; import android.media.AudioDeviceInfo; import android.media.AudioManager; import android.os.Build; + import androidx.annotation.NonNull; import java.lang.ref.WeakReference; @@ -63,9 +64,9 @@ public class MediaStreamingStatus { private static final Object BROADCAST_RECEIVER_LOCK = new Object(); private boolean broadcastReceiverValid = true; - private WeakReference<Context> contextWeakReference; + private final WeakReference<Context> contextWeakReference; private Callback callback; - private List<String> intentList; + private final List<String> intentList; public MediaStreamingStatus(@NonNull Context context, @NonNull Callback callback){ contextWeakReference = new WeakReference<>(context); @@ -115,11 +116,13 @@ public class MediaStreamingStatus { // If API level 23+ audio manager can iterate over all current devices to see if a supported // device is present. if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ - AudioDeviceInfo[] deviceInfos = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS); - if(deviceInfos != null) { - for (AudioDeviceInfo deviceInfo : deviceInfos) { - if (deviceInfo != null && isSupportedAudioDevice(deviceInfo.getType())) { - return true; + if (audioManager != null) { + AudioDeviceInfo[] deviceInfos = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS); + if (deviceInfos != null) { + for (AudioDeviceInfo deviceInfo : deviceInfos) { + if (deviceInfo != null && isSupportedAudioDevice(deviceInfo.getType())) { + return true; + } } } } @@ -127,7 +130,11 @@ public class MediaStreamingStatus { } //This means the SDK version is < M, and our min is 8 so this API is always available - return audioManager.isBluetoothA2dpOn(); + if (audioManager != null) { + return audioManager.isBluetoothA2dpOn(); + } + + return false; } /** @@ -268,7 +275,7 @@ public class MediaStreamingStatus { } } - private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { + private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { synchronized (BROADCAST_RECEIVER_LOCK) { diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/util/SdlAppInfo.java b/android/sdl_android/src/main/java/com/smartdevicelink/util/SdlAppInfo.java index 0a08a3f16..35c852c09 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/util/SdlAppInfo.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/util/SdlAppInfo.java @@ -53,7 +53,7 @@ public class SdlAppInfo { String packageName; ComponentName routerServiceComponentName; - int routerServiceVersion = 4; //We use this as a default and assume if the number doens't exist in meta data it is because the app hasn't updated. + int routerServiceVersion = 4; //We use this as a default and assume if the number doesn't exist in meta data it is because the app hasn't updated. boolean isCustomRouterService = false; long lastUpdateTime; diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/util/ServiceFinder.java b/android/sdl_android/src/main/java/com/smartdevicelink/util/ServiceFinder.java index 9265eb345..0848446ef 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/util/ServiceFinder.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/util/ServiceFinder.java @@ -91,7 +91,7 @@ public class ServiceFinder { } - BroadcastReceiver mainServiceReceiver = new BroadcastReceiver() { + final BroadcastReceiver mainServiceReceiver = new BroadcastReceiver() { private final Object LIST_LOCK = new Object(); @Override |