将文件 Google Wear 发送到手机

2024-05-05

我正在尝试将文件从 Google Wear 发送到 Nexus 5。我已阅读一些教程并编写了以下代码,但我的手机未收到文件。

Mobile:

private GoogleApiClient mGoogleApiClient;
private int count = 0;

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

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

    Log.d(TAG, "CONNECTING:");

    mGoogleApiClient.connect();
}

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

@Override
public void onConnected(Bundle bundle) {
    Log.d(TAG, "CONNECTED");
    Toast.makeText(getApplicationContext(), "Connected.",
            Toast.LENGTH_LONG).show();
    Wearable.DataApi.addListener(mGoogleApiClient, this);
}

@Override
public void onConnectionSuspended(int i) {

}

@Override
protected void onPause() {
    super.onPause();
    Wearable.DataApi.removeListener(mGoogleApiClient, this);
    mGoogleApiClient.disconnect();
}

@Override
public void onDataChanged(DataEventBuffer dataEvents) {
    Toast.makeText(getApplicationContext(), "Data changed.",
            Toast.LENGTH_LONG).show();
    for (DataEvent event : dataEvents) {
        if (event.getType() == DataEvent.TYPE_CHANGED &&
                event.getDataItem().getUri().getPath().equals("/txt")) {
            // Get the Asset object
            DataMapItem dataMapItem = DataMapItem.fromDataItem(event.getDataItem());
            Asset asset = dataMapItem.getDataMap().getAsset("sensordataAsset");
            Log.d(TAG, "");

            ConnectionResult result =
                    mGoogleApiClient.blockingConnect(10000, TimeUnit.MILLISECONDS);
            if (!result.isSuccess()) {
                return;
            }

            // Convert asset into a file descriptor and block until it's ready
            InputStream assetInputStream = Wearable.DataApi.getFdForAsset(
                    mGoogleApiClient, asset).await().getInputStream();
            mGoogleApiClient.disconnect();
            if (assetInputStream == null) {
                return;
            }

            // Get folder for output
            File storage = getApplicationContext().getFilesDir();
            Log.d(TAG, "Location:" + storage.toString());
            File dir = new File(storage.getAbsolutePath() + "/Clockwork/");
            if (!dir.exists()) {
                dir.mkdirs();
            } // Create folder if needed
            Log.d(TAG, dir.getAbsolutePath());

            // Read data from the Asset and write it to a file on external storage
            final File file = new File(dir, "sensordata.txt");
            if (!file.exists()) {
                file.mkdirs();
            }
            Log.d(TAG, file.getPath());

            try {
                FileOutputStream fOut = new FileOutputStream(file);
                int nRead;
                byte[] data = new byte[16384];
                while ((nRead = assetInputStream.read(data, 0, data.length)) != -1) {
                    fOut.write(data, 0, nRead);
                }

                fOut.flush();
                fOut.close();
            } catch (Exception e) {
            }

            // Rescan folder to make it appear
            try {
                String[] paths = new String[1];
                paths[0] = file.getAbsolutePath();
                MediaScannerConnection.scanFile(this, paths, null, null);
            } catch (Exception e) {
            }
        }
    }
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {

}

Wear:

public void sendTextFile() {

    readFromFile();
    FileInputStream fileInputStream = null;

    byte[] bFile = new byte[(int) file.length()];
    try {
        fileInputStream = new FileInputStream(file);
        fileInputStream.read(bFile);
        fileInputStream.close();
    } catch (Exception e) {
        Log.e(TAG, "sendTextFile: " + e.toString());
    }

    connectGoogleApi();
    //Create an Asset from the byte array and set it via the DataApi
    Asset asset = Asset.createFromBytes(bFile);
    PutDataMapRequest dataMap = PutDataMapRequest.create("/txt");
    dataMap.getDataMap().putAsset("sensordataAsset", asset);
    PutDataRequest request = dataMap.asPutDataRequest();
    PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi
            .putDataItem(mGoogleApiClient, request);

}
private void connectGoogleApi() {
    mGoogleApiClient = new GoogleApiClient.Builder(context)
            .addApi(Wearable.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
    mGoogleApiClient.connect();
}

@Override
public void onConnected(Bundle bundle) {
    Log.d(TAG, "CONNECTED");
    Toast.makeText(context, "Connected.",
            Toast.LENGTH_LONG).show();
}

@Override
public void onConnectionSuspended(int i) {

}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {

}

我用上面列出的方法制作了一个记录器。有人可以告诉我我做错了什么吗?提前致谢。


在数据图中添加键值: map.put("时间戳", System.currentmillions()) 您的手机没有收到任何更改事件,因为您将相同的数据项放入数据api队列中,请尝试放入不同的项目

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文件 Google Wear 发送到手机 的相关文章

  • 无法将资产发送到 Android Wear 设备

    我正在尝试将资产发送到我的 Sony SmartWatch3 我遵循了谷歌的文档 https developer android com training wearables data layer assets html 但它不起作用 我的
  • 在 Android Wear 中显示持续通知

    我一直在尝试 Android Wear 并制作一些虚拟应用程序 我注意到 Android Wear 似乎没有显示正在进行的通知 即带有setOngoing true 有什么办法可以在 Wear 上显示这些通知吗 巴克赛德的答案是正确的 我最
  • 无法在 eclipse 中执行初始 Android Wear Hello World 应用程序

    初始 Eclipse Luna 设置后 当我尝试在 Android Wear 模拟器中运行初始 Hello World 应用程序时 它停止在 logcat 中显示 您无法组合滑动解除和操作栏 错误 请帮助我解决此问题 我昨天也遇到了同样的问
  • 如何从手机启动 Android Wear 活动

    我一直在从事一个项目 我需要手机上的按钮来启动手表上的活动 我一直在查看 sdk 中的数据层示例 但无法使其工作 我设置了一个可穿戴侦听器服务类 但它没有接收任何消息 该服务已添加到清单中 但仍然无法运行 我也有其他服务 我想我可能有太多服
  • Android Wear DataMap 条目保持有效多长时间

    我正在扩展我的一个应用程序以与 Android Wear 配合使用 并且我需要向 Wear 发送 4 个位图 我正在使用DataApi and DataMap做到这一点 目前工作正常 我的问题是 数据在中保持同步多长时间DataApi 一周
  • Android Wear 活动 onKeyDown 未被调用

    这不是重复的 而是 Android Wear 的一个特定案例 我试图让 Android Wear 应用程序在执行某些手势时执行某些操作 但我意识到 onKeyDown 事件根本没有被调用 这方面的任何帮助或信息都是有用的 这是我的简单代码片
  • 在 Android Studio 中设置 Hello, World 手表应用时遇到问题

    在 Android Studio 中部署包含的 Hello World 手表应用程序的可穿戴版本时 我收到此错误 失败 INSTALL FAILED OLDER SDK Update 从 Reddit 帖子中删除有关尝试 L 的黑客版本的详
  • 访问 Android Wear Fit 数据

    我正在 Samsung Gear Live Google I O 版 上开发一款适用于 Android Wear 的应用程序 它将需要访问心率和步数历史数据 我知道稍后可以使用以下方式访问这些数据谷歌健身 SDK https develop
  • Android L 设备不向 Android Wear 智能手表发送通知卡

    我正在尝试在单击按钮时向 Android Wear 智能手表发送通知 它适用于我测试过的所有设备 除了 Android L 的设备 有谁知道可能是什么问题吗 我什至将这些设备与 Android Wear SmartWatch 模拟器配对 但
  • 向 CardFragment 添加额外的图像/图标 (Android Wear)

    我正在查看来自 Google 的示例图像 并试图找出如何实现这样的东西 看起来与标准非常相似CardFragment带有标题 描述和图标的布局 但我在左侧看到了额外的时钟图像 动画 这让我认为他们使用了自定义布局 这可以用标准来实现吗Car
  • 如何在 Android Wear 设备上运行 Xamarin.Forms 应用程序

    我怎样才能运行Xamarin Forms Platform Android FormsApplicationActivity在 Android Wear 设备上 电话base OnCreate bundle 在 的里面onCreate我的类
  • 适用于 Android 的心率传感器 API

    谷歌已经发布了有关可穿戴设备的API 由于许多智能手表制造商都声称他们有心率传感器 我想知道 android 是否为其发布了 api 我检查了网络并没有找到任何东西 有谁对可穿戴设备开发感兴趣并且知道这件事吗 Thanks 截至目前 这些
  • 从可穿戴设备发送消息到手机,然后立即回复

    我今天一整天都在与 Android Wear Message API 作斗争 最终接受了我需要一些帮助 我的应用程序非常简单 移动部分由一个 MainActivity 除了显示 Hello world 之外什么也不做 和一个扩展服务组成可穿
  • Android Wear + Wearable ChannelApi openChannel 未通过远程节点打开?

    当通过 a 打开通道时本地节点 Wearable NodeApi getLocalNode googleApiClient onChannelOpened 监听器成功地火灾 但是 当通过远程节点 Wearable NodeApi getCo
  • 以编程方式确定 Android Wear 中的屏幕形状

    我正在寻找一种技术来确定 Java 中 Android Wear 设备屏幕是圆形还是矩形 请注意 这不仅仅涉及布局 还涉及布局 我的代码实际上需要知道它正在使用哪种形状 因为它们的处理方式不同 据我从在线代码示例中看到 两种不同的方法应该是
  • Android 精确闹钟总是关闭 3 分钟

    我有一个应用程序使用AlarmManager定期在整点唤醒手机并向 Android Wear 手表发送消息 然后手表会发出短暂的振动 我有两个用户 他们分别使用安装了 Android 5 1 1 的三星 Galaxy S6 和安装了 5 1
  • 是否可以在 Android Wear 上显示 Google 地图视图?

    是否可以在 Android Wear 上显示 Google 地图视图 我想在地图上向用户显示特定位置 您可以设法在您的 Activity 中嵌入 MapView 但是这是行不通的因为 Android Wear 无法直接访问网络 然而 你能做
  • 从“传感器”Samsung Gear Live 获取心率

    如何从设备上附带的传感器获取心率三星齿轮直播 https play google com store devices details id samsung gear live black 我只是试图列出所有传感器 SensorManager
  • 如何检测 Android 设备是否与 Android Wear 手表配对

    我正在创建一个 Android Wear 应用程序来扩展推送通知 当收到推送通知时 我的应用程序会从服务器下载大约 10 张图像 并在手表上显示这些附加图像 这些图像特定于 Android Wear 应用程序 不会显示在手持设备上 如何判断
  • Android Wear Preview 未连接到 Wear Emulator

    我正在尝试为 Google Wear 设置开发环境并遵循 Google 的指示 http developer android com training wearables apps creating html但一旦我设置了端口转发 adb

随机推荐