2017-10-14 6 views
0

私は2つのBluetoothビーコンと2つのPhilips Hueライトを使用しています。可変文字列comparsionに基づいて特定のJSON機能を取得

{ 
    "features": 
    [ 
    { 
     "iot_identifier" : "1", 
     "iot_beacon_uuid" : "E2C56DB5-DFFB-48D2-B060-D0F5A71096E1" 
    }, 
    { 
     "iot_identifier" : "2", 
     "iot_beacon_uuid" : "E2C56DB5-DFFB-48D2-B060-D0F5A71096E0" 
    } 
    ] 
} 

私も現在の領域のUUIDを表示する私のコード内の文字列を持っている:私は、それぞれの地域や光IDのビーコンUUIDが含まれているJSONファイルを持っています。他の地域に入ると変わります。

これはJSONで読んだ後に二つの光を制御するために私のコードです:私は地域を切り替えるたび

List<Feature> listFeatures; //Features from JSON file 
int count = listFeatures.size(); 

for(int i=0; i<count; i++){ 

    // Here I have the UUID (not elegant, but does its work) 
    String regionString = beaconManager.getMonitoredRegions().toString(); 
    String regionUUID = regionString.substring(6, 43).toUpperCase(); 

    // Here I get the JSON properties for each feature 
    String iotIdentifierString = listFeatures.get(i).getIotIdentifier(); 
    String iotBeaconUuid = listFeatures.get(i).getIotBeaconUuid(); 

    // need this value as double to associate the JSON-ID with the Hue light ID 
    double iotIdentifierDouble = Double.parseDouble(iotIdentifierString); 

    if(/* anything */){ 

     // get the light with the ID of the current JSON feature 
     String lightId = hueLightObjects.getFeatures().get(i).getIotIdentifier(); 
     final PHLight light = bridge.getResourceCache().getLights().get(lightId); 

     // control the lights, turn on/off 

    } 
} 

ので「regionUUID」文字列を変更します。現在、私はどちらの地域にいても常に両方の照明を制御することができます。

私が探しているのは、JSONファイル内の現在のビーコンUUIDを持つライトを制御する方法だけです。

ような何か:regionUUID.equals(iot_beacon_uuid)については

、唯一regionUUIDはiot_beacon_uuidに等しい機能でIDと光を制御します。

リージョンを変更すると、このステートメントが再び真である他のフィーチャの他のライトを制御したいだけです。

誰かが私にこれを手伝ってもらえますか?

答えて

1

私はあなたの質問は、あなたのコードは、あなたの場合には、それがプロセスを取得した後、あなたがそれを使用してどのように依存していますことを達成することができます(A Minimal, Complete, and Verifiable example)のような何か

So when I am in the region where the minor ID = 1, I only want to select the lamps, where the property "Minor_ID" is also 1

より短くすることができると信じているすべてのの初。

しかし、あなたはあまりにも現在の方法でそれを行うことができます:私はきちんと私の問題を表現することができませんでしたので、

for (int i=0; i<count; i++) { 
      if(selectedLamp == iotIdentifierDouble){ 
      //do what you wish 
      } 
    } 
+0

私は完全に質問を作り直し。今私はそれがより理解できると思う。私が最終的に探しているのは、ライトID自体から独立しているはずです。さらに、「regionUUIDがJSONファイルの機能で対応するUUIDと等しいすべてのライトIDを選択する」のようになります。私は今理解する方がいいと思う。 – Arastat

+0

@ArastatどのUIを使用して効果を出しましたか?リストビューまたは何ですか? – Ibrahim

+0

このプロジェクトでは、ライトを指すことによってライトを制御することができます。そのため、UIはなく、スマートフォンが指し示すライトをトリガーするボタンは1つだけです。ユーザーはビーコン領域に入ると屋内マップを取得し、スマートフォンがライトに向かっている場合は緑色に変わる赤いボタンを取得します。しかし、今のところ、光がどの地域にあっても、あらゆる光を指すことができます。フィリップスの公式デモアプリによれば、ライトオブジェクト自体はリストにまとめられています。しかし、調光はこのリストを考慮していません。 – Arastat

関連する問題