Java Question Skype For Business B4A Library

yo3ggx

Active Member
Licensed User
Longtime User
Skype for Business SDK for Android is availabe for free from Microsoft:
https://msdn.microsoft.com/en-us/skype/appsdk/skypeappsdk

I'm trying to build a B4A library based on that SDK in Eclipse.
I was able to compile the examples directly in Android Studio, but building a library in Eclipse based on this seems to be a difficult job.
The SDK contains several aar Android libraries.
As described here:
https://www.b4x.com/android/forum/threads/android-library-format-aar.52116/
the aar libraries are complex archives.
I have tried to follow Erel advices from here:
https://www.b4x.com/android/forum/threads/import-library-aar-android-studio.60259/#post-380056
but the arr libs contains not only jar files (class.jar), but resources, JNI libs (.so files) and other java (jar) libraries.

Putting the so files in additional\armeabi fodler and importing all other jars (clasess and java libs) does not work.

Any other hints on how to go further?

Thank you.
Dan
 

yo3ggx

Active Member
Licensed User
Longtime User
My experience with Java is very limited.
I've made some progress on this, but not enough to have a functional library. I was able to create the library structure in Eclipse by:
- unzipping the aar libraries and using class.jar files as external libraries in my project (each one renamed using the name of the aar file)
- .so files from aar files moved to /additional/armeabi project subfolder
- jar libraries used by the aar files moved to /libs project subfolder
- using the ConversationHelper.java class in my project source
- creating a wrapper class (Skype4Business.java) with just some basic functionalities (sdk initialization and joining a S4B conference)

I've done the library compiling using Simple Library Compiler. The project does not give any error in Eclipse, or when compiling in B4A. The obtained jar file contain the .so files but not the libraries used by the previous aar files, so when I try to run it I get a missing class error.

You can find the B4A library files here:
https://www.yo3ggx.ro/s4b/s4b.zip
and the small B4A sample here:
https://www.yo3ggx.ro/s4b/b4a.zip

The error I get in B4A is:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/microsoft/office/sfb/appsdk/Application;

This is a class available in the library.

Any help is highly appreciated.

Thank you.
Dan
 
Last edited:

yo3ggx

Active Member
Licensed User
Longtime User
Some more progress.
I was able to remove this error adding the following line in the library:
@DependsOn(values={"SkypeForBusiness"})

Now there is an issue loading the native library.
java.lang.RuntimeException: Failed to load native library
at com.microsoft.office.sfb.appsdk.Application.LoadNativeLibrary(Application.java:94)

The line looks like the following:
System.loadLibrary("acomo");

The file libacomo.so is available in /additional/armeabi folder.
 

DonManfred

Expert
Licensed User
Longtime User
check the content of your generated jar with zip. Is the .so inside it?
 

yo3ggx

Active Member
Licensed User
Longtime User
Yes, libacomo.so is in the armeabi subfolder of the jar archive.

I've moved the libacomo.so file in the library workspace from /additional/armeabi to /additional/lib/armeabi and now I don't get any error, but the application just exits when the library class initialization is done.
 
Last edited:

yo3ggx

Active Member
Licensed User
Longtime User
Unfortunately I'm now over the B4A Bridge and the unfiltered log shows nothing too. I will check later in the evening over USB.
 

yo3ggx

Active Member
Licensed User
Longtime User
It seems that the crash comes from the first line where the SDK is initialized.
In the sample Android application (written in java under Android Studio), the initialization is done like that:

B4X:
Application application = null;
this.application = Application.getInstance(this.getApplication().getApplicationContext());

In my initialization routine from the library wrapper I'm using:

