0

私はAndroid開発の初心者で、altbeaconライブラリとaltbeaconの参照アプリを使用しています.2つのPibeaconsもあります.......参照は正常に機能し、両方のビーコンを検出できます...やりたいアプリが特定のビーコンを検出した場合は何か...たとえば、近くにビーコンを検出した場合に文字列を表示したい....最初の2つのifステートメントは正常に機能しますが、どのビーコンが入っているかを判断する条件を追加した場合近距離 3 番目の if ステートメントが機能しない場合....最初のビーコン マイナーは 1 で、2 番目は 2 です

    public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
    if (beacons.size() > 0) {
        for (Beacon beacon: beacons) {
            if(BeaconProximity.getProximityString(beacon.getDistance()) == "Near"){
                logToDisplay("Hello");              
            }

            if(BeaconProximity.getProximityString(beacon.getDistance()) == "Immediate"){
                logToDisplay("Hi");             
            }

            if(BeaconProximity.getProximityString(beacon.getDistance()) == "Near" && beacon.getId3 == Identifier.parse("1"){

            logToDisplay("World");              
            }
       }
    }      

このコード logToDisplay(beacon.getId3()+"="+Identifier.parse("1") のように beacon.getId3 と Identifier.parse("1") のみを表示すると、 1=1 が出力されますが、私はそれを条件にします...それは機能しません...だから私は何が悪いのかわかりませんか、何かが欠けていますか、または特定のビーコンを近く、遠く、すぐ近くで検出した場合にコマンドまたはコードを挿入する別の方法はありますか?

4

2 に答える 2

0

少なくとも 1 つの問題があります。Java では、文字列を == と比較することはできません。これは、それらがまったく同じobjectであるかどうかを確認するためです。それ以外の:

BeaconProximity.getProximityString(beacon.getDistance()) == "Near"

使用する:

BeaconProximity.getProximityString(beacon.getDistance()).equals("Near")

BeaconProximity第二に、クラスが何をしているのかわかりません。これは、標準のAndroid ビーコン ライブラリの一部ではありません。 コードが上記の修正で機能しない場合は、BeaconProximityクラスの定義を投稿する必要があります。

于 2014-10-01T12:04:08.610 に答える