Subscription preference

Notification emails are sent to your Samsung account email address.

* Email : anonymous@samsung.com

  

Close

SAP - acceptServiceConnectionRequest(peerAgent) causing Exception (Android Provider Tizen Consumer)

Forums View
Started by Newbie fredrik.hansson , 450 Seed Jan 03, 2018 16:58 Replies : 5 View : 830 Likes : 0
Hi,

I have just started developing a Gear S3 companion application (native) and an Android application and I want to use the Samsung Accessory Protocol in order to communicate between the gear app and the Android app. I have been studying the SAP Programing Guide and I have been looking on the Sample apps provided with the SDK.
I would like to point out that I am a newbee regarding SAP but I have been developing Android and Tizen application for a number of years now so I am not a entirely newbee regarding this.

Anyway, I have followed the sample code and implemented a small test application on both sides and it can communicate with each other up to the time when my Android application (which is the SAP provider) want to call the accepptServiceConnectionRequest(peerAgent) from inside the onAuthenticationResponse(SAPeerAgent peerAgent, SAAuthenticationToken authToken, int error).
This call is causing an exception in the background thread with the following stack trace:

Code

01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168): Exception in background thread:MyTestApp
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168): java.lang.IllegalArgumentException: Invalid socketClass param:null
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168):    at com.samsung.android.sdk.accessory.SAAgent.a(Unknown Source)
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168):    at com.samsung.android.sdk.accessory.SAAgent.e(Unknown Source)
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168):    at com.samsung.android.sdk.accessory.SAAgent.b(Unknown Source)
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168):    at com.samsung.android.sdk.accessory.SAAgent$b.handleMessage(Unknown Source)
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168):    at android.os.Handler.dispatchMessage(Handler.java:102)
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168):    at android.os.Looper.loop(Looper.java:154)
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168):    at android.os.HandlerThread.run(HandlerThread.java:61)
01-03 16:39:57.749 D/AndroidRuntime( 1168): Shutting down VM
--------- beginning of crash
01-03 16:39:57.750 E/AndroidRuntime( 1168): FATAL EXCEPTION: main
01-03 16:39:57.750 E/AndroidRuntime( 1168): Process: com.fr_han.mytestapp, PID: 1168
01-03 16:39:57.750 E/AndroidRuntime( 1168): java.lang.RuntimeException: java.lang.IllegalArgumentException: Invalid socketClass param:null
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at com.samsung.android.sdk.accessory.SAAgent$1$1.run(Unknown Source)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at android.os.Handler.handleCallback(Handler.java:751)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at android.os.Handler.dispatchMessage(Handler.java:95)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at android.os.Looper.loop(Looper.java:154)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at android.app.ActivityThread.main(ActivityThread.java:6692)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at java.lang.reflect.Method.invoke(Native Method)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
01-03 16:39:57.750 E/AndroidRuntime( 1168): Caused by: java.lang.IllegalArgumentException: Invalid socketClass param:null
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at com.samsung.android.sdk.accessory.SAAgent.a(Unknown Source)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at com.samsung.android.sdk.accessory.SAAgent.e(Unknown Source)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at com.samsung.android.sdk.accessory.SAAgent.b(Unknown Source)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at com.samsung.android.sdk.accessory.SAAgent$b.handleMessage(Unknown Source)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at android.os.Handler.dispatchMessage(Handler.java:102)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at android.os.Looper.loop(Looper.java:154)
01-03 16:39:57.750 E/AndroidRuntime( 1168):     at android.os.HandlerThread.run(HandlerThread.java:61)

From the API guide I read that" "IllegalArgumentException - Thrown if the peerAgent argument passed is null or invalid" from the called function. I have checked with the debuger and I know that the peerAgent passed to this call is not null. So, I then guessed that it has to be invalid, But printing the information from the peerAgent before calling the function I could see: 

Code