B4X:
public void Initialize(BA ba, String displayName,
            String meetingUrl){
  this.ba = ba;
  this.application = Application.getInstance(ba.activity.getApplicationContext());
  ...

Is this the right way to do it?
 

yo3ggx

Active Member
Licensed User
Longtime User
Added @ActivityObject() with the same result.

"Application" is a class from the SDK, not my application (see the code from the sample).
 

yo3ggx

Active Member
Licensed User
Longtime User
Me too. I'm talking about the code in my message #8.
I will check later the log when possible to connect directly over USB.

When the activity is loaded, the Application class is initialized as follows:
B4X:
Application application = null;
this.application = Application.getInstance(this.getApplication().getApplicationContext());

This one works, but I don't know how to implement the same in the wrapper.
 

DonManfred

Expert
Licensed User
Longtime User
The point is that you need the applicationcontext. The context of the running task.
Talking about a b4a which is running you need to get the applicationcontext from the b4a app i guess.

i would try the code i posted in #10 to see if this works...
 

yo3ggx

Active Member
Licensed User
Longtime User
The problem with #10 is that "BA.applicationContext" is not an "Application" class required by "this.application", but a Context.

The closest for the library to the one that works in the example will be:
B4X:
public void Initialize(BA ba, String displayName,
            String meetingUrl){
          

        this.ba = ba;
        this.application = Application.getInstance(ba.activity.getApplication().getApplicationContext());
.......      
       }
but still does not work.
 
Last edited:

yo3ggx

Active Member
Licensed User
Longtime User
Update:
Connected over USB and still no error in the log. If I deselect Filter, I get several errors related ti this library.

This is an extract from the full log just before the application closes without any error in the IDE.
B4X:
Trying to load lib /data/app-lib/b4a.example-2/libacomo.so 0x420e8f00
Added shared lib /data/app-lib/b4a.example-2/libacomo.so 0x420e8f00
findClass com/microsoft/media/RtcPalConfig loader 0x0
findClass com/microsoft/media/RtcPalEnvironment loader 0x0
findClass com/microsoft/media/NetworkPal loader 0x0
findClass com/microsoft/media/ifaddrs loader 0x0
findClass com/microsoft/media/MMVRSurfaceView loader 0x0
findClass com/microsoft/media/MMVRSurfaceView loader 0x0
findClass com/microsoft/media/NTLMEngineImpl loader 0x0
JNI_OnLoad: JNI_Init complete
VFY: unable to resolve static field 2535 (app_name) in Lcom/microsoft/office/lync/api/R$string;
VFY: replacing opcode 0x60 at 0x00a3
TracingEnabled is set to true: on Trace initialization.
java.lang.NoClassDefFoundError: com.microsoft.office.lync.api.R$string
    at com.microsoft.office.lync.tracing.Trace.initialize(Trace.java:107)
    at com.microsoft.office.lync.tracing.Trace.initialize(Trace.java:83)
    at com.microsoft.office.sfb.appsdk.Application.initialize(Application.java:63)
    at com.microsoft.office.sfb.appsdk.Application.getInstance(Application.java:108)
    at ro.yo3ggx.s4b.Skype4Business.Initialize(Skype4Business.java:72)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at anywheresoftware.b4a.shell.Shell.runVoidMethod(Shell.java:747)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:342)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:246)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:134)
    at anywheresoftware.b4a.BA$2.run(BA.java:328)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5103)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
    at dalvik.system.NativeStart.main(Native Method)
An error occurred:
(Line: 43) End Sub
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
java.net.SocketException: Socket closed
    at libcore.io.Posix.recvfromBytes(Native Method)
    at libcore.io.Posix.recvfrom(Posix.java:141)
    at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
    at libcore.io.IoBridge.recvfrom(IoBridge.java:555)
    at java.net.PlainSocketImpl.read(PlainSocketImpl.java:489)
    at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
    at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:241)
    at java.io.InputStream.read(InputStream.java:162)
    at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:227)
    at anywheresoftware.b4a.shell.ShellConnector.readControlData(ShellConnector.java:190)
    at anywheresoftware.b4a.shell.ShellConnector.connect(ShellConnector.java:185)
    at anywheresoftware.b4a.shell.ShellConnector.run(ShellConnector.java:119)
    at java.lang.Thread.run(Thread.java:841)
