Class Factory

java.lang.Object
org.linphone.core.Factory

public abstract class Factory extends Object
The factory is a singleton object devoted to the creation of all the objects of
Liblinphone that cannot be created by Core itself.

It is also used to configure a few behaviors before creating the Core,
like the logs verbosity or collection.
  • Constructor Details

    • Factory

      public Factory()
  • Method Details

    • instance

      public static final Factory instance()
    • getLoggingService

      public abstract LoggingService getLoggingService()
      Gets the LoggingService singleton
    • setDebugMode

      public abstract void setDebugMode(boolean enable, String tag)
      When enabled, sets the verbosity level to MESSAGE and every log will be printed into logcat.
    • setLoggerDomain

      public abstract void setLoggerDomain(String domain)
      Used to change the domain name in the app Logger (default is Linphone).
    • enableLogcatLogs

      public abstract void enableLogcatLogs(boolean enable)
      When enabled logs are printed into logcat. warning: This won't have any effect if there is a LoggingServiceListener set by the app!
    • getCore

      public abstract Core getCore(long ptr)
    • setCacheDir

      public abstract void setCacheDir(@Nullable String path)
      Set the directory where the application local cache is located.

      If the path is empty (default value), the path will be computed when calling
      getDataDir(java.lang.Object)
      Parameters:
      path - The path to the directory where the application local cache is
      located
    • setConfigDir

      public abstract void setConfigDir(@Nullable String path)
      Set the directory where the configurations are located.

      If the path is empty (default value), the path will be computed when calling
      getConfigDir(java.lang.Object)
      Parameters:
      path - The path to the directory where the configurations are located
    • setDataDir

      public abstract void setDataDir(@Nullable String path)
      Set the directory where the application local data are located.

      If the path is empty (default value), the path will be computed when calling
      getDataDir(java.lang.Object)
      Parameters:
      path - The path to the directory where the application local data are
      located
    • getDataResourcesDir

      @Nullable public abstract String getDataResourcesDir()
      Get the directory where the data resources are located.

      Returns:
      The path to the directory where the data resources are located
    • setDataResourcesDir

      public abstract void setDataResourcesDir(@Nullable String path)
      Set the directory where the data resources are located.

      Parameters:
      path - The path where the data resources are located
    • getDialPlans

      @NonNull public abstract DialPlan[] getDialPlans()
      Returns a bctbx_list_t of all DialPlans.

      Returns:
      A list of DialPlan
    • setDownloadDir

      public abstract void setDownloadDir(@Nullable String path)
      Set the directory where downloads are located.

      If the path is empty (default value), the path will be computed when calling
      getDownloadDir(java.lang.Object)
      Parameters:
      path - The path to the directory where downloads are located
    • getImageResourcesDir

      @Nullable public abstract String getImageResourcesDir()
      Get the directory where the image resources are located.

      Returns:
      The path to the directory where the image resources are located
    • setImageResourcesDir

      public abstract void setImageResourcesDir(@Nullable String path)
      Set the directory where the image resources are located.

      Parameters:
      path - The path where the image resources are located
    • isCacheDirSet

      public abstract boolean isCacheDirSet()
      Test if cache dir has been set.

      Returns:
      true if cache dir has been set.
    • isConfigDirSet

      public abstract boolean isConfigDirSet()
      Test if config dir has been set.

      Returns:
      true if config dir has been set.
    • isDataDirSet

      public abstract boolean isDataDirSet()
      Test if data dir has been set.

      Returns:
      true if data dir has been set.
    • isDatabaseStorageAvailable

      public abstract boolean isDatabaseStorageAvailable()
      Indicates if the storage in database is available.

      Returns:
      true if the database storage is available, false otherwise
    • isDownloadDirSet

      public abstract boolean isDownloadDirSet()
      Test if download dir has been set.

      Returns:
      true if download dir has been set.
    • isImdnAvailable

      public abstract boolean isImdnAvailable()
      Indicates if IMDN are available.

      Returns:
      true if IDMN are available
    • isQrcodeAvailable

      public abstract boolean isQrcodeAvailable()
      Indicates if the QRCode feature is available.

      Returns:
      true if QRCodes can be used
    • getLiblinphonePluginsDir

      @Nullable public abstract String getLiblinphonePluginsDir()
      Get the directory where the liblinphone plugins are located.

      Returns:
      The path to the directory where the liblinphone plugins are located, or
      null if it has not been set.
    • setLiblinphonePluginsDir

      public abstract void setLiblinphonePluginsDir(@Nullable String path)
      Set the directory where the liblinphone plugins are located.

      Parameters:
      path - The path to the directory where the liblinphone plugins are located

    • setLogCollectionPath

      public abstract void setLogCollectionPath(@Nullable String path)
      Sets the log collection path.

      Parameters:
      path - the path of the logs
    • getMspluginsDir

      @Nullable public abstract String getMspluginsDir()
      Get the directory where the mediastreamer2 plugins are located.

      Returns:
      The path to the directory where the mediastreamer2 plugins are located,
      or null if it has not been set.
    • setMspluginsDir

      public abstract void setMspluginsDir(@Nullable String path)
      Set the directory where the mediastreamer2 plugins are located.

      Parameters:
      path - The path to the directory where the mediastreamer2 plugins are
      located
    • getRecommendedVideoDefinitions

      @NonNull public abstract VideoDefinition[] getRecommendedVideoDefinitions()
      Get the recommended list of standard video definitions.

      This list is suitable for a widest set of hardware for all video codec
      implementations, and thus excludes some very high definition formats that are
      unlikely to work unless specific hardware or codecs are used.
      Returns:
      A list of video definitions.
    • getRingResourcesDir

      @Nullable public abstract String getRingResourcesDir()
      Get the directory where the ring resources are located.

      Returns:
      The path to the directory where the ring resources are located
    • setRingResourcesDir

      public abstract void setRingResourcesDir(@Nullable String path)
      Set the directory where the ring resources are located.

      Parameters:
      path - The path where the ring resources are located
    • getSoundResourcesDir

      @Nullable public abstract String getSoundResourcesDir()
      Get the directory where the sound resources are located.

      Returns:
      The path to the directory where the sound resources are located
    • setSoundResourcesDir

      public abstract void setSoundResourcesDir(@Nullable String path)
      Set the directory where the sound resources are located.

      Parameters:
      path - The path where the sound resources are located
    • getSupportedVideoDefinitions

      @NonNull public abstract VideoDefinition[] getSupportedVideoDefinitions()
      Get the list of standard video definitions supported by Linphone.

      Returns:
      A list of video definitions.
    • getTopResourcesDir

      @Nullable public abstract String getTopResourcesDir()
      Get the top directory where the resources are located.

      Returns:
      The path to the top directory where the resources are located
    • setTopResourcesDir

      public abstract void setTopResourcesDir(@Nullable String path)
      Set the top directory where the resources are located.

      If you only define this top directory, the other resources directory will
      automatically be derived form this one.
      Parameters:
      path - The path to the top directory where the resources are located
    • computeHa1ForAlgorithm

      @Nullable public abstract String computeHa1ForAlgorithm(@NonNull String userid, @NonNull String password, @NonNull String realm, @NonNull String algorithm)
      Computes the hashed version of the password given the user ID and the realm,
      using given algorithm.

      Parameters:
      userid - the username or user ID to use.
      password - the password to hash.
      realm - the real to use.
      algorithm - the algorithm to use (MD5 or SHA-256).
      Returns:
      the generated hash if it succeeded, null otherwise.
    • createAddress

      @Nullable public abstract Address createAddress(@NonNull String addr)
      Parse a string holding a SIP URI and create the according Address
      object.

      Parameters:
      addr - A string holding the SIP URI to parse.
      Returns:
      A new Address.
    • createAuthInfo

      @NonNull public abstract AuthInfo createAuthInfo(@NonNull String username, @Nullable String userid, @Nullable String passwd, @Nullable String ha1, @Nullable String realm, @Nullable String domain)
      Creates a AuthInfo object.

      The object can be created empty, that is with all arguments set to null.
      Username, userid, password, realm and domain can be set later using specific
      methods. At the end, username and passwd (or ha1) are required.
      Parameters:
      username - The username that needs to be authenticated
      userid - The userid used for authenticating (use null if you don't know
      what it is)
      passwd - The password in clear text
      ha1 - The ha1-encrypted password if password is not given in clear text.
      realm - The authentication domain (which can be larger than the sip
      domain. Unfortunately many SIP servers don't use this parameter.
      domain - The SIP domain for which this authentication information is
      valid, if it has to be restricted for a single SIP domain.
      Returns:
      A AuthInfo object. linphone_auth_info_destroy must be used to
      destroy it when no longer needed. The Core makes a copy of AuthInfo
      passed through Core.addAuthInfo(org.linphone.core.AuthInfo).
    • createAuthInfo

      @NonNull public abstract AuthInfo createAuthInfo(@NonNull String username, @Nullable String userid, @Nullable String passwd, @Nullable String ha1, @Nullable String realm, @Nullable String domain, @Nullable String algorithm)
      Creates a AuthInfo object.

      The object can be created empty, that is with all arguments set to null.
      Username, userid, password, realm and domain can be set later using specific
      methods. At the end, username and passwd (or ha1) are required.
      Parameters:
      username - The username that needs to be authenticated
      userid - The userid used for authenticating (use null if you don't know
      what it is)
      passwd - The password in clear text
      ha1 - The ha1-encrypted password if password is not given in clear text.
      realm - The authentication domain (which can be larger than the sip
      domain. Unfortunately many SIP servers don't use this parameter.
      domain - The SIP domain for which this authentication information is
      valid, if it has to be restricted for a single SIP domain.
      algorithm - The algorithm for encrypting password.
      Returns:
      A AuthInfo object. linphone_auth_info_destroy must be used to
      destroy it when no longer needed. The Core makes a copy of AuthInfo
      passed through Core.addAuthInfo(org.linphone.core.AuthInfo).
    • createBuffer

      @NonNull public abstract Buffer createBuffer()
      Creates an object Buffer.

      Returns:
      a Buffer
    • createBufferFromData

      @NonNull public abstract Buffer createBufferFromData(@NonNull byte[] data, int size)
      Creates an object Buffer.

      Parameters:
      data - the data to set in the buffer
      size - the size of the data
      Returns:
      a Buffer
    • createBufferFromString

      @NonNull public abstract Buffer createBufferFromString(@NonNull String data)
      Creates an object Buffer.

      Parameters:
      data - the data to set in the buffer
      Returns:
      a Buffer
    • createConferenceInfo

      @NonNull public abstract ConferenceInfo createConferenceInfo()
      Creates an object ConferenceInfo.

      Returns:
      a ConferenceInfo
    • createConferenceInfoFromIcalendarContent

      @Nullable public abstract ConferenceInfo createConferenceInfoFromIcalendarContent(@NonNull Content content)
      Creates an object ConferenceInfo from an Icalendar Content.

      Parameters:
      content - the Icalendar Content
      Returns:
      a ConferenceInfo created from an Icalendar Content
    • createConfig

      @NonNull public abstract Config createConfig(@Nullable String path)
      Creates an object Config.

      Parameters:
      path - the path of the config
      Returns:
      a Config
    • createConfigFromString

      @NonNull public abstract Config createConfigFromString(@NonNull String data)
      Creates an object Config.

      Parameters:
      data - the config data
      Returns:
      a Config
    • createConfigWithFactory

      @NonNull public abstract Config createConfigWithFactory(@Nullable String path, @Nullable String factoryPath)
      Creates an object Config.

      Parameters:
      path - the path of the config
      factoryPath - the path of the factory
      Returns:
      a Config
    • createContent

      @NonNull public abstract Content createContent()
      Creates an object Content.

      Returns:
      a Content
    • createContentFromFile

      @NonNull public abstract Content createContentFromFile(@NonNull String filePath)
      Creates a file object of Content from a file path.

      Parameters:
      filePath - the path of the file
      Returns:
      a Content which can be used as a file
    • createCore

      @NonNull public abstract Core createCore(@Nullable String configPath, @Nullable String factoryConfigPath, @Nullable Object systemContext)
      Instantiate a Core object.

      The Core object is the primary handle for doing all phone actions. It
      should be unique within your application. The Core object is not
      started automatically, you need to call Core.start() to that effect. The
      returned Core will be in GlobalState Ready. Core ressources can
      be released using Core.stop() which is strongly encouraged on garbage
      collected languages.
      Parameters:
      configPath - A path to a config file. If it does not exists it will be
      created. The config file is used to store all settings, proxies... so that all
      these settings become persistent over the life of the Core object. It
      is allowed to set a null config file. In that case Core will not store
      any settings.
      factoryConfigPath - A path to a read-only config file that can be used to
      store hard-coded preferences such as proxy settings or internal preferences.
      The settings in this factory file always override the ones in the normal config
      file. It is optional, use null if unneeded.
      systemContext - A pointer to a system object required by the core to
      operate. Currently it is required to pass an android Context on android, pass
      null on other platforms.
      Returns:
      a Core object
      see: linphone_core_new_with_config_3()
    • createCoreWithConfig

      @NonNull public abstract Core createCoreWithConfig(@NonNull Config config, @Nullable Object systemContext)
      Instantiate a Core object with a given LinphoneConfig.

      The Core object is the primary handle for doing all phone actions. It
      should be unique within your application. The Core object is not
      started automatically, you need to call Core.start() to that effect. The
      returned Core will be in GlobalState Ready. Core ressources can
      be released using Core.stop() which is strongly encouraged on garbage
      collected languages.
      Parameters:
      config - A Config object holding the configuration for the Core
      to be instantiated.
      systemContext - A pointer to a system object required by the core to
      operate. Currently it is required to pass an android Context on android, pass
      null on other platforms.
      Returns:
      a Core object
      see: createCore(java.lang.String, java.lang.String, java.lang.Object)
    • createDigestAuthenticationPolicy

      @NonNull public abstract DigestAuthenticationPolicy createDigestAuthenticationPolicy()
      Create a DigestAuthenticationPolicy object.

      The DigestAuthenticationPolicy object which is used to configure a
      policy for digest authentication, such as allowing MD5 or mode without
      qop=auth.
      Returns:
      a new DigestAuthenticationPolicy .
    • createErrorInfo

      @NonNull public abstract ErrorInfo createErrorInfo()
      Creates an object LinphoneErrorInfo.

      Returns:
      a ErrorInfo object.
    • createFriendPhoneNumber

      @NonNull public abstract FriendPhoneNumber createFriendPhoneNumber(@NonNull String phoneNumber, @Nullable String label)
      Creates a new FriendPhoneNumber objects.

      Parameters:
      phoneNumber - The phone number.
      label - the type of phone number, for example "home", "cell", etc. Use
      null or empty for no label.
      Returns:
      The newly created FriendPhoneNumber object.
    • createParticipantDeviceIdentity

      @NonNull public abstract ParticipantDeviceIdentity createParticipantDeviceIdentity(@NonNull Address address, @Nullable String name)
      Create a ParticipantDeviceIdentity object.

      Parameters:
      address - Address object.
      name - the name given to the device.
      Returns:
      A new ParticipantDeviceIdentity.
    • createParticipantInfo

      @Nullable public abstract ParticipantInfo createParticipantInfo(@NonNull Address address)
      Creates an object ConferenceInfo from an Icalendar Content.

      Parameters:
      address - the Address of the participant
      Returns:
      a ParticipantInfo
    • createQrcode

      @Nullable public abstract Content createQrcode(@NonNull String code, int width, int height, int margin)
      Creates a Bitmap QRCode and return it into an object Content.

      Parameters:
      code - The code to be generated into an image. It must not be empty.
      width - The requested width of the QRCode image. It will be 100 if 0.
      height - The requested height of the QRCode image. It will be 100 if 0.
      margin - The requested margin of the QRCode image.
      Returns:
      a Content
    • createRange

      @NonNull public abstract Range createRange()
      Creates an object LinphoneRange.

      Returns:
      a Range object.
    • createSignalInformation

      @NonNull public abstract SignalInformation createSignalInformation()
      Creates an object SignalInformation.

      Returns:
      a SignalInformation
    • createTransports

      @NonNull public abstract Transports createTransports()
      Creates an object LinphoneTransports.

      Returns:
      a Transports object.
    • createTunnelConfig

      @NonNull public abstract TunnelConfig createTunnelConfig()
      Creates an object TunnelConfig.

      Returns:
      a TunnelConfig
    • createVcard

      @NonNull public abstract Vcard createVcard()
      Create an empty Vcard.

      Returns:
      a new Vcard.
    • createVideoActivationPolicy

      @NonNull public abstract VideoActivationPolicy createVideoActivationPolicy()
      Creates an object LinphoneVideoActivationPolicy.

      Returns:
      VideoActivationPolicy object.
    • createVideoDefinition

      @NonNull public abstract VideoDefinition createVideoDefinition(int width, int height)
      Create a VideoDefinition from a given width and height.

      Parameters:
      width - The width of the created video definition
      height - The height of the created video definition
      Returns:
      A new VideoDefinition object
    • createVideoDefinitionFromName

      @NonNull public abstract VideoDefinition createVideoDefinitionFromName(@NonNull String name)
      Create a VideoDefinition from a given standard definition name.

      Parameters:
      name - The standard definition name of the video definition to create
      Returns:
      A new VideoDefinition object
    • createVideoSourceDescriptor

      @NonNull public abstract VideoSourceDescriptor createVideoSourceDescriptor()
      Creates an object VideoSourceDescriptor.

      Returns:
      a VideoSourceDescriptor
    • enableLogCollection

      public abstract void enableLogCollection(LogCollectionState state)
      Enables or disables log collection.

      Parameters:
      state - the LogCollectionState for log collection
    • getCacheDir

      @Nullable public abstract String getCacheDir(@Nullable Object context)
      Get the cache path.

      Parameters:
      context - used to compute path. Can be null. JavaPlatformHelper on Android
      and char *appGroupId on iOS with shared core.
      Returns:
      The cache path
    • getConfigDir

      @Nullable public abstract String getConfigDir(@Nullable Object context)
      Get the config path.

      Parameters:
      context - used to compute path. Can be null. JavaPlatformHelper on Android
      and char *appGroupId on iOS with shared core.
      Returns:
      The config path
    • getDataDir

      @Nullable public abstract String getDataDir(@Nullable Object context)
      Get the data path.

      Parameters:
      context - used to compute path. Can be null. JavaPlatformHelper on Android
      and char *appGroupId on iOS with shared core.
      Returns:
      The data path
    • getDownloadDir

      @Nullable public abstract String getDownloadDir(@Nullable Object context)
      Get the download path.

      Parameters:
      context - used to compute path. Can be null. JavaPlatformHelper on Android
      and char *appGroupId on iOS with shared core.
      Returns:
      The download path
    • isChatroomBackendAvailable

      public abstract boolean isChatroomBackendAvailable(ChatRoom.Backend chatroomBackend)
      Indicates if the given LinphoneChatRoomBackend is available.

      Parameters:
      chatroomBackend - the ChatRoom#Backend
      Returns:
      true if the chatroom backend is available, false otherwise
    • setVfsEncryption

      public abstract void setVfsEncryption(int encryptionModule, @Nullable byte[] secret, int secretSize)
      Select encryption module and set secret material to encrypt the files.

      Parameters:
      encryptionModule - One of the available encryption module for VFS, pick in
      the LINPHONE_VFS_ENCRYPTION_* list if set to _UNSET, default bctoolbox VFS is
      switch to Standard one
      secret - the secret material used to encrypt the files, can be null for
      the _PLAIN module
      secretSize - size of the secret
    • writeQrcodeFile

      public abstract int writeQrcodeFile(@NonNull String filePath, @NonNull String code, int width, int height, int margin)
      Creates a QRCode and write it into a JPEG file specified by file_path (only if
      build with JPEG).

      Parameters:
      filePath - The file where to write the QRCode JPEG image.
      code - The code to be generated into an image. It must not be empty.
      width - The requested width of the QRCode image. It will be 100 if 0.
      height - The requested height of the QRCode image. It will be 100 if 0.
      margin - The requested margin of the QRCode image.
      Returns:
      0 if successful, -2 if JPEG is not supported, -1 otherwise
    • setUserData

      public abstract void setUserData(Object data)
      Sets the object to store in this object user's data
      Parameters:
      data - the object to store
    • getUserData

      public abstract Object getUserData()
      Gets the object stored in this object user's data
      Returns:
      the object store if any, null otherwise
    • getNativePointer

      public abstract long getNativePointer()
      Gets the native pointer used by this class to make native method calls.
      Returns:
      the nativer pointer, as long