01-03 16:39:57.744 D/MyTestApp( 1168): Peer agent app name: AuthToken
01-03 16:39:57.744 D/MyTestApp( 1168): Peer agent peer ID: 50829
01-03 16:39:57.744 D/MyTestApp( 1168): Peer agent profile version: 1.0
01-03 16:39:57.744 D/MyTestApp( 1168): Peer agent feature accessory: true
01-03 16:39:57.744 D/MyTestApp( 1168): Peer agent feature message: false
01-03 16:39:57.744 D/MyTestApp( 1168): Accessory ID: SAMSUNG_ACCESSARY__84:97:66:E3:78:42
01-03 16:39:57.744 D/MyTestApp( 1168): Accessory address: 84:97:66:E3:78:42
01-03 16:39:57.744 D/MyTestApp( 1168): Accessory name: GEAR_SERIES
01-03 16:39:57.744 D/MyTestApp( 1168): Accessory product ID: SM-R770
01-03 16:39:57.745 D/MyTestApp( 1168): Accessory vendor ID: SAMSUNG
01-03 16:39:57.745 D/MyTestApp( 1168): Accessory transport type: 2

Which to me looks just fine. I have been trying to figure out what is wrong by looking at examples, testing and debuging but I have no clue at all why it do not work. So I hope someone here know more about SAP than me and hopefully can help me figure it out!
 
I have attached to files. One for the Android application and one for the Tizen application. Each contains the interesting partf ot the source code as well as a copy of the accessory profile and the manifest.

Please let me know if you need more information or want me to test something. I really need the help!

Best regards,
Fredrik
 

File Attachments
Post Reply
Board View
Samsung Developer iqbal.sublime , 37150 Seed Jan 04, 2018 06:44 Post #1 0
Something is sending null ..... 
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168): java.lang.IllegalArgumentException: Invalid socketClass param:null
I think you should follow sample app from sap sdk. 
Post Reply
Board View
Newbie fredrik.hansson , 450 Seed Jan 04, 2018 07:35 Post #2 0


This content has been quoted from iqbal.sublime’s thought.

Something is sending null ..... 
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168): java.lang.IllegalArgumentException: Invalid socketClass param:null
I think you should follow sample app from sap sdk. 

Thanks for your reply!
Yes it indeed look so from the exception. But I cannot understand why since it looks alright when inspecting it. And also, I have followed the sample app from SAP SDK.
My code is almost exactly a copy from the samples. 
But I guess that I am missing something, but that is what I need help to figure out. 

Post Reply
Board View
Samsung Developer iqbal.sublime , 37150 Seed Jan 04, 2018 08:10 Post #3 0


This content has been quoted from fredrik.hansson’s thought.

 



This content has been quoted from iqbal.sublime’s thought.

Something is sending null ..... 
01-03 16:39:57.748 E/[SA_SDK]SAAgent( 1168): java.lang.IllegalArgumentException: Invalid socketClass param:null
I think you should follow sample app from sap sdk. 

Thanks for your reply!
Yes it indeed look so from the exception. But I cannot understand why since it looks alright when inspecting it. And also, I have followed the sample app from SAP SDK.
My code is almost exactly a copy from the samples. 
But I guess that I am missing something, but that is what I need help to figure out. 

 

Did you able to run samples succesfully? 
Post Reply
Board View
Newbie fredrik.hansson , 450 Seed Jan 04, 2018 09:52 Post #4 0
Nevermind, I found what the problem was.
I had missed to pass the class which extends SASocket to the SAAgent constructor. It was: 
Code

public MyTestService() {
  super("MyTestApp");
}

But it should have been:

Code
public MyTestService() {
  super("MyTestApp", SASocketExtensionClass.class);
}
Now my code works as expected.
Thanks for your time!
 
 

Post Reply
Board View
Samsung Developer iqbal.sublime , 37150 Seed Jan 04, 2018 12:21 Post #5 0


This content has been quoted from fredrik.hansson’s thought.

Nevermind, I found what the problem was.
I had missed to pass the class which extends SASocket to the SAAgent constructor. It was: 

Code

public MyTestService() {
  super("MyTestApp");
}

But it should have been:

Code
public MyTestService() {
  super("MyTestApp", SASocketExtensionClass.class);
}
Now my code works as expected.
Thanks for your time!
 
 

 

Great!! 
Post Reply