Finishing activity token=Token{432d8360 ActivityRecord{42405760 u0 b4a.example/.main t7}} r=, result=0, data=null, reason=app-request
Moving to PAUSING: ActivityRecord{42405760 u0 b4a.example/.main t7 f}
GC_FOR_ALLOC freed 975K, 29% free 21548K/30032K, paused 143ms, total 151ms
Grow heap (frag case) to 23.772MB for 566416-byte allocation
GC_FOR_ALLOC freed 12K, 28% free 22089K/30588K, paused 133ms, total 133ms
Grow heap (frag case) to 24.301MB for 566416-byte allocation
VM exiting with result code 0, cleanup skipped.
Finishing activity token=Token{432d8360 ActivityRecord{42405760 u0 b4a.example/.main t7 f}} r=, result=0, data=null, reason=app-request
Duplicate finish request for ActivityRecord{42405760 u0 b4a.example/.main t7 f}
Process b4a.example (pid 8150) has died.
WIN DEATH: Window{42f35db0 u0 b4a.example/b4a.example.main}
WIN DEATH: Window{42abb8e0 u0 b4a.example/b4a.example.main}
Moving to DESTROYED: ActivityRecord{42405760 u0 b4a.example/.main t7 f} (removed from history)
Thermal-Server: Thermal received msg dyn_fps 1
Moving to DESTROYED: ActivityRecord{42405760 u0 b4a.example/.main t7 f} (cleaning up)
Moving to RESUMED: ActivityRecord{42b0e9d8 u0 com.lge.launcher2/.Launcher t1} (in existing)
Rotation changed to 1 from 0, forceApp=-1
[LGE][VOLD][NetlinkHandler.cpp][onEvent()] subsys:cpu, action:0
[LGE][VOLD][NetlinkHandler.cpp][onEvent()] subsys:cpu, action:0
[LGE][VOLD][NetlinkHandler.cpp][onEvent()] subsys:cpu, action:0
onRotationChanged(): 0->1
setParameters(): io 0, keyvalue rotation=90, calling pid 862
xoxoxoxo setParameters() rotation=90 xoxoxoxo
in updateConfigratuonLocked().    com.lge.config.ConfigBuildFlags.CAPP_THEMEICON   :   true
updateConfigrationLocked()  ThemeIconManagerService.putConfiguration() is called
Config changes=480 {1.0 ?mcc?mnc en_US ldltr sw600dp w960dp h532dp 320dpi lrg land finger -keyb/v/h -nav/h s.17fontTypeIndex0}
Reconfiguring input devices.  changes=0x00000004
Device reconfigured: id=7, name='touch_mxt1188S', size 1200x1920, orientation 1, mode 1, display id 0
Unable to connect to the editor to retrieve text... will retry later
resumeTopActivityLocked: Resumed ActivityRecord{42b0e9d8 u0 com.lge.launcher2/.Launcher t1}
[Launcher.java:4947:onStart()]onStart
cliptrayEventReceiver :onReceiveandroid.intent.action.CONFIGURATION_CHANGED
[Launcher.java:717:onResume()]onResume
2 : onReceive, action: android.intent.action.CONFIGURATION_CHANGED, Time(hour:min:sec) 19:55:42
2 : requestRefreshAppWidget, isUpdateStart : false
intentReceiver onReceive() action::android.intent.action.CONFIGURATION_CHANGED
[PinnedViewHolder.java:41:onReceive()] oooooo android.intent.action.CONFIGURATION_CHANGED
[PinnedViewHolder.java:45:onReceive()] oooooo Orientation changed
[MediaPlaybackService.java:1760:onReceive()] oooooo {intent=Intent { act=android.intent.action.CONFIGURATION_CHANGED flg=0x70000010 }}
[LGActivityUtil.java:310:notifyToWeatherWidget()]broadcast to weather widget, intent: Intent { act=com.lge.launcher2.RESUME }
2 : This is isUpdating : false
2 : requestRefreshAppWidget, isUpdating : false
2 : buildUpdate, appWidgetId: 2
[Launcher.java:868:onResume()]onResume end
2 : countryCode = US, Lang. = en
[LauncherAppWidgetHostView.java:65:<init>()]appWidget = AppWidgetProviderInfo(provider=ComponentInfo{com.lge.sizechangable.weather/com.lge.sizechangable.weather.layout.Weather4x2}) and appWidget.provider = ComponentInfo{com.lge.sizechangable.weather/com.lge.sizechangable.weather.layout.Weather4x2}
2 : Map key string is 0
2 : city Index is 0
2 : time = 19:55
Model Name : LG-V500
2 : Theme is changed! refresh widgets.
2 : Current Theme Name: com.lge.launcher2.theme.optimus
2 : Fixed theme : optimus
2 : apk has found: /data/app/com.lge.sizechangable.weather.theme.optimus-1.apk
2 : apkPath: /data/app/com.lge.sizechangable.weather.theme.optimus-1.apk, version: 4.2.16
strTheme: com.lge.launcher2.theme.optimus
Screen frozen for +120ms due to Window{42b81bd8 u0 NavigationBar}
[[[[[[Theme package!!]]]]]] RemoteViews are created 2
forecast size is more
strTheme: com.lge.launcher2.theme.optimus
strTheme: com.lge.launcher2.theme.optimus
strTheme: com.lge.launcher2.theme.optimus
WEATHER_CP_ACCU :
weather_logo_bg : 2130837613 weather_defatullogo_bg =  2130837613
strTheme: com.lge.launcher2.theme.optimus
weather animation icon : 0 currentPackage = com.lge.sizechangable.weather.theme.optimus
strTheme: com.lge.launcher2.theme.optimus
widget 4X2 setImageViewUri = android.resource://com.lge.sizechangable.weather.theme.optimus/2130837579 getEnableThemeResName true
status animation : false
Orientation : 1
Animation unsupported
strTheme: com.lge.launcher2.theme.optimus
strTheme: com.lge.launcher2.theme.optimus
setTouchIntent, appWidgetId: 2
url is : http://www.accuweather.com/m/en-us/RO/B/Bucharest/current.aspx?p=lgemobilewidget&cityId=287430
2 : onReceive has processed, action: android.intent.action.CONFIGURATION_CHANGED, Time(hour:min:sec) 19:55:42
2 : onReceive, action: com.lge.launcher2.RESUME, Time(hour:min:sec) 19:55:42
2 : This is isUpdating : false
2 : quick cover state : unknown : -1
2 : shouldTimeTickRegistered - 4x2 : 1, 4x1 : 0, FphWidget : 0
2 : shouldTimeTickRegistered : true - home screen widget is shown.
2 : shouldTimeTickRegistered().........
mSettingsPanelGravity = 8388661
Implicit intents with startService are not safe: Intent { act=com.lge.weather.WIDGET_REFRESH } android.content.ContextWrapper.startService:494 android.content.ContextWrapper.startService:494 com.lge.sizechangable.weather.layout.WeatherWidget.onReceive:415
2 : onReceive has processed, action: com.lge.launcher2.RESUME, Time(hour:min:sec) 19:55:42
2 : onStartCommand, intent!=null, action: com.lge.launcher2.RESUME
2 : quick cover state : unknown : -1
2 : Utils getTopActivity com.lge.launcher2 / true
2 : shouldTimeTickRegistered - 4x2 : 1, 4x1 : 0, FphWidget : 0
2 : shouldTimeTickRegistered : true - home screen widget is shown.
2 : onStartCommand, intent!=null, action: com.lge.weather.WIDGET_REFRESH
2 : requestRefreshAppWidget, isUpdateStart : false
2 : This is isUpdating : false
2 : requestRefreshAppWidget, isUpdating : false
2 : buildUpdate, appWidgetId: 2
2 : countryCode = US, Lang. = en
android.content.pm.PackageManager$NameNotFoundException: com.lge.screenrecord
    at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:227)
