web-dev-qa-db-ja.com

Android BTLE->コールバックラッパーが見つかりません

私はアプリでAndroid Beacon Libraryを使用しており、Word for Word、レンジングの例をコピーしましたが、コードの下に表示されるエラーが発生し続けます。助けていただければ幸いです。 BTLE /ビーコンを始めたばかりです

package com.example.josh.beacons;

import Android.os.Bundle;
import Android.os.RemoteException;
import Android.support.v7.app.AppCompatActivity;
import Android.util.Log;

import org.altbeacon.beacon.Beacon;
import org.altbeacon.beacon.BeaconConsumer;
import org.altbeacon.beacon.BeaconManager;
import org.altbeacon.beacon.BeaconParser;
import org.altbeacon.beacon.RangeNotifier;
import org.altbeacon.beacon.Region;

import Java.util.Collection;

public class MainActivity extends AppCompatActivity implements BeaconConsumer {
    protected static final String TAG = "RangingActivity";
    private BeaconManager beaconManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        beaconManager = BeaconManager.getInstanceForApplication(this);
        beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
        beaconManager.bind(this);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        beaconManager.unbind(this);
    }
    @Override
    public void onBeaconServiceConnect() {
        beaconManager.setRangeNotifier(new RangeNotifier() {
            @Override
            public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                if (beacons.size() > 0) {
                    Log.i(TAG, "The first beacon I see is about " + beacons.iterator().next().getDistance() + " meters away.");
                }
            }
        });

        try {
            beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
        } catch (RemoteException e) {    }
    }
}

私が得るエラー:

05-12 20:21:44.769 25775-25775/com.example.josh.beacons D/BluetoothAdapter: STATE_ON
05-12 20:21:44.770 25775-25775/com.example.josh.beacons D/BluetoothLeScanner: could not find callback wrapper
05-12 20:21:44.787 25775-26783/com.example.josh.beacons D/RangingActivity: didRangeBeacons 0
12
user3916570

LogCatに表示される行が、独自のコードからのものでない場合は、あまり真剣に受け止めないように注意してください。これは、行がエラーではなくデバッグ行を示す「D /」で始まる場合に特に当てはまります(「E /」)。数十のビーコンアプリを作成し、その行を数え切れないほど何度も確認しました。問題はないことを自信を持って言ってください。

結論:そのメッセージは無視しても問題ありません。 Android BluetoothスタックはLogCatでノイズが多いことで有名です。これは、無視することを学ぶ最初の行ではありません。 。

7
davidgyoung

例外的な答えが言うように、このメッセージを安全に無視することはできますが、それはあなたに何かを伝えています。ほとんどの場合、デバイスの位置情報のアクセス許可がアプリに対してオフになっているため、ビーコンスキャンが機能していません。アプリに適切な権限があり、適切にスキャンしている場合は、次のようなものが表示されます

D/BluetoothAdapter: STATE_ON
D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=5

APIレベル23以降をターゲットにしている場合は、minsdkが低く設定されていても(16など)、ロケーション権限が有効になっているかどうかコードをチェックインする必要があります。

アプリの位置情報サービスがオフになっているためにサイレントエラーが発生していることに気付くまで、私はこれに何時間も費やしました。

9
slund