将文件 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 上的加速计会耗尽电池电量吗? (安卓手表)

    我正在创建一个 Android Wear 应用程序 尝试检测一些手部动作 为此 我需要持续监控加速度计输出 我想知道这将如何影响电池寿命 对于手机 我知道有 屏幕关闭时禁用加速计 之类的方法来节省电池 但是手表的电池成本是多少 由于Andr
  • 向 Android 可穿戴设备发送数据

    我正在尝试将字符串数组从手机发送到我的穿戴设备 我在手机上创建了一项服务 该服务应该使用以下代码发送数据 public class SendDataService extends Service private static final S
  • 无法将资产发送到 Android Wear 设备

    我正在尝试将资产发送到我的 Sony SmartWatch3 我遵循了谷歌的文档 https developer android com training wearables data layer assets html 但它不起作用 我的
  • 配对 Android 和 Wear 模拟器

    我没有 Android Wear 也没有运行 4 3 系统的手机 有没有办法连接JB 4 3模拟器和Android Wear模拟器进行应用程序开发 读完一篇后博客文章几天前我终于成功连接了一个将 Android 设备模拟到 Wear 模拟器
  • 在 Android Studio 中,构建 Android Wear 项目,如何在两个模块中包含相同的文件

    我成功地在移动设备上构建了 Android Wear 表盘和连接的应用程序 问题是我有几个资源和类文件在两个文件中都被引用mobile and wear模块 我构建这个的骨架应用程序还创建了一个 非构建 DigitalWatch模块 我猜我
  • 如何从手机启动 Android Wear 活动

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

    我正在扩展我的一个应用程序以与 Android Wear 配合使用 并且我需要向 Wear 发送 4 个位图 我正在使用DataApi and DataMap做到这一点 目前工作正常 我的问题是 数据在中保持同步多长时间DataApi 一周
  • Android手机与穿戴模块之间共享文件

    几个月前 我最初只使用移动模块开始我的项目 现在我也有兴趣为可穿戴设备配置我的应用程序 也就是说 我的所有文件 Java XML drawables 等 都在移动模块中 所以我是否需要将我想要在移动模块和可穿戴模块之间共享的所有文件传输到新
  • 无法创建 Android 虚拟设备,“没有为此目标安装系统映像”

    无法创建 Android 虚拟设备 https stackoverflow com questions 13488419 unable to create android virtual device 13488547 13488547我点
  • Android Wear 活动 onKeyDown 未被调用

    这不是重复的 而是 Android Wear 的一个特定案例 我试图让 Android Wear 应用程序在执行某些手势时执行某些操作 但我意识到 onKeyDown 事件根本没有被调用 这方面的任何帮助或信息都是有用的 这是我的简单代码片
  • 无法在 Wear OS Samsung Galaxy Watch 4 上请求蓝牙权限

    我创建了一个示例 Wear OS 应用程序 它应该发现 BLE 设备 但我的代码需要蓝牙权限 当我将这些行放入清单中时
  • Android Wear - 通知 - 图像跨度不起作用

    我在 Android 磨损通知中使用 ImageSpan 在通知中设置样式 但它不起作用 请告诉我如何在通知中使用 ImageSpan 的过程 如有帮助 我们将不胜感激 以下是我正在使用的示例代码 SpannableStringBuilde
  • 有没有办法检测时钟是否是圆的?

    可能我错过了一些东西 但是有没有任何标志可以知道时钟是圆形还是方形 我可以想象 如果您想设计通知的背景 这一点很重要 API 23 更新 要确定屏幕是否是圆形的 您可以使用 context getResources getConfigura
  • 以编程方式确定 Android Wear 中的屏幕形状

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

    我正在尝试在 Android Wear 中添加语音功能并遵循以下 URL https developer android com training wearables apps voice html https developer andr
  • Android 精确闹钟总是关闭 3 分钟

    我有一个应用程序使用AlarmManager定期在整点唤醒手机并向 Android Wear 手表发送消息 然后手表会发出短暂的振动 我有两个用户 他们分别使用安装了 Android 5 1 1 的三星 Galaxy S6 和安装了 5 1
  • 检测穿戴应用程序是通过语音命令还是触摸输入启动

    在我的穿戴应用程序中 我想根据应用程序是通过语音命令还是通过触摸输入启动来显示不同的布局选项 但我在文档中找不到任何方法来做到这一点 我能想到的唯一可能的方法是有两个发射器 但我正在寻找相当直接的解决方案 而不是创建多个启动器 检查了一下活
  • 无法在 Google Play 开发者控制台中的 Android Wear 上分发应用程序

    我正在尝试通过 Google Play 开发者控制台提交我新创建的 Android Wear 表盘 问题是定价和分发部分中的 在 Android Wear 上分发您的应用程序 复选框被禁用 我不明白为什么 我做了什么 1 上传Android
  • 将文件 Google Wear 发送到手机

    我正在尝试将文件从 Google Wear 发送到 Nexus 5 我已阅读一些教程并编写了以下代码 但我的手机未收到文件 Mobile private GoogleApiClient mGoogleApiClient private in
  • 模拟器中 Google Wear 上的语音识别器没有语音输入

    我试图使用 Google Wear 网站上的自由形式语音输入 在 hello world 示例中 我刚刚添加了对 textView 的单击 它确实从语音意图中调出 立即发言 活动 但模拟器无法检测到我的麦克风发出的任何声音 我使用的是 Ma

随机推荐