2 : Map key string is 0
2 : city Index is 0
    at com.lge.systemui.Utils.isDisabledPackage(Utils.java:356)
    at com.lge.systemui.widget.GlobalAccess.isScreenRecordingEnabled(GlobalAccess.java:455)
    at com.lge.systemui.widget.GlobalAccess.initItems(GlobalAccess.java:129)
    at com.lge.systemui.widget.GlobalAccess.<init>(GlobalAccess.java:80)
    at com.lge.systemui.widget.GlobalAccessView.<init>(GlobalAccessView.java:55)
    at java.lang.reflect.Constructor.constructNative(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at android.view.LayoutInflater.createView(LayoutInflater.java:594)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    at com.android.systemui.statusbar.BaseStatusBar.updateSearchPanel(BaseStatusBar.java:543)
    at com.android.systemui.statusbar.phone.PhoneStatusBar.updateSearchPanel(PhoneStatusBar.java:1028)
    at com.android.systemui.statusbar.phone.PhoneStatusBar.prepareNavigationBarView(PhoneStatusBar.java:1129)
    at com.android.systemui.statusbar.phone.PhoneStatusBar.repositionNavigationBar(PhoneStatusBar.java:1145)
    at com.android.systemui.statusbar.phone.PhoneStatusBar.access$4400(PhoneStatusBar.java:188)
    at com.android.systemui.statusbar.phone.PhoneStatusBar$35.handleMessage(PhoneStatusBar.java:3224)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5103)
