在开发与Android应用程序的IoT设备集成时,我一直陷于这个问题。
我希望实现的是与我的应用交谈,例如,“ Alexa,炊具内部的温度是多少?”。为了获取此信息,我有一个通过蓝牙连接到智能炊具的android应用,该应用可以从炊具中读取温度信息。
现在如何在Android应用中获取查询以及如何以“电磁炉中的当前温度为100摄氏度”返回响应。 Alexa可以为我口头翻译。
这是我到目前为止所做的。
使用“通过Amazon登录”服务获得accessToken
requestContext = RequestContext.create(this)
requestContext.registerListener(object : AuthorizeListener() {
override fun onSuccess(authorizeResult: AuthorizeResult) {
accessToken = authorizeResult.accessToken
Timber.d("Access Token: %s", accessToken)
}
override fun onCancel(auth: AuthCancellation?) {
Timber.e(auth?.description)
}
override fun onError(error: AuthError) {
Timber.e(error, error.localizedMessage)
}
})
signInBtn.setOnClickListener {
AuthorizationManager.authorize(
AuthorizeRequest.Builder(requestContext)
.addScopes(ProfileScope.profile(), ProfileScope.postalCode())
.build()
)
}
这是清单的相关声明
<activity android:name="com.amazon.identity.auth.device.workflow.WorkflowActivity"
android:theme="@android:style/Theme.NoDisplay"
android:allowTaskReparenting="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!-- android:host must use the full package name found in Manifest General Attributes -->
<data android:host="${applicationId}" android:scheme="amzn"/>
</intent-filter>
</activity>
我一直在关注this文档。
我该怎么做才能在应用程序中获取查询以处理并返回结果?还是有可能?
答案 0 :(得分:1)
您需要创建智能家居技能才能做到这一点,前进的方式是
创建智能家居技能,请参考文档here
一旦您创建了智能家居技能(您将在此过程中创建后端服务器),并且用户每次问“ Alexa,内部温度是多少,用户都将在其Alexa帐户中启用该技能。炊具?”您将收到对服务器的指令请求,然后可以将其路由到android应用,并让android应用直接或通过您的服务器将响应发送到AVS。