OnDataChanged ведет себя странно

Я пытаюсь использовать приложение WearOS для расширения приложения Paint. Я пытался отправлять Bitmap в приложение износа каждый раз, когда добавлялась новая точка, но это вызывало ужасную задержку.

Я попытался сериализовать массив Path, но затем быстро заметил, что могу просто передать три различных свойства рисования (начало, перемещение, конец) через точки и функции.

Это моя попытка onMove:

public void sendPoint(Point p)
{
    long[] newPoint = new long[2];
    newPoint[0] = p.x;
    newPoint[1] = p.y;
    PutDataMapRequest dataMap = PutDataMapRequest.create("/count");
    dataMap.getDataMap().putLongArray("count", newPoint);
    PutDataRequest request = dataMap.asPutDataRequest();
    Task<DataItem> putTask = Wearable.getDataClient(this).putDataItem(request);
}

Прежде чем я перейду к onStart и onEnd - я хотел бы указать с помощью этого точного кода:

 public void sendPaint(Bitmap b)
    {
        Bitmap bitmap = b;
        Asset asset = createAssetFromBitmap(bitmap);
        PutDataMapRequest dataMap = PutDataMapRequest.create("/image");
        dataMap.getDataMap().putAsset("profileImageX", asset);
        PutDataRequest request = dataMap.asPutDataRequest();
        Task<DataItem> putTask = Wearable.getDataClient(this).putDataItem(request);
    }

Мне удалось отправить свое растровое изображение.

Причина, по которой я говорю это странно, заключается в том, что я всего лишь изменил .putAsset

 dataMap.getDataMap().putAsset("profileImageX", asset);

в .putLongArray

  dataMap.getDataMap().putLongArray("count", newPoint);

Есть идеи, почему это не работает? Я заметил, что sendData работает только в том случае, если данные новые, возможно, это проблема. В этом случае я хотел бы знать, как удалить отправленные «данные» после их получения и использования в приложении WearOS.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
61
1

Ответы 1

android:permission = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"

необходим для того, чтобы также работать в вашем классе

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "your.applicationid" // needs to be the same in both modules
        minSdkVersion 20
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        targetCompatibility = '1.7'
}

...

Также, как вы говорите, я думаю, вам нужно постоянно ставить что-то действительно новое, например System MillTimes.

dataMap.getDataMap().putLong("Time",System.currentTimeMillis())

Привет, сумасшедший. Я пробовал эти изменения, но у меня до сих пор нет рабочего onDataChanged!

David Kachlon 12.10.2018 19:43

Вы проверяли этот stackoverflow.com/questions/25205888/…?

Crazy 13.10.2018 09:32

Другие вопросы по теме