2 : time = 19:55
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
    at dalvik.system.NativeStart.main(Native Method)
optimizeTargetDrawableItems(), newSize: 20
changeTargets() succeeded. size: 20
Model Name : LG-V500
2 : exactly same view!
2 : widgetId = 2 : widgetSize = 1 : Do not refresh any widget.
2 : quick cover state : unknown : -1
2 : Utils getTopActivity com.lge.launcher2 / true
Converting to float: TypedValue{t=0x3/d=0xeb1 "1.0f" a=3 r=0x7f0b003e}
Converting to float: TypedValue{t=0x3/d=0xeb1 "1.0f" a=3 r=0x7f0b003f}
2 : shouldTimeTickRegistered - 4x2 : 1, 4x1 : 0, FphWidget : 0
2 : shouldTimeTickRegistered : true - home screen widget is shown.
GC_FOR_ALLOC freed 4171K, 12% free 63411K/71288K, paused 28ms, total 28ms
showRemoteControlView [isEnabled]:false [isPortraitOri]:false
showRemoteControlView [irRcVisibility]:8 [irRcInfoVisibility]:8
End showRemoteControlView
[Workspace.java:886:addInScreen()]Add AppWidget [com.lge.sizechangable.weather.layout.Weather4x2] in screen 1 [0, 0]
PhoneWindowManager.updateSystemUiVisibilityLw() :
visibility=0x700, pkg=com.lge.launcher2
PhoneWindowManager.updateSystemUiVisibilityLw() :
visibility=0xc0000700, pkg=com.lge.launcher2
[LauncherModel.java:1177:onReceive()]onReceive intent=Intent { act=android.intent.action.CONFIGURATION_CHANGED flg=0x70000010 }
[LauncherModel.java:1247:onReceive()]Configuration Changed: {1.0 ?mcc?mnc en_US ldltr sw600dp w960dp h532dp 320dpi lrg land finger -keyb/v/h -nav/h s.17fontTypeIndex0}
[LauncherModel.java:1252:onReceive()]Previous Configuration: {1.0 ?mcc?mnc en_US ldltr sw600dp w600dp h892dp 320dpi lrg port finger -keyb/v/h -nav/h s.16fontTypeIndex0}
[Launcher.java:5467:onWindowFocusChanged()]onWindowFocusChanged() hasFocus true
Caught a RuntimeException from the binder stub implementation.
java.lang.NullPointerException
    at android.inputmethodservice.IInputMethodWrapper.setSessionEnabled(IInputMethodWrapper.java:280)
    at com.android.internal.view.IInputMethod$Stub.onTransact(IInputMethod.java:129)
    at android.os.Binder.execTransact(Binder.java:407)
    at dalvik.system.NativeStart.run(Native Method)
