Android 佩戴音频

Android Wear audio

我是 Android 的新手,但我了解开发和 Java 语言。 我继承了一个应用程序,现在需要包含 android 个可穿戴伴侣。 我已经设法让简单的应用程序启动,使用 phone 应用程序来回发送消息。

我现在面临的问题是如何将音频从可穿戴微型phone传回应用程序进行处理。我设法将计时器设置为 4 秒来创建音频缓冲区,这是我在此处的另一个问题上发现的,但现在我不知道如何将这些数据传回应用程序,以及如何告诉应用程序处理这些数据和没有其他的。

我正在查看 MessageApi,但它太大而无法发送。 我在想也许是 ChannelApi,但我没能找到任何关于如何使用它的信息。

任何建议都会有所帮助。

使用 ChannelApi 是正确的解决方案。您需要通过类似于以下的代码打开从可穿戴应用程序到 phone 应用程序的通道:

Wearable.ChannelApi.openChannel(
        mGoogleApiClient, node.getId(), "/mypath").setResultCallback(
        new ResultCallback<ChannelApi.OpenChannelResult>() {
            @Override
            public void onResult(ChannelApi.OpenChannelResult openChannelResult) {
                if (openChannelResult.getStatus().isSuccess()) {
                    mChannel = openChannelResult.getChannel();
                    mChannel.getOutputStream(mGoogleApiClient).setResultCallback(

                            new ResultCallback<Channel.GetOutputStreamResult>() {
                                @Override
                                public void onResult(Channel.GetOutputStreamResult getOutputStreamResult) {
                                    if (getOutputStreamResult.getStatus().isSuccess()) {
                                        mOutputStream = getOutputStreamResult.getOutputStream();
                                    } else {
                                        // handle failure, and close channel
                                    }
                                }
                            });
                }
            }
        });

然后你有一个 OutputStream 可以写入你的 wearble 端。在 phone 端,您通过 Wearable.ChannelApi.addListener 添加一个 ChannelApi.ChannelListener() 侦听器来侦听频道打开。该接口有许多回调供您使用; onChannelOpened(Channel channel) 方法通知您通道已打开并向您传递一个通道对象,您可以从中获取 InputStream

channel.getInputStream(mGoogleApiClient).setResultCallback(
        new ResultCallback<Channel.GetInputStreamResult>() {
            @Override
            public void onResult(Channel.GetInputStreamResult getInputStreamResult) {
                if (getInputStreamResult.getStatus().isSuccess()) {
                    InputStream is = getInputStreamResult.getInputStream();
                } else {
                    // handle errors
                }
            }
        });

该侦听器中还有许多其他方法可用于在通道关闭时通知您等(请参阅 JavaDocs)。现在您的可穿戴应用程序可以写入该通道,phone 应用程序将在通道的另一端接收字节。

注.由于可能有多个"nodes"相互连接,最好使用CapabilityApis来标识能够连接的节点处理您的音频文件,即您的 phone。换句话说,您在 phone 端的应用程序将自身注册为能够处理您的音频流,然后您的可穿戴应用程序在连接的节点中搜索提供该功能的节点,以定位它正在打开的频道.