EDIT:既に解決済みですが、ビーコンに問題がありました。付近のメッセージAPIに添付ファイルがありません
Google Nearby Message APIに問題があります。私は彼らのページ(https://developers.google.com/nearby/messages/android/get-beacon-messages)で言われたようにしましたが、ビーコンから添付ファイルを取得しません。
それは、GoogleのAPIクライアントに接続し、それが正常に加入するが、それは onLost onFoundもになることはありません。
私は(Find Eddystone Beacons using Nearby Google API)アンドリューBunnerは、この記事で言ってみました、私は(モトローラモトX第一世代とGoogleのGitHubリポジトリ(https://github.com/googlesamples/android-nearby/blob/master/messages/NearbyDevices/app/src/main/java/com/google/android/gms/nearby/messages/samples/nearbydevices/MainActivity.java)を持って、自分のアプリケーションを試してみましたが、それは私のデバイスのいずれかで動作しません。タンゴのタブレット)、スイッチをクリックして近くのデバイスを検出するか、デバイス情報を共有するかをオンにすると、購読に失敗します:「ステータス=ステータス{statusCode = ERROR、resolution = null}」。
私のコードをチェックして比較したところ、その方法は似ていますが、購読してから何らかの理由で添付ファイルが表示されることはありません。 APIキー、マニフェスト、build.gradle、ビーコンダッシュボード、OAuthパネル(実際に添付ファイルがあることを確認)をチェックし、それらが同じプロジェクト(ビーコンやAPI)に属していることを確認しましたが、それでも仕事はありません。 私は、同じ問題を抱えている人もいましたが、答えの中で言われたようにしてみましたが、私は間違ったことをしているように思えます。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_beacon);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Nearby.MESSAGES_API, new MessagesOptions.Builder()
.setPermissions(NearbyPermissions.BLE)
.build())
.addConnectionCallbacks(this)
.enableAutoManage(this, this)
.build();
Log.i(TAG, "API connected");
}
mMessageListener = new MessageListener() {
@Override
public void onFound(Message message) {
String messageAsString = new String(message.getContent());
Log.d(TAG, "Found message: " + messageAsString);
//When a message is found
Log.i(TAG, "Message found: " + message.toString());
Log.i(TAG, "Message string: " + new String(message.getContent()));
Log.i(TAG, "Message namespaced type: " + message.getNamespace() +
"/" + message.getType());
}
@Override
public void onLost(Message message) {
//When a message is no longer detectable
String messageAsString = new String(message.getContent());
Log.d(TAG, "Lost sight of message: " + messageAsString);
}
};
}
private void subscribe() {
Log.i(TAG, "Subscribing.");
SubscribeOptions options = new SubscribeOptions.Builder()
.setStrategy(Strategy.BLE_ONLY)
.setCallback(new SubscribeCallback() {
@Override
public void onExpired() {
super.onExpired();
Log.i(TAG, "No longer subscribing");
}
})
.build();
Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, options)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.isSuccess()){
Log.i(TAG, "Subscibed succesfully");
}else{
Log.i(TAG, "Could not subscribe");
}
}
});
}
private void unsuscribe(){
Log.i(TAG, "Unsuscribing");
Nearby.Messages.unsubscribe(mGoogleApiClient, mMessageListener);
}
@Override
public void onStart() {
super.onStart();
mGoogleApiClient.connect();
Log.i(TAG, "onStart");
}
@Override
public void onConnected(Bundle connectionHint) {
Log.i(TAG, "GoogleApiClient connected");
subscribe();
}
@Override
public void onConnectionSuspended(int cause) {
Log.e(TAG, "GoogleApiClient disconnected with cause: " + cause);
}
@Override
public void onConnectionFailed(ConnectionResult result) {
if (result.hasResolution()) {
try {
result.startResolutionForResult(this, REQUEST_RESOLVE_ERROR);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
} else {
Log.e(TAG, "GoogleApiClient connection failed");
}
}
@Override
public void onStop() {
unsuscribe();
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
super.onStop();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_RESOLVE_ERROR) {
if (resultCode == RESULT_OK) {
mGoogleApiClient.connect();
} else {
Log.e(TAG, "GoogleApiClient connection failed. Unable to resolve.");
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
アプリ(ビーコンは検出されない)とNearbyDevicesサンプルアプリ(サブスクライブ不可)の2つの異なる問題のようです。アプリをテストするときにビーコンが近くにあることを実際に知っていますか? Googleの[ビーコンツール](https://play.google.com/store/apps/details?id=com.google.android.apps.location.beacon.beacontools&hl=ja)アプリまたはGoogleの[ビーコンツール]でこれらのビーコンを検出できますか? [ビーコンの検索](https://play.google.com/store/apps/details?id=com.radiusnetworks.locate&hl=ja)アプリですか? – davidgyoung
ねえ、アプリでビーコンを追跡できます。Androidコンソールでビーコンを見ることができます。登録されていれば、Altbeaconライブラリを使用しているというメッセージが表示されます。 Googleのビーコンツールアプリでビーコンを追跡して見ることもできます。 –
[周辺設定]は[設定] - > [Google] - > [Nearby]でオンになっていますか? – davidgyoung