标签: android-wear-data-api

GoogleApiClient因Android Wear API失败而需要更新,但我已经更新了

我正在尝试设置Google Wear应用,所以在我的移动端,我正在尝试创建一个使用可穿戴API的GoogleApiClient,但我收到一条错误消息,说我需要更新(SERVICE_VERSION_UPDATE_REQUIRED).但我的手机已经是最新版的Google Play服务.我使用标准的Android Studio创建向导来创建一个带有磨损应用程序的应用程序,这是我的主要活动(我还向Manifest添加了"".

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.util.Log;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.wearable.Wearable;


public class MyActivity extends Activity
        implements
        GoogleApiClient.ConnectionCallbacks,
        GoogleApiClient.OnConnectionFailedListener {

    private GoogleApiClient mGoogleApiClient;

    private String TAG = "MyApp";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Wearable.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();

    }

    @Override
    protected void onStart() {
        super.onStart();
        mGoogleApiClient.connect();
    }

    @Override //ConnectionCallbacks
    public void onConnected(Bundle connectionHint) {
        Log.d(TAG, "Google API Client was connected");
    }


    @Override //ConnectionCallbacks
    public void …
Run Code Online (Sandbox Code Playgroud)

android android-wear-data-api wear-os

6
推荐指数
1
解决办法
909
查看次数

使用Android Wear中的现有数据库

我正在尝试为我现有的应用程序构建一个wear-app.我的掌上电脑应用程序中已经有一个SQLite数据库,现在我想在我的应用程序中尝试使用它们.

他们是否有可能将数据库发送到Wear或者我可以从Wear应用程序访问掌上电脑中的数据库吗?

我目前的想法是通过Wearable.DataApi传输所有项目,但这听起来不像是最好的解决方案.

例如,我不相信Google Keep会单独转移所有笔记.

还有其他想法吗?

sqlite android android-wear-data-api wear-os

6
推荐指数
1
解决办法
3634
查看次数

将数据从Activity发送到WearableListenerService

当我读到Activity和之间的沟通时Service,我发现我们可以使用其中之一

  • 的IBinder
  • 信使
  • AIDL

我对前两个感兴趣.所以,当我试图实现这一个沟通之间ActivityWearableListenerService我需要重写,onBind功能.

但是,我收到编译错误说它

无法覆盖最终方法"onBind"

我使用普通时不会出现这样的错误Service.所以,

是否意味着我们不能使用IBinderMessenger接近与WearableListenerService来自的人沟通Activity

2.如果是这样,WearableListenerService从消息传递消息Activity(或从Activity调用该服务的公共方法)的下一个最佳方法是什么?

android android-wear-data-api wear-os

6
推荐指数
1
解决办法
5639
查看次数

从Android Wear心率传感器读取基础颜色/光数据?

我想在Android Wear智能手表上阅读心率传感器数据.该文档使心率传感器看起来只报告两件事:

  1. 心率(每分钟节拍)
  2. 精度测量或错误代码

是否有可能获得Android Wear心率传感器的基础数据,即任何时间点的红灯(或绿灯或蓝灯)的数量,它用于确定心脏跳动的时间

即时心率的应用程序会从相机颜色数据(这是我所知道的是从Android Wear心脏监测仪不同),它用来显示心脏率的图表:

即时心率应用截图,显示图表

我想做类似的事情,但使用Android Wear的光学心率传感器而不是相机.为了制作图表,我需要知道任何时间点的红灯水平,而不仅仅是每分钟的节拍量.有谁知道这是否可能?

android android-wear-data-api wear-os

6
推荐指数
1
解决办法
801
查看次数

Android Wear将数据发送到Android手机,但手机似乎永远不会收到它

简短摘要:我正在尝试使用PutDataRequest和GoogleApiClient将Android Wear手表中的数据发送到Android手机.日志似乎表明数据已成功发送,但onDataChanged永远不会触发.我使用的是Android Studio 1.0.2.我没有使用任何模拟器而是Android Wear手表我自己 - 我已经配对,并通过Android Wear设备和手机上的Android Wear应用程序启用调试.在手机和Wear的AndroidManifest.xml上,我都包含了com.google.android.gms.version.

在Android手机(4.4.4版本的Android),我使用侦听器服务,该服务通过AndroidManifest.xml中的约束,并通过手机上的主要活动开始.从日志,我可以证实该服务在手机上成功创建,但没有数据收到过(onDataChanged不闪光 - 要准确).

    <!-- Phone manifest, registers the listener -->
    <service android:name=".DataLayerListenerService" >
        <intent-filter>
            <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
        </intent-filter>
    </service>
Run Code Online (Sandbox Code Playgroud)

这是在手机上运行的监听服务:

public class DataLayerListenerService extends WearableListenerService {
    private static final String TAG = DataLayerListenerService.class.getName();
    private GoogleApiClient mGoogleApiClient;

    private static final String WEARABLE_DATA_PATH = "/audio";

    @Override
    public void onCreate() {
        // I can see this fires properly on the Android mobile phone
        Logger.d(TAG, "onCreate");
    }

    @Override
    public void onDataChanged(DataEventBuffer dataEvents) {
        // This …
Run Code Online (Sandbox Code Playgroud)

android android-wear-data-api wear-os

6
推荐指数
2
解决办法
4159
查看次数

未在设备上调用WearableListenerService onMessageReceived

我正试图从我的Android Wear应用程序向我的手机应用程序发送一条简单的消息Wearable.MessageApi.

这是我onConnected在Wear设备上从GoogleApiClient回调的.

final PendingResult<Status> status = Wearable.DataApi.addListener(googleApiClient, this);
status.setResultCallback(new ResultCallback<Status>() {
    @Override
    public void onResult(Status status) {
        if (!status.isSuccess()) {
            return;
        }

        NodeApi.GetConnectedNodesResult nodes =
                Wearable.NodeApi.getConnectedNodes(googleApiClient).await();
        for (Node node : nodes.getNodes()) {
            System.out.println("Sending message: " + node.getDisplayName());
            final MessageApi.SendMessageResult result =
                    Wearable.MessageApi.sendMessage(googleApiClient, node.getId(),
                            "request", "12345".getBytes())
                            .await();
            System.out.println("sent: " + result.getStatus().isSuccess());
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

运行时显示以下内容

Sending message: Nexus 6P
sent: true
Run Code Online (Sandbox Code Playgroud)

这是我在我的应用程序上的注册服务:

public class MyWearableListenerService extends WearableListenerService {

    @Override
    public void onMessageReceived(MessageEvent messageEvent) {
        Toast.makeText(this, "Received …
Run Code Online (Sandbox Code Playgroud)

android android-wear-data-api wear-os

6
推荐指数
2
解决办法
1551
查看次数

OnCapabilityChanged在手机上工作但不在可穿戴设备上

仔细按照本文中的说明操作后:

如何检测android磨损设备何时断开连接?我终于设法让手机检测可穿戴设备的连接时间onCapabilityChanged.

我在可穿戴方面遵循了完全相同的步骤,我试图检测手机何时连接到可穿戴设备但从onCapabilityChanged未被触发.

wear.xml(在电话上)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="android_wear_capabilities">
        <item>track_phone</item>
    </string-array>
</resources>
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest(可穿戴)

<service android:name=".BackgroundService.WearableService"
            android:enabled="true"
            android:exported="true" >
            <intent-filter>
                <action android:name="com.google.android.gms.wearable.CAPABILITY_CHANGED" />
                <data android:scheme="wear" android:host="*"/>
            </intent-filter>
        </service>
Run Code Online (Sandbox Code Playgroud)

在WearableService中(在可穿戴设备上)

override fun onCapabilityChanged(p0: CapabilityInfo?) {
    super.onCapabilityChanged(p0)
    Log.i("WearableService", "Capability changed: {${p0?.nodes?.size ?: "null"}")
}
Run Code Online (Sandbox Code Playgroud)

我确信该服务已启动,因为我有另一个进程从它运行

我在电话那边做同样的事情.当我解除连接/连接时onCapabilityChanged,在手机的服务中正确调用蓝牙,而不是在可穿戴设备上.

有任何想法吗?

android android-wear-data-api android-wear-2.0 wear-os

6
推荐指数
1
解决办法
105
查看次数

保持电话和佩戴数据库同步

目前我有一个创建两种模型的应用程序(我们称之为A和B).
A与B具有1:N的关系,现在我在掌上电脑和可穿戴设备中都有一个数据库来存储这些模型.

问题是,我需要同步这两个数据存储,我不完全确定如何实现这一点.我看过许多文档引用了dataApi,他们建议你将数据保存在DataItem对象中,每次磨损连接时都会同步.
我对这种方法不是100%肯定的是:

  • DataApi是可靠的数据存储吗?(足以在手持设备和磨损中替换SQLite数据库)
  • DataApi可以支持搜索操作(例如,对象A具有的所有B对象)吗?如果是这样,你怎么能进行搜索?
  • 考虑到每个DataItem对应一个实体,我可以节省多少DataItems的限制?

关于这个主题的文档目前似乎有点缺乏,所以我不确定DataApi是否是我需要的正确实现,或者我是否必须在消息中将原始数据发送到同步数据库.

android-sqlite android-wear-data-api wear-os

5
推荐指数
1
解决办法
667
查看次数

为什么Android Wear DataMap没有putIntArray方法?

我很好奇为什么DataMap在Android Wear SDK中没有putIntArray方法,而是有一个putIntegerArrayListIntegers方法.

DataMapputByteArray,putFloatArray,putLongArray,putStringArray,但不是putIntArray.

不允许int数组但需要ArrayList类型而不是整数数组的原因是什么.

您可以int在via中放置原始值putInt,但是如果要放入它们的数组,则必须将s Integers不存储intArrayList

java android android-wear-data-api wear-os

5
推荐指数
1
解决办法
101
查看次数

Android Wear:ChannelIOException:在流完成之前通道意外关闭

我正在使用 Channel 将音频数据从穿戴设备发送到手持设备。但是,当我将数据写入通道流时,程序有时会卡在将数据写入流的代码处并抛出异常:

com.google.android.gms.wearable.ChannelIOException: Channel 在流完成之前意外关闭。

我没有找到很多与我类似的问题。有没有人对如何解决它有一些想法?非常感谢您的时间!

我用来将数据写入通道的代码是:

// OS is the output stream to write the data into the local file system on the android wear device.
    if(null != os){
                    while(isWriting){
                        read = audioRecord.read(data, 0, recBufSize);
                        if(AudioRecord.ERROR_INVALID_OPERATION != read){
                            try {
                                if(sChannelOutputStream!=null) {
                                    Log.d(Constants.TAG,"Schanneloutput write starts+ readsize:"+read);
                                    sChannelOutputStream.write(data);
                                    Log.d(Constants.TAG, "Schanneloutput write ends");
                                }
                                os.write(data);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }

                    try {
                        os.close();
                        if(sChannelOutputStream!=null){
                            Log.d(Constants.TAG,"Schannel out close");
                            sChannelOutputStream.close();
                            sChannelOutputStream = null;
                        }

                    } catch (IOException e) …
Run Code Online (Sandbox Code Playgroud)

android android-wear-data-api wear-os

5
推荐指数
0
解决办法
263
查看次数