Beacon tidak menampilkan Altbeacon

Saya mencoba agar kode berfungsi dengan kode demo yang disediakan oleh Altbeacon. Biasanya itu harus mencatat sesuatu tetapi tidak. Apa yang ditampilkan di logcat adalah ini

01-11 20:50:33.964 12498-12508/com.example.thomas.test1 D/BluetoothLeScanner: onScanResult() - ScanResult{mDevice=EF:47:2A:56:1B:55, mScanRecord=ScanRecord [mAdvertiseFlags=6, mServiceUuids=[0000feaa-0000-1000-8000-00805f9b34fb], mManufacturerSpecificData={29540=[5, -86, -69, -52, -35, -18, -1, 0, 17, 34, 51, 68]}, mServiceData={0000feaa-0000-1000-8000-00805f9b34fb=[16, -30, 0, 103, 111, 111, 103, 108, 101, 0]}, mTxPowerLevel=-30, mDeviceName=Beacon1], mRssi=-26, mTimestampNanos=981220542678629}

Jadi ia mendeteksi suar tetapi tidak menampilkannya sebagai log.

Kode yang saya gunakan:

kelas publik MainActivity memperluas AppCompatActivity mengimplementasikan 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.bind(this);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    beaconManager.unbind(this);
}

@Override
public void onBeaconServiceConnect() {
    beaconManager.addRangeNotifier(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("0000feaa-0000-1000-8000-00805f9b34fb", null, null, null));
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}

Adakah yang tahu apa kesalahan saya? Terima kasih sebelumnya!


person Thomas Van Raemdonck    schedule 11.01.2018    source sumber


Jawaban (1)


Beberapa hal yang perlu diperiksa:

  1. Anda perlu menambahkan parser suar untuk frame Eddystone yang ingin Anda deteksi ke dalam metode onCreate.

    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      beaconManager = BeaconManager.getInstanceForApplication(this);
      beaconManager.getBeaconParsers().add(new BeaconParser().
        setBeaconLayout(BeaconParser.EDDYSTONE_UID_LAYOUT));
      beaconManager.getBeaconParsers().add(new BeaconParser().
        setBeaconLayout(BeaconParser.EDDYSTONE_URL_LAYOUT));
      beaconManager.bind(this);
    }
    
  2. Pastikan Anda telah meminta izin yang tepat secara dinamis, yang diperlukan jika Anda menggunakan Android 6+. Petunjuk untuk melakukan hal ini ada di sini: https://altbeacon.github.io/android-beacon-library/requesting_permission.html

  3. Tambahkan baris log ke awal onBeaconServiceConnect() untuk memastikan baris tersebut dipanggil.

person davidgyoung    schedule 11.01.2018
comment
Terima kasih sekarang ini berfungsi dengan ponsel saya, tetapi ketika saya ingin menjalankan aplikasi dengan ponsel teman dikatakan: BluetoothLeScanner: tidak dapat menemukan pembungkus panggilan balik. Adakah yang tahu apa yang menyebabkan ini? - person Thomas Van Raemdonck; 12.01.2018
comment
Dia memiliki Android 7.0 dan ponsel saya memiliki Android 5.5 - person Thomas Van Raemdonck; 12.01.2018
comment
Android 5.5 tidak memerlukan izin lokasi dinamis seperti yang dijelaskan pada poin 2. Android 7 memerlukannya. Mungkin itulah perbedaannya. Baca tautan pada poin 2. - person davidgyoung; 12.01.2018
comment
Terima kasih ini membantu, bisakah kamu membantuku sekali lagi? Saya ingin menulis nilai rssi ke database, kode untuk menulis berfungsi tetapi ketika saya ingin menulis data ke database, aplikasi mogok. Mungkinkah kombinasi pemindaian suar dan penulisan sesuatu yang lain dapat menyebabkan masalah? Apakah Anda tahu cara mengatasi ini? - person Thomas Van Raemdonck; 21.01.2018
comment
Saya rasa kerusakan tersebut tidak ada hubungannya dengan pemindaian, mungkin ada hubungannya dengan penulisan ke database jika kerusakan mulai terjadi setelah Anda menambahkan kode tersebut. Saya sarankan Anda memposting pertanyaan baru yang menunjukkan cuplikan kode termasuk baris yang ditunjukkan oleh bagian atas jejak tumpukan. - person davidgyoung; 21.01.2018