milg0/onvif-java-lib

Get Ip camera rtsp stream uri failed

alpeshprajapati89 opened this issue · 5 comments

I try to get my Network Ip Camera RTSP uri through onvif, but failed due to SOAPException Exception handle, i try to handle exception using External javax.xml.soap.jar but android studio fail to build.

There is my code
try{
OnvifDevice nvt = new OnvifDevice(cameraIpAddr,cameraUsername,cameraPassword);
List profiles=nvt.getDevices().getProfiles();
String profileToken=profiles.get(0).getToken();
String rtmpUrl= nvt.getMedia().getRTSPStreamUri(profileToken);
}catch (ConnectException ex){
ex.printStackTrace();
}
catch (SOAPException ex){
ex.printStackTrace();
}

Android Studio fail Log:

Error:trouble processing "javax/xml/soap/SOAPException.class":
Error:Ill-advised or mistaken usage of a core class (java.* or javax.*)
Error:when not building a core library.
Error:This is often due to inadvertently including a core library file
Error:in your application's project, when using an IDE (such as
Error:Eclipse). If you are sure you're not intentionally defining a
Error:core class, then this is the most likely explanation of what's
Error:going on.
Error:However, you might actually be trying to define a class in a core
Error:namespace, the source of which you may have taken, for example,
Error:from a non-Android virtual machine project. This will most
Error:assuredly not work. At a minimum, it jeopardizes the
Error:compatibility of your app with future versions of the platform.
Error:It is also often of questionable legality.
Error:If you really intend to build a core library -- which is only
Error:appropriate as part of creating a full virtual machine
Error:distribution, as opposed to compiling an application -- then use
Error:the "--core-library" option to suppress this error message.
Error:If you go ahead and use "--core-library" but are in fact
Error:building an application, then be forewarned that your application
Error:will still fail to build or run, at some point. Please be
Error:prepared for angry customers who find, for example, that your
Error:application ceases to function once they upgrade their operating
Error:system. You will be to blame for this problem.
Error:If you are legitimately using some code that happens to be in a
Error:core package, then the easiest safe alternative you have is to
Error:repackage that code. That is, move the classes in question into
Error:your own package namespace. This means that they will never be in
Error:conflict with core system classes. JarJar is a tool that may help
Error:you in this endeavor. If you find that you cannot do this, then
Error:that is an indication that the path you are on will ultimately
Error:lead to pain, suffering, grief, and lamentation.

milg0 commented

Android Java does not seem to support javax.xml.soap.* which this library is based on. You can try to work on a solution for Android.

can you suggest which library use for SOAPException handle in android
I try with jre inside rt.jar file but multidex issue.

List list=OnvifDiscovery.discoverOnvifDevices();

Its alway return list.size() 0

milg0 commented

I'm no Android developer and no Android Studio supporter. Try to use Google.

@alpeshprajapati89
something you need add in build.gradle as following:
android {
............................
}
buildTypes {
.................................
}
dexOptions {
preDexLibraries = false
additionalParameters=['--core-library']
}

}