public class MainActivity extends Activity {
- private SSMInterface SoftSensorManager = null;
- private ArrayList<Integer> mRunningQueries = new ArrayList<Integer>();
-
- private IQueryEngineEvent mQueryEngineEventListener = new IQueryEngineEvent() {
- @Override
- public void onQueryEngineEvent(int cqid, DataReader result) {
- Log.i("[SSM]", "event received! cqid=" + cqid);
- PrintLog("Event from cqid " + cqid + " has received");
-
- List<String> models = result.getAffectedModels();
-
- for (String modelName : models) {
- PrintLog("Model: " + modelName);
- try {
- int dataCount = result.getModelDataCount(modelName);
- for (int i = 0; i < dataCount; i++) {
- ModelData modelData = result.getModelData(modelName, i);
- for (int j = 0; j < modelData.getPropertyCount(); j++) {
- PrintLog("Name: " + modelData.getPropertyName(j)
- + " Value: "
- + modelData.getPropertyValue(j));
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- PrintLog("Receiving Event from cqid " + cqid + " failed");
- }
- }
- }
- };
-
- void PrintLog(String log) {
- Message msg = new Message();
- Bundle data = new Bundle();
- data.putString("Log", log);
- msg.setData(data);
- logHandler.sendMessage(msg);
- }
-
- private Handler logHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- tvLog.append(msg.getData().getString("Log") + "\n");
- svLog.fullScroll(ScrollView.FOCUS_DOWN);
- }
- };
-
- private TextView tvLog = null;
- private ScrollView svLog = null;
- private EditText edtQuery = null;
- private EditText edtUnregisterQuery = null;
-
- View.OnClickListener clickHandler = new View.OnClickListener() {
-
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.btnRegisterQuery:
- int cqid = 0;
- try {
- cqid = SoftSensorManager.registerQuery(edtQuery.getText()
- .toString(), mQueryEngineEventListener);
- mRunningQueries.add(cqid);
- PrintLog(edtQuery.getText().toString()
- + " has executed, cqid=" + cqid);
- } catch (Exception e) {
- PrintLog("Register Query failed");
- }
-
- break;
-
- case R.id.btnUnregisterQuery:
- Iterator<Integer> it = mRunningQueries.iterator();
-
- while (it.hasNext()) {
- if (it.next() == Integer.parseInt(edtUnregisterQuery
- .getText().toString())) {
- try {
- SoftSensorManager.unregisterQuery(Integer
- .parseInt(edtUnregisterQuery.getText()
- .toString()));
- PrintLog("Unregister Query has executed, cqid="
- + Integer.parseInt(edtUnregisterQuery
- .getText().toString()));
- it.remove();
- } catch (NumberFormatException e) {
- PrintLog("Invalid Query Id");
- } catch (Exception e) {
- PrintLog("UnRegister Query failed");
- }
- break;
- }
- }
- break;
-
- case R.id.btPlus:
- int queryNum = 0;
-
- try {
- queryNum = Integer.parseInt(edtUnregisterQuery.getText()
- .toString()) + 1;
- edtUnregisterQuery.setText(queryNum + "");
- } catch (NumberFormatException e) {
- PrintLog("Invalid Query Id");
- }
- break;
-
- case R.id.btMinus:
- try {
- queryNum = Integer.parseInt(edtUnregisterQuery.getText()
- .toString()) - 1;
- edtUnregisterQuery.setText(queryNum + "");
- } catch (NumberFormatException e) {
- PrintLog("Invalid Query Id");
- }
- break;
- }
- }
- };
-
- View.OnClickListener textAddHandler = new View.OnClickListener() {
-
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.btClear:
- edtQuery.setText("");
- break;
-
- case R.id.btLogClear:
- tvLog.setText("");
- break;
-
- case R.id.btFullDevice:
- edtQuery.setText("subscribe Device if Device.dataId != 0");
- break;
-
- case R.id.btDiscomfortIndex:
- edtQuery.setText("subscribe Device.DiscomfortIndexSensor if Device.DiscomfortIndexSensor.discomfortIndex > 0");
- break;
- }
- }
- };
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- tvLog = (TextView) findViewById(R.id.txtLog);
- svLog = (ScrollView) findViewById(R.id.sclLog);
- edtQuery = (EditText) findViewById(R.id.editQuery);
- edtUnregisterQuery = (EditText) findViewById(R.id.editUnregisterQuery);
-
- findViewById(R.id.btnRegisterQuery).setOnClickListener(clickHandler);
- findViewById(R.id.btnUnregisterQuery).setOnClickListener(clickHandler);
- findViewById(R.id.btFullDevice).setOnClickListener(textAddHandler);
- findViewById(R.id.btDiscomfortIndex).setOnClickListener(textAddHandler);
- findViewById(R.id.btPlus).setOnClickListener(clickHandler);
- findViewById(R.id.btMinus).setOnClickListener(clickHandler);
- findViewById(R.id.btClear).setOnClickListener(textAddHandler);
- findViewById(R.id.btLogClear).setOnClickListener(textAddHandler);
-
- copyFiles("lib");
-
- SoftSensorManager = new SSMInterface();
-
- String initConfig = "<SSMCore>" + "<Device>" + "<UDN>" + getUUID()
- + "</UDN>" + "<Name>MyMobile</Name>" + "<Type>Mobile</Type>"
- + "</Device>" + "<Config>"
- + "<SoftSensorRepository>/data/data/" + getPackageName()
- + "/files/</SoftSensorRepository>"
- + "<SoftSensorDescription>/data/data/" + getPackageName()
- + "/files/SoftSensorDescription.xml</SoftSensorDescription>"
- + "</Config>" + "</SSMCore>";
-
- try {
- SoftSensorManager.startSSMCore(initConfig);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @Override
- protected void onDestroy() {
- try {
- SoftSensorManager.stopSSMCore();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- super.onDestroy();
- }
-
- private String getUUID() {
- String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";
- SharedPreferences sharedPrefs = getSharedPreferences(PREF_UNIQUE_ID,
- Context.MODE_PRIVATE);
- String uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
-
- if (uniqueID == null) {
- uniqueID = UUID.randomUUID().toString();
- Editor editor = sharedPrefs.edit();
- editor.putString(PREF_UNIQUE_ID, uniqueID);
- editor.commit();
- }
-
- return uniqueID;
- }
-
- private void copyFiles(String path) {
- AssetManager assetManager = getAssets();
- String assets[] = null;
-
- try {
- assets = assetManager.list(path);
-
- if (assets.length == 0) {
- copyFile(path);
- } else {
- String fullPath = "/data/data/"
- + this.getClass().getPackage().toString() + "/" + path;
- File dir = new File(fullPath);
-
- if (!dir.exists())
- dir.mkdir();
- for (int i = 0; i < assets.length; ++i) {
- copyFiles(path + "/" + assets[i]);
- }
- }
- } catch (IOException ex) {
- Log.e("tag", "I/O Exception", ex);
- }
- }
-
- private void copyFile(String filename) {
- AssetManager assetManager = getAssets();
- InputStream in = null;
- OutputStream out = null;
-
- try {
- in = assetManager.open(filename);
- out = openFileOutput(filename.split("/")[1], Context.MODE_PRIVATE);
-
- byte[] buffer = new byte[1024];
- int read;
-
- while ((read = in.read(buffer)) != -1) {
- out.write(buffer, 0, read);
- }
-
- in.close();
- in = null;
- out.flush();
- out.close();
- out = null;
- } catch (Exception e) {
- Log.e("tag", e.getMessage());
- }
- }
+ private SSMInterface SoftSensorManager = null;
+ private ArrayList<Integer> mRunningQueries = new ArrayList<Integer>();
+
+ private IQueryEngineEvent mQueryEngineEventListener = null;
+
+ void PrintLog(String log) {
+ Message msg = new Message();
+ Bundle data = new Bundle();
+ data.putString("Log", log);
+ msg.setData(data);
+ logHandler.sendMessage(msg);
+ }
+
+ private Handler logHandler = new Handler() {
+ @Override
+ public void handleMessage(
+ Message msg) {
+ tvLog.append(msg.getData()
+ .getString("Log")
+ + "\n");
+ svLog.fullScroll(ScrollView.FOCUS_DOWN);
+ }
+ };
+
+ private TextView tvLog = null;
+ private ScrollView svLog = null;
+ private EditText edtQuery = null;
+ private EditText edtUnregisterQuery = null;
+
+ View.OnClickListener clickHandler = null;
+
+ View.OnClickListener textAddHandler = null;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ tvLog = (TextView) findViewById(R.id.txtLog);
+ svLog = (ScrollView) findViewById(R.id.sclLog);
+ edtQuery = (EditText) findViewById(R.id.editQuery);
+ edtUnregisterQuery = (EditText) findViewById(R.id.editUnregisterQuery);
+
+ findViewById(R.id.btnRegisterQuery).setOnClickListener(clickHandler);
+ findViewById(R.id.btnUnregisterQuery).setOnClickListener(clickHandler);
+ findViewById(R.id.btFullDevice).setOnClickListener(textAddHandler);
+ findViewById(R.id.btDiscomfortIndex).setOnClickListener(textAddHandler);
+ findViewById(R.id.btPlus).setOnClickListener(clickHandler);
+ findViewById(R.id.btMinus).setOnClickListener(clickHandler);
+ findViewById(R.id.btClear).setOnClickListener(textAddHandler);
+ findViewById(R.id.btLogClear).setOnClickListener(textAddHandler);
+
+ mQueryEngineEventListener = new IQueryEngineEvent() {
+ @Override
+ public void onQueryEngineEvent(int cqid, DataReader result) {
+ Log.i("[SSM]", "event received! cqid=" + cqid);
+ PrintLog("Event from cqid " + cqid + " has received");
+
+ List<String> models = result.getAffectedModels();
+
+ for (String modelName : models) {
+ PrintLog("Model: " + modelName);
+
+ try {
+ int dataCount = result.getModelDataCount(modelName);
+
+ for (int i = 0; i < dataCount; i++) {
+ ModelData modelData = result.getModelData(
+ modelName, i);
+
+ for (int j = 0; j < modelData.getPropertyCount(); j++) {
+ PrintLog("Name: "
+ + modelData.getPropertyName(j)
+ + " Value: "
+ + modelData.getPropertyValue(j));
+
+ }
+
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ PrintLog("Receiving Event from cqid " + cqid
+ + " failed");
+ }
+ }
+ }
+ };
+
+ clickHandler = new View.OnClickListener() {
+
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.btnRegisterQuery:
+ int cqid = 0;
+ try {
+ cqid = SoftSensorManager.registerQuery(edtQuery
+ .getText().toString(),
+ mQueryEngineEventListener);
+ mRunningQueries.add(cqid);
+ PrintLog(edtQuery.getText().toString()
+ + " has executed, cqid=" + cqid);
+ } catch (Exception e) {
+ PrintLog("Register Query failed");
+ }
+
+ break;
+
+ case R.id.btnUnregisterQuery:
+ Iterator<Integer> it = mRunningQueries.iterator();
+
+ while (it.hasNext()) {
+ if (it.next() == Integer
+ .parseInt(edtUnregisterQuery.getText()
+ .toString())) {
+ try {
+ SoftSensorManager.unregisterQuery(Integer
+ .parseInt(edtUnregisterQuery
+ .getText().toString()));
+ PrintLog("Unregister Query has executed, cqid="
+ + Integer
+ .parseInt(edtUnregisterQuery
+ .getText()
+ .toString()));
+ it.remove();
+ } catch (NumberFormatException e) {
+ PrintLog("Invalid Query Id");
+ } catch (Exception e) {
+ PrintLog("UnRegister Query failed");
+ }
+ break;
+ }
+ }
+ break;
+
+ case R.id.btPlus:
+ int queryNum = 0;
+
+ try {
+ queryNum = Integer.parseInt(edtUnregisterQuery
+ .getText().toString()) + 1;
+ edtUnregisterQuery.setText(queryNum + "");
+ } catch (NumberFormatException e) {
+ PrintLog("Invalid Query Id");
+ }
+ break;
+
+ case R.id.btMinus:
+ try {
+ queryNum = Integer.parseInt(edtUnregisterQuery
+ .getText().toString()) - 1;
+ edtUnregisterQuery.setText(queryNum + "");
+ } catch (NumberFormatException e) {
+ PrintLog("Invalid Query Id");
+ }
+ break;
+ }
+ }
+ };
+
+ textAddHandler = new View.OnClickListener() {
+
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.btClear:
+ edtQuery.setText("");
+ break;
+
+ case R.id.btLogClear:
+ tvLog.setText("");
+ break;
+
+ case R.id.btFullDevice:
+ edtQuery.setText("subscribe Device if Device.dataId != 0");
+ break;
+
+ case R.id.btDiscomfortIndex:
+ edtQuery.setText("subscribe Device.DiscomfortIndexSensor if Device.DiscomfortIndexSensor.discomfortIndex > 0");
+ break;
+ }
+ }
+ };
+
+ copyFiles("lib");
+
+ SoftSensorManager = new SSMInterface();
+
+ String initConfig = "<SSMCore>" + "<Device>" + "<UDN>" + getUUID()
+ + "</UDN>" + "<Name>MyMobile</Name>" + "<Type>Mobile</Type>"
+ + "</Device>" + "<Config>"
+ + "<SoftSensorRepository>/data/data/" + getPackageName()
+ + "/files/</SoftSensorRepository>"
+ + "<SoftSensorDescription>/data/data/" + getPackageName()
+ + "/files/SoftSensorDescription.xml</SoftSensorDescription>"
+ + "</Config>" + "</SSMCore>";
+
+ try {
+ SoftSensorManager.startSSMCore(initConfig);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ try {
+ SoftSensorManager.stopSSMCore();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ super.onDestroy();
+ }
+
+ private String getUUID() {
+ String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";
+ SharedPreferences sharedPrefs = getSharedPreferences(PREF_UNIQUE_ID,
+ Context.MODE_PRIVATE);
+ String uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
+
+ if (uniqueID == null) {
+ uniqueID = UUID.randomUUID().toString();
+ Editor editor = sharedPrefs.edit();
+ editor.putString(PREF_UNIQUE_ID, uniqueID);
+ editor.commit();
+ }
+
+ return uniqueID;
+ }
+
+ private void copyFiles(String path) {
+ AssetManager assetManager = getAssets();
+ String assets[] = null;
+
+ try {
+ assets = assetManager.list(path);
+
+ if (assets.length == 0) {
+ copyFile(path);
+ } else {
+ String fullPath = "/data/data/"
+ + this.getClass().getPackage().toString() + "/" + path;
+ File dir = new File(fullPath);
+
+ if (!dir.exists())
+ dir.mkdir();
+ for (int i = 0; i < assets.length; ++i) {
+ copyFiles(path + "/" + assets[i]);
+ }
+ }
+ } catch (IOException ex) {
+ Log.e("tag", "I/O Exception", ex);
+ }
+ }
+
+ private void copyFile(String filename) {
+ AssetManager assetManager = getAssets();
+ InputStream in = null;
+ OutputStream out = null;
+
+ try {
+ in = assetManager.open(filename);
+ out = openFileOutput(filename.split("/")[1], Context.MODE_PRIVATE);
+
+ byte[] buffer = new byte[1024];
+ int read;
+
+ while ((read = in.read(buffer)) != -1) {
+ out.write(buffer, 0, read);
+ }
+
+ in.close();
+ in = null;
+ out.flush();
+ out.close();
+ out = null;
+ } catch (Exception e) {
+ Log.e("tag", e.getMessage());
+ }
+ }
}