Got RemoteException sending setActive(false) notification to pid 8150 uid 10138
GC_CONCURRENT freed 6778K, 15% free 58171K/67888K, paused 2ms+12ms, total 58ms
Timeline: Activity_idle id: android.os.BinderProxy@420e3790 time:1142066
Timeline: Activity_windows_visible id: ActivityRecord{42b0e9d8 u0 com.lge.launcher2/.Launcher t1} time:1142073
Waiting for service corecontrol...
handleMessage: E msg.what=131155
processMsg: ConnectedState
processMsg: L2ConnectedState
doString: SIGNAL_POLL
RX ctrl_iface - hexdump(len=11): 53 49 47 4e 41 4c 5f 50 4f 4c 4c
wlan0: Control interface command 'SIGNAL_POLL'
nl80211: survey data missing!
handleMessage: X
Waiting for service corecontrol...
[LGUnreadLgeEmailsBadge.java:143:countUnreadItems()]countUnreadItems() started..
[LGBroadCastBadge.java:53:updateBadgeIcon()][updateClassList : com.lge.updatecenter.UpdateCenterPrfActivity = 2
[LGUnreadLgeEmailsBadge.java:188:countUnreadItems()]Could not get cursor from provider for com.lge.email
[LGNumberBadge.java:123:handleMessage()]MSG_RESPOND_RESULT_FROM_PROVIDER_FAILED
GC_EXPLICIT freed 201K, 28% free 22655K/31144K, paused 8ms+13ms, total 202ms
[LGE][VOLD][NetlinkHandler.cpp][onEvent()] subsys:power_supply, action:3
received broadcast android.intent.action.BATTERY_CHANGED
Setting stay_on_while_plugged_in has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value.
Setting wifi_sleep_policy has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value.
handleBatteryUpdate (2) (100)
[LGPowerUI.java:825:batteryThermNotification()]batteryThermNotification temperature : 304 plugged : true isCharging : false
[LGPowerUI.java:834:batteryThermNotification()]StopCharging degree: 550
battery changed pluggedType: 2
[TangibleIO] TangibleIntentReceiver onReceive intent = Intent { act=android.intent.action.BATTERY_CHANGED flg=0x60000010 (has extras) }
[TangibleIO] DockAudioTangibleController onAction action = android.intent.action.BATTERY_CHANGED
Disconnected process message: 10
[TangibleIO] ACTION_BATTERY_CHANGED : 2
[TangibleIO] DockAudioTangibleController ACTION_BATTERY_CHANGED eventType1 = 0
[TangibleIO] DockAudioTangibleController ACTION_BATTERY_CHANGED eventType2 = 2
[TangibleIO] UsbTangibleController action = android.intent.action.BATTERY_CHANGED
[TangibleIO] HeadsetTangibleController onAction action = android.intent.action.BATTERY_CHANGED
[TangibleIO] ACTION_BATTERY_CHANGED : 2
[TangibleIO] DockTangibleController ACTION_BATTERY_CHANGED eventType1 = 0
[TangibleIO] DockTangibleController ACTION_BATTERY_CHANGED eventType2 = 2
[TangibleIO] OtgUmsTangibleController onAction action = android.intent.action.BATTERY_CHANGED
Waiting for service corecontrol...
Waiting for service corecontrol...
[GPU_MON] ACTION: GPU - [GPU_MON] Setting GPU[0] to 200000000
[GPU_MON] GPU Initial setting Addaped 200000000 Mhz
handleMessage: E msg.what=131155
processMsg: ConnectedState
processMsg: L2ConnectedState
doString: SIGNAL_POLL
RX ctrl_iface - hexdump(len=11): 53 49 47 4e 41 4c 5f 50 4f 4c 4c
wlan0: Control interface command 'SIGNAL_POLL'
nl80211: survey data missing!
handleMessage: X
Waiting for service corecontrol...

Still some dependencies which I cannot find in the sdk...
For example:
unable to resolve static field 2535 (app_name) in Lcom/microsoft/office/lync/api/R$string;
java.lang.NoClassDefFoundError: com.microsoft.office.lync.api.R$string

The corresponding jar library is libucmp.jar which doesn't seem to contain this class.

And then the error:
An error occurred:
(Line: 39) End Sub

Which is the end of the B4A routine containing SDK initialization.
 
Last edited:

yo3ggx

Active Member
Licensed User
Longtime User
Can you detail a little bit? To what resources are you referring to?
I have attached the jar containing the package com.microsoft.office.lync
 

Attachments

  • libucmp.jar
    167 KB · Views: 281

yo3ggx

Active Member
Licensed User
Longtime User
I've added #AdditionalRes.." with the location where all resources from the aar files are stored.
I need to pass over this error:
B4X:
main_init_s4b (java line: 364)
java.lang.NoClassDefFoundError: com.microsoft.office.lync.api.R$string
    at com.microsoft.office.lync.tracing.Trace.initialize(Trace.java:107)
    at com.microsoft.office.lync.tracing.Trace.initialize(Trace.java:83)
    at com.microsoft.office.sfb.appsdk.Application.initialize(Application.java:63)
    at com.microsoft.office.sfb.appsdk.Application.getInstance(Application.java:108)
    at ro.yo3ggx.s4b.Skype4Business.Initialize(Skype4Business.java:73)
    at b4a.example.main._init_s4b(main.java:364)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
    at anywheresoftware.b4a.keywords.Common$5.run(Common.java:996)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5103)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
    at dalvik.system.NativeStart.main(Native Method)
As is to big to be attached here, the jar file containing com.microsoft.office.lync.tracing.Trace is available here:
https://www.yo3ggx.ro/s4b/platform.jar

The line with the error (from the decompiled jar file) is the following:
B4X:
w("SkypeForBusinessStarting", String.format("'%s' Version 5.9.9.11 is starting.\r\n.            .::::::, `.`\r\n.           ::::::::::::::::,\r\n.          :::      :::::::::::,\r\n.         :::
 
Top