Android_SmartDeviceLink_System C

作者: 勇敢写信 | 来源:发表于2018-03-23 16:14 被阅读0次

    我的博客

    System Capability Manager系统功能管理器

    系统能力管理器是获取当前连接模块功能的中心位置。特定的功能将会返回给一些给定的键。它还减轻了来自RegisterAppInterface响应或新SystemCapabilityQuery的单个缓存结果的需要。
    可以检索多种功能。


    image.png

    Querying Capabilities

    从连接模块接收到第一个OnHMIStatus通知后,您可以访问SystemCapability manager及其数据。您的SdlProxyALM实例将有与## SystemCapabilityManager绑定的便利方法。

    注意:在使用功能之前,查询功能是很重要的。你的应用可以在不同的制造商和软件版本的不同的头单位使用。永远不要假设有能力存在。

    例如(获得头部单位的导航能力):

     // First you can check to see if the capability is supported on the module
        if (proxy.isCapabilitySupported(SystemCapabilityType.NAVIGATION){
            // Since the module does support this capability we can query it for more information
            proxy.getCapability(SystemCapabilityType.NAVIGATION, new OnSystemCapabilityListener(){
     
                @Override
                public void onCapabilityRetrieved(Object capability){
                    NavigationCapability navCapability = (NavigationCapability) capability;
                    // Now it is possible to get details on how this capability 
                    // is supported using the navCapability object
                }
     
                @Override
                public void onError(String info){
                    Log.i(TAG, "Capability could not be retrieved: "+ info);
                }
            });
        }
    

    返回的功能需要被转换成您所请求的能力类型。从那里你可以确定应用程序连接的头单元是否可以使用一个功能。

    Capability Lists

    目前有3个响应作为列表返回:AUDIO_PASSTHROUGH、BUTTON和SOFTBUTTON。我们已经在SystemCapabilityManager中创建了一个方法来帮助转换这些列表。下面是它的用法示例:

      public void getCapabilities() {
     
            proxy.getCapability(SystemCapabilityType.BUTTON, new OnSystemCapabilityListener(){
     
                @Override
                public void onCapabilityRetrieved(Object capability){
                    List<ButtonCapabilities> buttonCapabilityList = SystemCapabilityManager.convertToList(capability, ButtonCapabilities.class);
     
                }
     
                @Override
                public void onError(String info){
                    Log.i(TAG, "Capability could not be retrieved: "+ info);
                }
            });
        }
    

    此方法防止开发人员出现警告,同时创建安全的方法将对象转换为列表。

    Asynchronous vs Synchronous Queries

    一些功能将在第一个OnHMIStatus通知后立即可用。这些从RegisterAppInterface响应中解析。但是,必须异步获取某些功能,因此需要获得回调。如果一个功能可以同步检索,另一个方法可以通过SdlProxyALM对象,proxy.getCapability(SystemCapabilityType)来使用。

    image.png

    相关文章

      网友评论

        本文标题:Android_SmartDeviceLink_System C

        本文链接:https://www.haomeiwen.com/subject/wbexcftx.html