Android_SmartDeviceLink_System Capability Manager

我的博客

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 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 Capability Manager)