6

さて、ここでちょっと変わった質問があります。私は、Android 携帯電話が互いの存在を検出できるようにしたい Android ゲームに取り組んでいます。

他のプレイヤーを検索するデバイスは、(ゲーム DB から) 他のプレイヤーのデバイスの Bluetooth MAC アドレスを認識しますが、デバイスはペアリングされず、デバイスは検出可能モードになりません。また、見つかる可能性のあるデバイスはほんの一握りです。そのため、MAC アドレスをスキャンすることは大したことではありません。

デバイスに接続する必要はありません。1 つの簡単な質問に答えることができればよいだけです。この MAC アドレスを持つこのデバイスは近くにありますか?

他のユーザーの画面にペアリング ダイアログが表示されることは許容されます...私は彼らの選択の結果がどうなるかは気にしません...彼らのデバイスがそこにあるかどうかを知る必要があるだけです。

どんな助けでも大歓迎です!

4

1 に答える 1

4

このユースケースは、最近リリースされた Nearby API に適している可能性があります。Nearby Messages開発者の概要を見る

Nearby には独自のランタイム権限があり、マニフェストに BLUETOOTH_ADMIN などを追加する必要がありません。複数のテクノロジー (クラシック Bluetooth、BLE、超音波) を利用することで、iOS と Android で動作します。範囲を約 5 フィートに減らす超音波モデムのみを使用するオプションがあります。

以下に部分的な例を含めました。より完全なサンプルはgithubで見つけることができます

// Call this when the user clicks "find players" or similar
// In the ResultCallback you'll want to trigger the permission
// dialog
Nearby.Messages.getPermissionStatus(client)
  .setResultCallback(new ResultCallback<Status>() {
    public void onResult(Status status) {
      // Request Nearby runtime permission if missing
      // ... see github sample for details
      // If you already have the Nearby permission,
      // call publishAndSubscribe()
    }
  });

void publishAndSubscribe() {
  // You can put whatever you want in the message up to a modest
  // size limit (currently 100KB). Smaller will be faster, though.
  Message msg = "your device identifier/MAC/etc.".getBytes();
  Nearby.Messages.publish(googleApiClient, msg)
      .setResultCallback(...);

  MessageListener listener = new MessageListener() {
    public void onFound(Message msg) {
      Log.i(TAG, "You found another device " + new String(msg));
    }
  });

  Nearby.Messages.subscribe(googleApiClient, listener)
    .setResultCallback(...);
}

免責事項Nearby API に取り組んでいます

于 2015-09-04T23:58:05.293 に答える