Garmin 開発者の皆さん、こんにちは。
Android アプリと connectIQ アプリ (Garmin Forerunner 230、SDK バージョン 1.3.x) の間で、BLE を介したダイレクト メッセージング通信のセットアップを開発しようとしています。ここでの目標は、Android アプリがデータを収集し、それを watch アプリにプッシュすることです。
開発者サイトの詳細に従って、これを機能させることができましたが、送信されないドロップメッセージが多数あり、時計は送信されているものよりも少ない値を受け取ります.
Android では、デバッグ ステートメントでこのステータス (ConnectIQ.IQMessageStatus) = FAILURE_DURING_TRANSFER を取得します。「240」は送信中のデータです。
D/GarminMessenger: onMessageStatus: メッセージ: 240、デバイス: Forerunner 230、FAILURE_DURING_TRANSFER
これはガーミンの私のアプリコードです:
SampleApp.mc
using Toybox.Application as App;
using Toybox.Communications as Comm;
using Toybox.WatchUi as Ui;
using Toybox.System as Sys;
var mailMethod;
var crashOnMessage = false;
var msg;
class SampleApp extends App.AppBase {
function initialize() {
AppBase.initialize();
Sys.println("app-initialize()");
msg = "0";
mailMethod = method(:onMail);
Comm.setMailboxListener(mailMethod);
Sys.println("app-initialize(): mail box listener has been set");
}
// onStart() is called on application start up
function onStart(state) {
System.println("app-onStart()");
}
// Return the initial view of your application here
function getInitialView() {
Sys.println("app-getInitialView()");
return [ new SampleAppView() ];
}
function onMail(mailIter) {
var mail = mailIter.next();
while(mail!=null) {
Sys.println("app-onMail: received - "+mail);
message = mail.toString();
Ui.requestUpdate();
mail = mailIter.next();
}
Comm.emptyMailbox();
}
// onStop() is called when your application is exiting
function onStop(state) {
System.println("app-onStop()");
}
}
class CommListener extends Comm.ConnectionListener {
function initialize() {
Comm.ConnectionListener.initialize();
sys.println("commlistener-initialize");
}
function onComplete() {
Sys.println("commlistener-onComplete: Transmit Complete");
}
function onError() {
Sys.println("commlistener-onError: Transmit Failed");
}
}
この問題の原因について何か考えはありますか? Android 側で必要なすべてのチェックを実行して、Garmin ウォッチがペアリングされ、接続されている (& アプリが開いている) かどうかを確認しています。
これが発生する理由の 1 つは、毎秒 1 ~ 2 個のデータ値 (それぞれに ConnectIQ.sendMessage() を使用) を送信しようとしているためです。おそらく、Garmin デバイス/BLE モジュールはそのレートでの通信をサポートしていませんか?
解決策と提案を前もって感謝します。